From 13696a85eec35d8b8290b491cd7b2e113021c72a Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:52:53 +0900 Subject: [PATCH 001/429] New translations ja-JP.yml (Catalan) --- locales/ca-ES.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index b3fc3abca..339a66d0c 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "デザインと表示" customize: "ホームをカスタマイズ" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "上" behavior: "動作" fetch-on-scroll: "スクロールで自動読み込み" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From 20dfd2facacc6f855743a2abdfcbbc14a7e16194 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:52:59 +0900 Subject: [PATCH 002/429] New translations ja-JP.yml (Chinese Simplified) --- locales/zh-CN.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index d6b6c3aa4..27e1bc7c7 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。" deck-nav: "Deck 内的导航" deck-nav-desc: "在使用Deck时,您会在导航期间获得一个没有页面过渡的临时列。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "将Deck界面设置为默认UI显示界面" display: "设计与展示" customize: "自定义首页摆放" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "顶部" behavior: "动作" fetch-on-scroll: "滚动无限加载" + keep-cw: "CW保持" note-visibility: "帖子可见性" default-note-visibility: "默认可见性" remember-note-visibility: "记住帖子可见性" From 6c42db7589aefd64e5b35d42eea6782c4e7f7642 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:04 +0900 Subject: [PATCH 003/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/en-US.yml b/locales/en-US.yml index 8f6f5e7d2..42fda0ae5 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser." deck-nav: "Transitionless deck navigation" deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck." + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "Use Deck as default UI" display: "Design and display" customize: "Customize home layout" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "Top" behavior: "Behavior" fetch-on-scroll: "Endless loading on scroll" + keep-cw: "CW保持" note-visibility: "Post visibility" default-note-visibility: "Default visibility" remember-note-visibility: "Remember post visibility" From 44ab6cbc39f3a89657e4568f45d3af5dbc291cc4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:09 +0900 Subject: [PATCH 004/429] New translations ja-JP.yml (French) --- locales/fr-FR.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index a72feeb41..e0216e9a7 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "Deck sans tansitions" deck-nav-desc: "Vous obtenez une colonne temporaire sans transitions dans la page pendant la navigation, lors de l’utilisation du Deck." + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "Utiliser le Deck comme IU par défaut" display: "Affichage et design" customize: "Personnaliser l'Accueil" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "en haut" behavior: "Comportement" fetch-on-scroll: "Chargement lors du défilement" + keep-cw: "CW保持" note-visibility: "Visibilité de la publication" default-note-visibility: "Visibilité par défaut" remember-note-visibility: "Se souvenir du mode de visibilité de la publication" From d09af4754a9fddc4954f8116ce6c9107bf8c7c78 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:13 +0900 Subject: [PATCH 005/429] New translations ja-JP.yml (German) --- locales/de-DE.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index ed73135e2..225fc70c0 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert." deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "Erscheinungsbild und Anzeige" customize: "Startseite anpassen" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "上" behavior: "動作" fetch-on-scroll: "スクロールで自動読み込み" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From 3c28dd92ec87c4eb6cd6a37915540fffd74f5726 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:19 +0900 Subject: [PATCH 006/429] New translations ja-JP.yml (Italian) --- locales/it-IT.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 6723a72cf..b826757cc 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "デザインと表示" customize: "ホームをカスタマイズ" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "上" behavior: "動作" fetch-on-scroll: "スクロールで自動読み込み" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From 4c526f28378a637b350039f3eca380562be884ce Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:24 +0900 Subject: [PATCH 007/429] New translations ja-JP.yml (Korean) --- locales/ko-KR.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 861cfca5e..70c41d525 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "창이 열릴 때 팝아웃 (브라우저 밖으로 분리) 이 가능한 경우 자동으로 팝아웃합니다. 이 설정은 브라우저에 저장됩니다." deck-nav: "덱 내 탐색" deck-nav-desc: "덱을 사용중일 때, 내비게이션이 발생하였을 경우 페이지를 이동하지 않고 일시적으로 임시 칼럼을 생성하도록 합니다." + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "덱을 기본 UI로 설정" display: "디자인 및 표시" customize: "홈 커스터마이징" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "위" behavior: "동작" fetch-on-scroll: "스크롤하여 자동으로 불러오기" + keep-cw: "CW保持" note-visibility: "게시물의 공개 범위" default-note-visibility: "기본 공개 범위" remember-note-visibility: "글의 공개 범위를 기억하기" From a79901b4418de1d4652e28c0096e5cf3faade7ae Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:29 +0900 Subject: [PATCH 008/429] New translations ja-JP.yml (Polish) --- locales/pl-PL.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 9514521da..d2680194a 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "Użyj Talię jako domyślne UI" display: "Wygląd i wyświetlanie" customize: "Dostosuj stronę główną" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "Góra" behavior: "Zachowanie" fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół" + keep-cw: "CW保持" note-visibility: "Widoczność wpisów" default-note-visibility: "Domyślna widoczność" remember-note-visibility: "Zapamiętaj widoczność wpisów" From 593d3e2d55d67cee1dc3f31836efded144efe175 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:33 +0900 Subject: [PATCH 009/429] New translations ja-JP.yml (Portuguese) --- locales/pt-PT.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 46b466d8d..61fa70986 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "デザインと表示" customize: "ホームをカスタマイズ" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "上" behavior: "動作" fetch-on-scroll: "スクロールで自動読み込み" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From d8cfd8f56d4fccffbcb56f4e7aa5e97deb7949cd Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:38 +0900 Subject: [PATCH 010/429] New translations ja-JP.yml (Russian) --- locales/ru-RU.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index ffb8db90e..235ae3b3d 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "デザインと表示" customize: "ホームをカスタマイズ" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "上" behavior: "動作" fetch-on-scroll: "スクロールで自動読み込み" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From e0480f4e01029a8550be28928e0285ad81fc798a Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:45 +0900 Subject: [PATCH 011/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index faf166094..f051d9a69 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador." deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "Diseño y pantalla" customize: "Personaliza la página principal" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "上" behavior: "動作" fetch-on-scroll: "スクロールで自動読み込み" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From c9a9d5dbfd0ffc0c38a5e38883bec00d6de96528 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:51 +0900 Subject: [PATCH 012/429] New translations ja-JP.yml (Japanese, Kansai) --- locales/ja-KS.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index b650f3de3..add497eb9 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。" deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使うとるとき、ナビゲーションが発生するときにページ移動せんで、一時的なカラムで受けれるようにするで" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "見た感じ" customize: "ホームをカスタマイズ" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "キタの方" behavior: "動き" fetch-on-scroll: "スクロールしたらもっと見せてや" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "もとからの公開範囲" remember-note-visibility: "投稿の公開範囲おぼえといて" From a59cf87374c2efcd287ccf237c55f73f15cb3e91 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:53:56 +0900 Subject: [PATCH 013/429] New translations ja-JP.yml (Dutch) --- locales/nl-NL.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index 2c5389f9d..14252b3ef 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser." deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "Ontwerp en weergave" customize: "Startpagina aanpassen" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "上" behavior: "Gedrag" fetch-on-scroll: "Ophalen bij scrollen" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From 70b980d46303af31e16fdee53605cf2747c4b1cd Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 23 Jan 2019 20:54:03 +0900 Subject: [PATCH 014/429] New translations ja-JP.yml (Norwegian) --- locales/no-NO.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/locales/no-NO.yml b/locales/no-NO.yml index fa0168d9b..b272f834c 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -788,6 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "デッキ内ナビゲーション" deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。" + keep-cw: "CW保持" + keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "デッキをデフォルトのUIにする" display: "デザインと表示" customize: "ホームをカスタマイズ" @@ -1467,6 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "Topp" behavior: "Oppførsel" fetch-on-scroll: "スクロールで自動読み込み" + keep-cw: "CW保持" note-visibility: "投稿の公開範囲" default-note-visibility: "デフォルトの公開範囲" remember-note-visibility: "投稿の公開範囲を記憶する" From f434b3a87575b93be8ad7d40613d1b35d9c04228 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 24 Jan 2019 09:12:19 +0900 Subject: [PATCH 015/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 42fda0ae5..a1cca56f5 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -788,7 +788,7 @@ desktop/views/components/settings.vue: auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser." deck-nav: "Transitionless deck navigation" deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck." - keep-cw: "CW保持" + keep-cw: "Preserve content warning" keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "Use Deck as default UI" display: "Design and display" @@ -1469,7 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "Top" behavior: "Behavior" fetch-on-scroll: "Endless loading on scroll" - keep-cw: "CW保持" + keep-cw: "Preserve content warning" note-visibility: "Post visibility" default-note-visibility: "Default visibility" remember-note-visibility: "Remember post visibility" From 8f6ea136966da5abfc0b4d375c53f6545c02d4d0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 24 Jan 2019 09:21:48 +0900 Subject: [PATCH 016/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index a1cca56f5..31f772af3 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -789,7 +789,7 @@ desktop/views/components/settings.vue: deck-nav: "Transitionless deck navigation" deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck." keep-cw: "Preserve content warning" - keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" + keep-cw-desc: "When replying to a post, the same content warning is set by default to the reply, as has been set by the original post." deck-default: "Use Deck as default UI" display: "Design and display" customize: "Customize home layout" From 75f9e6bdf512f1b59a8dc544543e4bb0059a74df Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 24 Jan 2019 11:26:44 +0900 Subject: [PATCH 017/429] New translations ja-JP.yml (Chinese Simplified) --- locales/zh-CN.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 27e1bc7c7..8866d308f 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -9,7 +9,7 @@ common: intro: title: "什么是 Misskey 呢?" about: "Misskey是开源的分散式微博SNS。复杂的完全可定制的Ui,各种各样的帖子反应,提供集成管理系统和其他先进功能的免费文件存储。此外,称为“Fediverse”的网络系统使我们能够与其他SNS的用户进行通信。比如,如果你张贴一些东西,那么你的帖子不仅会发送给Misskey,还会发送到其他SNS平台。想象一下,正如一颗行星和另一颗行星通过发送微波来进行通信一样。" - features: "特点" + features: "功能" rich-contents: "发布" rich-contents-desc: "您只需要发布您的想法, 热门话题或者任何您想分享的好东西. 你可以装饰你的文字, 加上你最喜欢的图片, 发送文件或者电影, 甚至创造一个投票. 这些事情您都可以在 Misskey 上做。" reaction: "情绪" @@ -788,8 +788,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。" deck-nav: "Deck 内的导航" deck-nav-desc: "在使用Deck时,您会在导航期间获得一个没有页面过渡的临时列。" - keep-cw: "CW保持" - keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" + keep-cw: "保留内容警告" + keep-cw-desc: "在回复帖子时,如果原帖设置了内容警告,默认情况下回帖也会设置相同的内容警告。" deck-default: "将Deck界面设置为默认UI显示界面" display: "设计与展示" customize: "自定义首页摆放" @@ -1469,7 +1469,7 @@ mobile/views/pages/settings.vue: notification-position-top: "顶部" behavior: "动作" fetch-on-scroll: "滚动无限加载" - keep-cw: "CW保持" + keep-cw: "保留内容警告" note-visibility: "帖子可见性" default-note-visibility: "默认可见性" remember-note-visibility: "记住帖子可见性" From 0be7bf93d910523f144fb83e31608c72accea18d Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 24 Jan 2019 11:52:03 +0900 Subject: [PATCH 018/429] New translations ja-JP.yml (Chinese Simplified) --- locales/zh-CN.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 8866d308f..b197f16dc 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -11,9 +11,9 @@ common: about: "Misskey是开源的分散式微博SNS。复杂的完全可定制的Ui,各种各样的帖子反应,提供集成管理系统和其他先进功能的免费文件存储。此外,称为“Fediverse”的网络系统使我们能够与其他SNS的用户进行通信。比如,如果你张贴一些东西,那么你的帖子不仅会发送给Misskey,还会发送到其他SNS平台。想象一下,正如一颗行星和另一颗行星通过发送微波来进行通信一样。" features: "功能" rich-contents: "发布" - rich-contents-desc: "您只需要发布您的想法, 热门话题或者任何您想分享的好东西. 你可以装饰你的文字, 加上你最喜欢的图片, 发送文件或者电影, 甚至创造一个投票. 这些事情您都可以在 Misskey 上做。" - reaction: "情绪" - reaction-desc: "一个最简单的方式去告诉别人你的情绪. Misskey 允许您在别人的帖子中加入各种的情绪反应类型, 就像 Facebook 一样. 在 Misskey 上的情感体验永远不会出现在其他只能点赞的SNSs上。" + rich-contents-desc: "请分享您的想法,热门话题,以及任何您想与大家分享的内容。如果有需要的话,您可以使用各种语法来修饰文章,发布问卷调查,或者添加各种您喜欢的图像和视频等文件。" + reaction: "回应" + reaction-desc: "表达情绪的最简单方法。 Misskey允许您向其他帖子添加各种类型的回应。 一旦体验过Misskey的回应功能,就再也不会想回到那些只有点赞功能的其他SNS上了。" ui: "交互界面" ui-desc: "世界上没有一个UI可以适合每一个人. 所以, Misskey 提供一个可以高度定制的UI交互界面. 您可以通过编辑, 调整布局, 放置可选择的小部件来轻松定制您的专属UI界面。" drive: "Misskey 云盘" From d731c7da13cc1e812bc36716bc23c114e087ed0c Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 24 Jan 2019 19:52:00 +0900 Subject: [PATCH 019/429] Update CONTRIBUTING.md --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6cb4f62a..4dd9b6ad0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,3 +38,9 @@ Stands for _**M**iss**k**ey_. ### SW Stands for _**S**ervice**W**orker_. + +### Nyaize +な を にゃ にすること + +#### Denyaize +Nyaizeを解除すること From 44d53488e0f6737a40a2c032985f7413f9b675a8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 24 Jan 2019 21:05:22 +0900 Subject: [PATCH 020/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 31f772af3..ee6baec3a 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -790,7 +790,7 @@ desktop/views/components/settings.vue: deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck." keep-cw: "Preserve content warning" keep-cw-desc: "When replying to a post, the same content warning is set by default to the reply, as has been set by the original post." - deck-default: "Use Deck as default UI" + deck-default: "Use Deck view as the default UI" display: "Design and display" customize: "Customize home layout" wallpaper: "Wallpaper" From 5eca0a31f78493f2cff0fd5f097ee9d007991a87 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Fri, 25 Jan 2019 00:06:20 +0900 Subject: [PATCH 021/429] Filter hidden replies / mentions (#3981) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: 非公開投稿が返信一覧に出てくる * Fix: 非公開投稿がメンション一覧に出てくる * 非公開投稿は通知/メンション通知しない * repliesにフォロワー限定がかからなかったのを修正 * Fix: ホームにフォロワー限定投稿が表示されない * 認証必須エンドポイントで user == null にはならない * mentionsにフォロワー限定がかからなかったのを修正 --- src/server/api/endpoints/notes/mentions.ts | 24 ++++++++++++++-- src/server/api/endpoints/notes/replies.ts | 33 ++++++++++++++++++---- src/server/api/endpoints/notes/timeline.ts | 2 +- src/server/api/stream/channels/main.ts | 5 ++++ 4 files changed, 56 insertions(+), 8 deletions(-) diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts index 4c7c397c7..874759060 100644 --- a/src/server/api/endpoints/notes/mentions.ts +++ b/src/server/api/endpoints/notes/mentions.ts @@ -1,6 +1,6 @@ import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id'; import Note from '../../../../models/note'; -import { getFriendIds } from '../../common/get-friends'; +import { getFriendIds, getFriends } from '../../common/get-friends'; import { packMany } from '../../../../models/note'; import define from '../../define'; import read from '../../../../services/note/read'; @@ -47,8 +47,28 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { return rej('cannot set sinceId and untilId'); } + // フォローを取得 + const followings = await getFriends(user._id); + + const visibleQuery = [{ + visibility: { $in: [ 'public', 'home' ] } + }, { + // myself (for specified/private) + userId: user._id + }, { + // to me (for specified) + visibleUserIds: { $in: [ user._id ] } + }, { + visibility: 'followers', + userId: { $in: followings.map(f => f.id) } + }]; + const query = { - deletedAt: null, + $and: [{ + deletedAt: null, + }, { + $or: visibleQuery, + }], $or: [{ mentions: user._id diff --git a/src/server/api/endpoints/notes/replies.ts b/src/server/api/endpoints/notes/replies.ts index 8386d6068..112156403 100644 --- a/src/server/api/endpoints/notes/replies.ts +++ b/src/server/api/endpoints/notes/replies.ts @@ -2,6 +2,7 @@ import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id'; import Note, { packMany } from '../../../../models/note'; import define from '../../define'; import Mute from '../../../../models/mute'; +import { getFriends } from '../../common/get-friends'; export const meta = { desc: { @@ -34,13 +35,35 @@ export const meta = { }; export default define(meta, (ps, user) => new Promise(async (res, rej) => { - // ミュートしているユーザーを取得 - const mutedUserIds = user ? (await Mute.find({ - muterId: user._id - })).map(m => m.muteeId) : null; + const [followings, mutedUserIds] = await Promise.all([ + // フォローを取得 + // Fetch following + user ? getFriends(user._id) : [], + + // ミュートしているユーザーを取得 + user ? (await Mute.find({ + muterId: user._id + })).map(m => m.muteeId) : null + ]); + + const visibleQuery = user == null ? [{ + visibility: { $in: [ 'public', 'home' ] } + }] : [{ + visibility: { $in: [ 'public', 'home' ] } + }, { + // myself (for specified/private) + userId: user._id + }, { + // to me (for specified) + visibleUserIds: { $in: [ user._id ] } + }, { + visibility: 'followers', + userId: { $in: followings.map(f => f.id) } + }]; const q = { - replyId: ps.noteId + replyId: ps.noteId, + $or: visibleQuery } as any; if (mutedUserIds && mutedUserIds.length > 0) { diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts index 94f4fb72d..ead57e2d5 100644 --- a/src/server/api/endpoints/notes/timeline.ts +++ b/src/server/api/endpoints/notes/timeline.ts @@ -141,7 +141,7 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => { const visibleQuery = user == null ? [{ visibility: { $in: [ 'public', 'home' ] } }] : [{ - visibility: { $in: [ 'public', 'home' ] } + visibility: { $in: [ 'public', 'home', 'followers' ] } }, { // myself (for specified/private) userId: user._id diff --git a/src/server/api/stream/channels/main.ts b/src/server/api/stream/channels/main.ts index 5b0705f1d..175d914fa 100644 --- a/src/server/api/stream/channels/main.ts +++ b/src/server/api/stream/channels/main.ts @@ -19,6 +19,11 @@ export default class extends Channel { switch (type) { case 'notification': { if (mutedUserIds.includes(body.userId)) return; + if (body.note && body.note.isHidden) return; + break; + } + case 'mention': { + if (body.isHidden) return; break; } } From 7017d3ae070ee98e79b0e9f60144dce23b83c30e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 24 Jan 2019 20:28:05 +0000 Subject: [PATCH 022/429] Update @types/sharp requirement from 0.21.0 to 0.21.1 Updates the requirements on [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 500302edc..665d2f637 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "@types/request-promise-native": "1.0.15", "@types/rimraf": "2.0.2", "@types/seedrandom": "2.4.27", - "@types/sharp": "0.21.0", + "@types/sharp": "0.21.1", "@types/showdown": "1.9.2", "@types/speakeasy": "2.0.3", "@types/systeminformation": "3.23.1", From 160c1a302261c8fe249c6e4369df1f61d49bf9f7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 07:22:31 +0900 Subject: [PATCH 023/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index f051d9a69..dc9fa9e3b 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -5,12 +5,12 @@ meta: common: misskey: "Una ⭐️ del fediverso" about-title: "Una ⭐️ del fediverso" - about: "Gracias por encontrae Misskey. Misskey es una plataforma descentralizada de microblogging nacida en la Tierra. Gracias a existir dentro del Fediverso (un universo donde se organizan varias plataformas sociales) se encuentra enlazada mutuamente con otras plataformas sociales. ¿Por què no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?" + about: "Gracias por encontrar Misskey. Misskey es una plataforma descentralizada de microblogging nacida en la Tierra. Porque el servicio existe dentro del Fediverso (un universo donde se organizan varias plataformas sociales), se encuentra enlazado mutuamente con otras plataformas sociales. ¿Por qué no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?" intro: - title: "Misskeyって?" + title: "¿Misskey?" about: "Misskeyはオープンソースの分散型マイクロブログSNSです。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" - features: "特徴" - rich-contents: "投稿" + features: "Características" + rich-contents: "Posts" rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" reaction: "リアクション" reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" From 5c14ff661faf07080747d53c8a33fc9163d267f8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 07:42:51 +0900 Subject: [PATCH 024/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 118 +++++++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index dc9fa9e3b..a4fe75c76 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -12,11 +12,11 @@ common: features: "Características" rich-contents: "Posts" rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" - reaction: "リアクション" + reaction: "Reacciones" reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" - ui: "インターフェース" + ui: "Interfaz" ui-desc: "どのようなUIが使いやすいかは人それぞれです。だから、Misskeyは自由度の高いUIを持っています。レイアウトやデザインを調整したり、カスタマイズ可能な様々なウィジェットを配置したりして、自分だけのホームを作ってください。" - drive: "ドライブ" + drive: "Drive" drive-desc: "以前投稿したことのある画像をまた投稿したくなったことはありませんか?もしくは、アップロードしたファイルをフォルダ分けして整理したくなったことはありませんか?Misskeyの根幹に組み込まれたドライブ機能によってそれらが解決します。ファイルの共有も簡単です。" outro: "他にもMisskeyにしかない機能はまだまだあるので、ぜひあなた自身の目で確かめてください。Misskeyは分散型SNSなので、このインスタンスが気に入らなければ他のインスタンスを試すこともできます。それでは、GLHF!" adblock: @@ -54,8 +54,8 @@ common: years_ago: "Hace {} año(s)" month-and-day: "{day} de {month}" trash: "Papelera" - drive: "ドライブ" - messaging: "トーク" + drive: "Drive" + messaging: "Conversación" weekday-short: sunday: "domingo" monday: "lunes" @@ -85,11 +85,11 @@ common: pudding: "Chafado" note-visibility: public: "公開" - home: "ホーム" + home: "Inicio" home-desc: "ホームタイムラインにのみ公開" - followers: "フォロワー" + followers: "Seguidores" followers-desc: "自分のフォロワーにのみ公開" - specified: "ダイレクト" + specified: "Mensaje directo" specified-desc: "指定したユーザーにのみ公開" local-public: "公開 (ローカルのみ)" local-home: "ホーム (ローカルのみ)" @@ -122,9 +122,9 @@ common: this-setting-is-this-device-only: "このデバイスのみ" use-os-default-emojis: "OS標準の絵文字を使用" line-width: "線の太さ" - line-width-thin: "細い" + line-width-thin: "Fino" line-width-normal: "普通" - line-width-thick: "太い" + line-width-thick: "Grueso" hide-password: "パスワードを隠す" show-password: "パスワードを表示する" do-not-use-in-production: "Esto está en desarrollo, no usarlo para producción." @@ -171,7 +171,7 @@ common: hashtags: "Etiquetas" dev: "アプリの作成に失敗しました。再度お試しください。" ai-chan-kawaii: "藍ちゃかわいい" - you: "あなた" + you: "Tú" auth/views/form.vue: share-access: "{name}があなたのアカウントにアクセスすることを許可しますか?" permission-ask: "La aplicación requiere los siguientes permisos:" @@ -267,48 +267,48 @@ common/views/components/media-banner.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" common/views/components/theme.vue: - theme: "テーマ" + theme: "Tema" light-theme: "非ダークモード時に使用するテーマ" dark-theme: "ダークモード時に使用するテーマ" - light-themes: "明るいテーマ" - dark-themes: "暗いテーマ" - install-a-theme: "テーマのインストール" - theme-code: "テーマコード" - install: "インストール" + light-themes: "Tema claro" + dark-themes: "Tema oscuro" + install-a-theme: "Instalar tema" + theme-code: "Código del tema" + install: "Instalación" installed: "「{}」をインストールしました" create-a-theme: "テーマの作成" save-created-theme: "テーマを保存" - primary-color: "プライマリ カラー" - secondary-color: "セカンダリ カラー" + primary-color: "Color primario" + secondary-color: "Color secundario" text-color: "文字色" - base-theme: "ベーステーマ" - base-theme-light: "Light" - base-theme-dark: "Dark" + base-theme: "Tema base" + base-theme-light: "Claro" + base-theme-dark: "Oscuro" find-more-theme: "その他のテーマを入手" - theme-name: "テーマ名" - preview-created-theme: "プレビュー" + theme-name: "Nombre del tema" + preview-created-theme: "Vista previa" invalid-theme: "テーマが正しくありません。" already-installed: "既にそのテーマはインストールされています。" saved: "保存しました" manage-themes: "テーマの管理" builtin-themes: "標準テーマ" - my-themes: "マイテーマ" - installed-themes: "インストールされたテーマ" + my-themes: "Mis temas" + installed-themes: "Temas instalados" select-theme: "テーマを選択してください" - uninstall: "アンインストール" + uninstall: "Desinstalar" uninstalled: "「{}」をアンインストールしました" author: "作者" desc: "説明" - export: "エクスポート" - import: "インポート" + export: "Exportar" + import: "Importar" import-by-code: "またはコードをペースト" theme-name-required: "テーマ名は必須です。" common/views/components/cw-button.vue: hide: "隠す" - show: "もっと見る" - chars: "{count}文字" - files: "{count}ファイル" - poll: "アンケート" + show: "Mostrar" + chars: "{count} letras" + files: "{count} archivos" + poll: "Encuesta" common/views/components/messaging.vue: search-user: "Encuentra un usuario" you: "Tu" @@ -338,7 +338,7 @@ common/views/components/nav.vue: develop: "Desarrolladores" feedback: "Opiniones" common/views/components/note-menu.vue: - mention: "メンション" + mention: "Menciones" detail: "Detalles" copy-content: "内容をコピー" copy-link: "Copiar enlace" @@ -350,10 +350,10 @@ common/views/components/note-menu.vue: delete-confirm: "¿Seguro que quieres borrar la publicación?" remote: "Ver el original" common/views/components/user-menu.vue: - mention: "メンション" - mute: "ミュート" + mention: "Menciones" + mute: "Silenciar" unmute: "ミュート解除" - block: "ブロック" + block: "Bloquear" unblock: "ブロック解除" push-to-list: "リストに追加" select-list: "リストを選択してください" @@ -376,15 +376,15 @@ common/views/components/poll-editor.vue: common/views/components/reaction-picker.vue: choose-reaction: "Escoge una reacción" common/views/components/emoji-picker.vue: - custom-emoji: "カスタム絵文字" - people: "人" - animals-and-nature: "動物&自然" - food-and-drink: "食べ物&飲み物" - activity: "アクティビティ" - travel-and-places: "場所" - objects: "物" - symbols: "記号" - flags: "旗" + custom-emoji: "Personalizados" + people: "Gente" + animals-and-nature: "Naturaleza" + food-and-drink: "Comida y bebida" + activity: "Actividad" + travel-and-places: "Viajes y lugares" + objects: "Objetos" + symbols: "Símbolos" + flags: "Países" common/views/components/signin.vue: username: "Usuario" password: "Contraseña" @@ -393,8 +393,8 @@ common/views/components/signin.vue: signin: "Entra" or: "O" signin-with-twitter: "Ingresar con Twitter" - signin-with-github: "GitHubでログイン" - signin-with-discord: "Discordでログイン" + signin-with-github: "Ingresar con Github" + signin-with-discord: "Ingresar con Discord" login-failed: "Autenticación fallida. Asegúrate de haber usado el nombre de usuario y contraseña correctos." common/views/components/signup.vue: invitation-code: "Código de invitación" @@ -477,17 +477,17 @@ common/views/components/language-settings.vue: specify-language: "言語を指定" info: "変更はページの再度読み込み後に反映されます。" common/views/components/profile-editor.vue: - title: "プロフィール" - name: "名前" - account: "アカウント" + title: "Perfil" + name: "Nombre" + account: "Cuenta" location: "場所" description: "自己紹介" language: "言語" birthday: "誕生日" - avatar: "アイコン" - banner: "バナー" - is-cat: "このアカウントはCatです" - is-bot: "このアカウントはBotです" + avatar: "Avatar" + banner: "Banner" + is-cat: "Esta cuenta es un gato" + is-bot: "Esta cuenta es un bot" is-locked: "フォローを承認制にする" careful-bot: "Botからのフォローだけ承認制にする" auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する" @@ -498,11 +498,11 @@ common/views/components/profile-editor.vue: uploading: "アップロード中" upload-failed: "アップロードに失敗しました" email: "メール設定" - email-address: "メールアドレス" + email-address: "Correo electrónico" email-verified: "メールアドレスが確認されました" email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" common/views/components/user-list-editor.vue: - users: "ユーザー" + users: "Usuarios" rename: "リスト名を変更" delete: "リストを削除" remove-user: "このリストから削除" @@ -567,7 +567,7 @@ common/views/pages/follow.vue: following: "Siguiendo" follow: "Seguir" request-pending: "Solicitud pendiente" - follow-processing: "フォロー処理中" + follow-processing: "Solicitud en proceso" follow-request: "Solicitar suscripción" desktop: banner-crop-title: "Corta la parte que aparece como un banner" @@ -590,7 +590,7 @@ desktop/views/components/activity.vue: title: "Actividad" toggle: "Alternar vistas" desktop/views/components/calendar.vue: - title: "{year}年 {month}月" + title: "{year} / {month}" prev: "Mes anterior" next: "Próximo mes" go: "Click para navegar" From 8b775c85f60af5d14d5f39281d0dbe04df72d2c6 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 07:52:46 +0900 Subject: [PATCH 025/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index a4fe75c76..1d73d598e 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -701,7 +701,7 @@ desktop/views/components/note-detail.vue: desktop/views/components/note.vue: reply: "返信" renote: "Renote" - add-reaction: "リアクション" + add-reaction: "Reacción" undo-reaction: "リアクション解除" detail: "詳細" private: "この投稿は非公開です" @@ -759,23 +759,23 @@ desktop/views/components/renote-form.vue: desktop/views/components/renote-form-window.vue: title: "¿Seguro qué quieres volver a publicarlo?" desktop/views/pages/user-following-or-followers.vue: - following: "{user}のフォロー" - followers: "{user}のフォロワー" + following: "{user} sigue a" + followers: "Seguidores de {user}" desktop/views/components/settings-window.vue: settings: "Configuración" desktop/views/components/settings.vue: profile: "Perfil" notification: "Notificación" apps: "Aplicaciones" - tags: "ハッシュタグ" - mute-and-block: "ミュート/ブロック" - blocking: "ブロック" + tags: "Hashtags" + mute-and-block: "Silenciar/Bloquear" + blocking: "Bloquear" security: "Seguridad" signin: "Historial de inicios de sesión" password: "Contraseña" other: "Otros" license: "Licencia" - theme: "テーマ" + theme: "Tema" behaviour: "Acciones" fetch-on-scroll: "Desplazamiento infinito" fetch-on-scroll-desc: "Cuando te deslizas al final de la página nuevo contenido se carga automáticamente." @@ -812,30 +812,30 @@ desktop/views/components/settings.vue: remain-deleted-note: "削除された投稿を表示し続ける" deck-column-align: "デッキのカラムの配置" deck-column-align-center: "中央" - deck-column-align-left: "左" - deck-column-align-flexible: "フレキシブル" + deck-column-align-left: "Izquierda" + deck-column-align-flexible: "Flexible" deck-column-width: "デッキのカラムの幅" deck-column-width-narrow: "狭" deck-column-width-narrower: "やや狭" deck-column-width-normal: "普通" deck-column-width-wider: "やや広" deck-column-width-wide: "広" - sound: "サウンド" + sound: "Sonidos" enable-sounds: "サウンドを有効にする" enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" - volume: "ボリューム" - test: "テスト" - cache: "キャッシュ" - clean-cache: "クリーンアップ" + volume: "Volúmen" + test: "Prueba" + cache: "Caché" + clean-cache: "Borrar caché" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-cleared: "キャッシュを削除しました" cache-cleared-desc: "ページを再度読み込みしてください。" about: "Misskeyについて" operator: "このサーバーの運営者" - update: "Misskey Update" - version: "バージョン:" - latest-version: "最新のバージョン:" - update-checking: "アップデートを確認中" + update: "Actualizar Misskey" + version: "Versión" + latest-version: "Última versión" + update-checking: "Chequeando actualización" do-update: "Chequear por actualizaciones" update-settings: "Configuración avanzada" prevent-update: "Posponer actualizaciones (no recomendado)" @@ -853,9 +853,9 @@ desktop/views/components/settings.vue: task-manager: "Navegador de tareas" third-parties: "Servicios externos" navbar-position: "ナビゲーションバーの位置" - navbar-position-top: "上" - navbar-position-left: "左" - navbar-position-right: "右" + navbar-position-top: "Arriba" + navbar-position-left: "Izquierda" + navbar-position-right: "Derecha" desktop/views/components/settings.2fa.vue: intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。" detail: "Ver detalles..." @@ -868,7 +868,7 @@ desktop/views/components/settings.2fa.vue: enter-password: "Escribe una contraseña" authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:" howtoinstall: "Cómo instalar" - token: "トークン" + token: "Token" scan: "Luego, escanea el código QR:" done: "Por favor ingresa el token mostrado en tu dispositivo:" submit: "Enviar" @@ -883,7 +883,7 @@ common/views/components/api-settings.vue: token: "Token:" enter-password: "パスワードを入力してください" console: - title: "APIコンソール" + title: "Consola API" endpoint: "エンドポイント" parameter: "パラメータ" credential-info: "「i」パラメータは自動で付与されます。" @@ -897,9 +897,9 @@ common/views/components/drive-settings.vue: in-use: "使用中" stats: "統計" common/views/components/mute-and-block.vue: - mute-and-block: "ミュートとブロック" - mute: "ミュート" - block: "ブロック" + mute-and-block: "Silenciar y bloquear" + mute: "Silenciar" + block: "Bloquear" no-muted-users: "ミュートしているユーザーはいません" no-blocked-users: "ブロックしているユーザーはいません" word-mute: "ワードミュート" @@ -918,17 +918,17 @@ desktop/views/components/sub-note-content.vue: private: "この投稿は非公開です" deleted: "この投稿は削除されました" media-count: "{}つのメディア" - poll: "アンケート" + poll: "Encuesta" desktop/views/components/settings.tags.vue: - title: "タグ" + title: "Etiqueta" query: "クエリ (省略可)" add: "追加" save: "保存" desktop/views/components/taskmanager.vue: title: "タスクマネージャ" desktop/views/components/timeline.vue: - home: "ホーム" - local: "ローカル" + home: "Inicio" + local: "Local" hybrid: "ソーシャル" global: "グローバル" mentions: "あなた宛て" From 0c42c54b7a24b19fff7601653dd36ca2af31bad2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 08:01:47 +0900 Subject: [PATCH 026/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 1d73d598e..b490580e3 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -929,15 +929,15 @@ desktop/views/components/taskmanager.vue: desktop/views/components/timeline.vue: home: "Inicio" local: "Local" - hybrid: "ソーシャル" - global: "グローバル" + hybrid: "Social" + global: "Global" mentions: "あなた宛て" messages: "メッセージ" - list: "リスト" - hashtag: "ハッシュタグ" + list: "Listas" + hashtag: "Hashtags" add-tag-timeline: "ハッシュタグを追加" add-list: "リストを追加" - list-name: "リスト名" + list-name: "Nombre de lista" desktop/views/components/ui.header.vue: welcome-back: "Bienvenido/a de vuelta," adjective: "-san" @@ -971,34 +971,34 @@ desktop/views/components/user-lists-window.vue: list-name: "Nombre de lista" desktop/views/components/user-preview.vue: notes: "Publicaciones" - following: "フォロー" - followers: "フォロワー" + following: "Sigue" + followers: "Seguidores" desktop/views/components/users-list.vue: - all: "すべて" + all: "Todo" iknow: "知り合い" fetching: "読み込んでいます" desktop/views/components/users-list-item.vue: followed: "フォローされています" desktop/views/components/window.vue: popout: "ポップアウト" - close: "閉じる" + close: "Cerrar" admin/views/index.vue: - dashboard: "ダッシュボード" - instance: "インスタンス" + dashboard: "Panel de control" + instance: "Instancia" emoji: "カスタム絵文字" - moderators: "モデレーター" - users: "ユーザー" + moderators: "Moderadores" + users: "Usuarios" federation: "連合" announcements: "お知らせ" - hashtags: "ハッシュタグ" + hashtags: "Hashtags" abuse: "スパム報告" - back-to-misskey: "Misskeyに戻る" + back-to-misskey: "Volver a Misskey" admin/views/dashboard.vue: - dashboard: "ダッシュボード" - accounts: "アカウント" + dashboard: "Panel de Control" + accounts: "Cuenta" notes: "投稿" - drive: "ドライブ" - instances: "インスタンス" + drive: "Drive" + instances: "Instancias" this-instance: "このインスタンス" federated: "連合" admin/views/abuse.vue: From c7a6321a0843749e28c0bdc60c69d3178f5934cb Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 08:12:04 +0900 Subject: [PATCH 027/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index b490580e3..2268e89ac 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -999,7 +999,7 @@ admin/views/dashboard.vue: notes: "投稿" drive: "Drive" instances: "Instancias" - this-instance: "このインスタンス" + this-instance: "Esta instancia" federated: "連合" admin/views/abuse.vue: title: "スパム報告" @@ -1008,10 +1008,10 @@ admin/views/abuse.vue: details: "詳細" remove-report: "削除" admin/views/instance.vue: - instance: "インスタンス" - instance-name: "インスタンス名" + instance: "Instancia" + instance-name: "Nombre de la instancia" instance-description: "インスタンスの紹介" - host: "ホスト" + host: "Host" banner-url: "バナー画像URL" error-image-url: "エラー画像URL" languages: "インスタンスの対象言語" @@ -1029,7 +1029,7 @@ admin/views/instance.vue: recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。" enable-recaptcha: "reCAPTCHAを有効にする" recaptcha-site-key: "reCAPTCHA site key" - recaptcha-secret-key: "reCAPTCHA secret key" + recaptcha-secret-key: "clave secreta reCAPTCHA" twitter-integration-config: "Twitter連携の設定" twitter-integration-info: "コールバックURLは {url} に設定します。" enable-twitter-integration: "Twitter連携を有効にする" @@ -1062,7 +1062,7 @@ admin/views/instance.vue: enable-external-user-recommendation: "外部ユーザーレコメンデーションを有効にする" external-user-recommendation-engine: "エンジン" external-user-recommendation-engine-desc: "例: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" - external-user-recommendation-timeout: "タイムアウト" + external-user-recommendation-timeout: "Tiempo de espera" external-user-recommendation-timeout-desc: "ミリ秒単位 (例: 300000)" email-config: "メールサーバーの設定" email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" @@ -1070,10 +1070,10 @@ admin/views/instance.vue: email: "メールアドレス" smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" smtp-secure-info: "STARTTLS使用時はオフにします。" - smtp-host: "SMTPホスト" - smtp-port: "SMTPポート" - smtp-user: "SMTPユーザー" - smtp-pass: "SMTPパスワード" + smtp-host: "Host SMTP" + smtp-port: "Puerto SMTP" + smtp-user: "Usuario SMTP" + smtp-pass: "Contraseña SMTP" serviceworker-config: "ServiceWorker" enable-serviceworker: "ServiceWorkerを有効にする" serviceworker-info: "プッシュ通知を行うには有効する必要があります。" @@ -1086,9 +1086,9 @@ admin/views/charts.vue: per-hour: "1時間ごと" federation: "フェデレーション" notes: "投稿" - users: "ユーザー" - drive: "ドライブ" - network: "ネットワーク" + users: "Usuarios" + drive: "Drive" + network: "Red" charts: federation-instances: "インスタンスの増減" federation-instances-total: "インスタンスの積算" From c2a840fa195ede82c88bd93d2e988909812512b6 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 08:21:20 +0900 Subject: [PATCH 028/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index ee6baec3a..91abe2986 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1054,7 +1054,7 @@ admin/views/instance.vue: disable-registration: "Disable new user registration" disable-local-timeline: "Disable the Local Timeline" disable-global-timeline: "Disable global timeline" - disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。" + disabling-timelines-info: "Even if you disable these timelines, the administrator as well as moderators can use them continually." invite: "Invite" save: "Save" saved: "Saved" From 3995ae095789750c44a41d49ba76ba6d56d616fd Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 08:21:24 +0900 Subject: [PATCH 029/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 2268e89ac..aca854ed0 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -1081,10 +1081,10 @@ admin/views/instance.vue: vapid-privatekey: "VAPID秘密鍵" vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:" admin/views/charts.vue: - title: "チャート" - per-day: "1日ごと" - per-hour: "1時間ごと" - federation: "フェデレーション" + title: "Gráficos" + per-day: "Por día" + per-hour: "Por hora" + federation: "Federación" notes: "投稿" users: "Usuarios" drive: "Drive" @@ -1112,16 +1112,16 @@ admin/views/drive.vue: file-not-found: "ファイルが見つかりません" lookup: "照会" sort: - title: "ソート" + title: "Ordenar" createdAtAsc: "アップロード日時が古い順" createdAtDesc: "アップロード日時が新しい順" sizeAsc: "サイズが小さい順" sizeDesc: "サイズが大きい順" origin: title: "オリジン" - combined: "ローカル+リモート" - local: "ローカル" - remote: "リモート" + combined: "Local+Remoto" + local: "Local" + remote: "Remoto" delete: "削除" deleted: "削除しました" mark-as-sensitive: "閲覧注意に設定" From 1970927b5e67d4278f7d41dfec3a5c09e461089d Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 08:52:43 +0900 Subject: [PATCH 030/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index aca854ed0..a309ee3dc 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -27,7 +27,7 @@ common: do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida." load-more: "もっと読み込む" enter-password: "パスワードを入力してください" - 2fa: "二段階認証" + 2fa: "Autenticación de dos factores" got-it: "¡Listo!" customization-tips: title: "Consejos de personalización" @@ -84,16 +84,16 @@ common: rip: "RIP" pudding: "Chafado" note-visibility: - public: "公開" + public: "Público" home: "Inicio" - home-desc: "ホームタイムラインにのみ公開" + home-desc: "Sólo en el timeline de inicio" followers: "Seguidores" - followers-desc: "自分のフォロワーにのみ公開" + followers-desc: "Sólo para tus seguidores" specified: "Mensaje directo" - specified-desc: "指定したユーザーにのみ公開" - local-public: "公開 (ローカルのみ)" - local-home: "ホーム (ローカルのみ)" - local-followers: "フォロワー (ローカルのみ)" + specified-desc: "Sólo para ciertos usuarios" + local-public: "Público (sólo local)" + local-home: "Inicio (sólo local)" + local-followers: "Seguidores (sólo local)" note-placeholders: a: "¿Qué haces?" b: "¿Qué está pasando?" From b956d63c4602b3bd00876356524c9b067dd8131a Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 10:11:46 +0900 Subject: [PATCH 031/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index a309ee3dc..0f6a887b0 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -8,7 +8,7 @@ common: about: "Gracias por encontrar Misskey. Misskey es una plataforma descentralizada de microblogging nacida en la Tierra. Porque el servicio existe dentro del Fediverso (un universo donde se organizan varias plataformas sociales), se encuentra enlazado mutuamente con otras plataformas sociales. ¿Por qué no te tomas un respiro del caos de la ciudad y te sumerges es una nueva manera de entender Internet?" intro: title: "¿Misskey?" - about: "Misskeyはオープンソースの分散型マイクロブログSNSです。リッチで高度にカスタマイズできるUI、投稿へのリアクション、ファイルを一元管理できるドライブなど、先進的な機能を揃えています。また、Fediverseと呼ばれるネットワークに接続できるため、他のSNSともやり取りできます。例えば、あなたが何か投稿すると、その投稿はMisskeyだけでなく他のSNSにも伝わります。ちょうどある惑星から他の惑星に電波を発信している様子をイメージしてください。" + about: "Misskey es un Servicio de red social descentralizada de microblogging de código abierto. Contiene una interfaz de usuario altamente personalizable, reacciones a posts, almacenamiento para poder manejar archivos y otras funciones avanzadas. Además de conectarse con la red llamada Fediverso, puede intercambiar mensajes con otras redes sociales. Por ejemplo, si contribuyes con algo, esa contribución es transmitida no sólo a Misskey sino a otras redes sociales. Imagina que se parece a transmitir una onda de radio de un planeta a otro." features: "Características" rich-contents: "Posts" rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" From 926ad230331a839e706899e9079b16c1ca3159a7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 10:52:04 +0900 Subject: [PATCH 032/429] [Test] Add API test --- test/api.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/api.ts b/test/api.ts index 72a0efbbd..30ff32e3d 100644 --- a/test/api.ts +++ b/test/api.ts @@ -1171,4 +1171,31 @@ describe('API', () => { expect(res).have.status(400); })); }); + + describe('notes/replies', () => { + it('自分に閲覧権限のない投稿は含まれない', async(async () => { + const alice = await signup({ username: 'alice' }); + const bob = await signup({ username: 'bob' }); + const carol = await signup({ username: 'carol' }); + + const alicePost = await post(alice, { + text: 'foo' + }); + + await post(bob, { + replyId: alicePost.id, + text: 'bar', + visibility: 'specified', + visibleUserIds: [alice.id] + }); + + const res = await request('/notes/replies', { + noteId: alicePost.id + }, carol); + + expect(res).have.status(200); + expect(res.body).be.a('array'); + expect(res.body).length(0); + })); + }); }); From 76fcf122f99758a0a95b787f6b0e401f05341101 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 10:58:39 +0900 Subject: [PATCH 033/429] [Test] Add notes/timeline test --- test/api.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/api.ts b/test/api.ts index 30ff32e3d..67edf3dfc 100644 --- a/test/api.ts +++ b/test/api.ts @@ -1198,4 +1198,27 @@ describe('API', () => { expect(res.body).length(0); })); }); + + describe('notes/timeline', () => { + it('フォロワー限定投稿が含まれる', async(async () => { + const alice = await signup({ username: 'alice' }); + const bob = await signup({ username: 'bob' }); + + await request('/following/create', { + userId: alice.id + }, bob); + + const alicePost = await post(alice, { + text: 'foo', + visibility: 'followers' + }); + + const res = await request('/notes/timeline', {}, bob); + + expect(res).have.status(200); + expect(res.body).be.a('array'); + expect(res.body).length(1); + expect(res.body[0].id).equals(alicePost.id); + })); + }); }); From 4f6e387d49ec9fd9e4c86b73763b0d53694a0787 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Fri, 25 Jan 2019 11:00:02 +0900 Subject: [PATCH 034/429] Update koa-views requirement from 6.1.4 to 6.1.5 (#3979) Updates the requirements on [koa-views](https://github.com/queckezz/koa-views) to permit the latest version. - [Release notes](https://github.com/queckezz/koa-views/releases) - [Changelog](https://github.com/queckezz/koa-views/blob/master/history.md) - [Commits](https://github.com/queckezz/koa-views/commits/v6.1.5) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 500302edc..5f7c704fb 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "koa-router": "7.4.0", "koa-send": "5.0.0", "koa-slow": "2.1.0", - "koa-views": "6.1.4", + "koa-views": "6.1.5", "langmap": "0.0.16", "loader-utils": "1.2.3", "lookup-dns-cache": "2.1.0", From 428d27a27b0a15e42fcc65f42bf9b4ee61a94367 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 11:01:47 +0900 Subject: [PATCH 035/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 0f6a887b0..fe441b255 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -11,7 +11,7 @@ common: about: "Misskey es un Servicio de red social descentralizada de microblogging de código abierto. Contiene una interfaz de usuario altamente personalizable, reacciones a posts, almacenamiento para poder manejar archivos y otras funciones avanzadas. Además de conectarse con la red llamada Fediverso, puede intercambiar mensajes con otras redes sociales. Por ejemplo, si contribuyes con algo, esa contribución es transmitida no sólo a Misskey sino a otras redes sociales. Imagina que se parece a transmitir una onda de radio de un planeta a otro." features: "Características" rich-contents: "Posts" - rich-contents-desc: "自分の考え、話題の出来事、皆と共有したいことについて発信してください。必要であれば、様々な構文を使って投稿を装飾したり、好きな画像、動画などのファイルやアンケートを添付することもできます。" + rich-contents-desc: "Escribe sobre tus pensamientos, eventos, todo lo que quieras compartir. Si es necesario, puedes usar varias sintaxis, decorar tus posts y añadir tus imágenes favoritas, archivos de viddeo y encuestas." reaction: "Reacciones" reaction-desc: "あなたの気持ちを伝える最も簡単な方法です。Misskeyは、他のユーザーの投稿に様々なリアクションを付けることができます。いちどMisskeyのリアクション機能を体験してしまうと、もう「いいね」の概念しか存在しないSNSには戻れなくなるかもしれません。" ui: "Interfaz" From 3552b1c9004ab887c9e0bf50d8bf496211426335 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 11:05:24 +0900 Subject: [PATCH 036/429] Update CHANGELOG.md --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 986938d9e..99caaf49c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ ChangeLog unreleased ---------- +* 返信するときにCWを維持するかどうか設定できるように +* 外部サービス認証情報の配信 +* テーマが反映されないことがある問題を修正 +* ホームにフォロワー限定投稿が表示されない問題を修正 +* 返信一覧を取得すると非公開投稿も取得されてしまう問題を修正 +* メンション一覧を取得すると非公開投稿も取得されてしまう問題を修正 +* 通知に非公開投稿が表示される問題を修正 * ウィジットの投稿フォームで投稿するとデフォルトの公開範囲が適用されない問題を修正 10.78.5 From 92b45d1a9d4b121e2b975318b84ef466a25b7710 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 15:56:49 +0900 Subject: [PATCH 037/429] Refactoring --- test/streaming.ts | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/test/streaming.ts b/test/streaming.ts index 1f4b593e2..6186e348a 100644 --- a/test/streaming.ts +++ b/test/streaming.ts @@ -45,37 +45,37 @@ describe('Streaming', () => { server.close(); }); - it('投稿がタイムラインに流れる', done => { + it('投稿がタイムラインに流れる', () => new Promise(async done => { const post = { text: 'foo' }; - signup().then(me => { - const ws = new WebSocket(`ws://localhost/streaming?i=${me.token}`); + const me = await signup(); - ws.on('open', () => { - ws.on('message', data => { - const msg = JSON.parse(data.toString()); - if (msg.type == 'channel' && msg.body.id == 'a') { - if (msg.body.type == 'note') { - expect(msg.body.body.text).eql(post.text); - ws.close(); - done(); - } - } else if (msg.type == 'connected' && msg.body.id == 'a') { - request('/notes/create', post, me); - } - }); + const ws = new WebSocket(`ws://localhost/streaming?i=${me.token}`); - ws.send(JSON.stringify({ - type: 'connect', - body: { - channel: 'homeTimeline', - id: 'a', - pong: true + ws.on('open', () => { + ws.on('message', data => { + const msg = JSON.parse(data.toString()); + if (msg.type == 'channel' && msg.body.id == 'a') { + if (msg.body.type == 'note') { + expect(msg.body.body.text).eql(post.text); + ws.close(); + done(); } - })); + } else if (msg.type == 'connected' && msg.body.id == 'a') { + request('/notes/create', post, me); + } }); + + ws.send(JSON.stringify({ + type: 'connect', + body: { + channel: 'homeTimeline', + id: 'a', + pong: true + } + })); }); - }); + })); }); From 501379c82cbc93b2aa195aff7798271dfb0a879d Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 16:14:09 +0900 Subject: [PATCH 038/429] [Test] Add sone streaming tests --- test/streaming.ts | 72 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/test/streaming.ts b/test/streaming.ts index 6186e348a..19cae8c9c 100644 --- a/test/streaming.ts +++ b/test/streaming.ts @@ -35,6 +35,7 @@ const apiServer = http.createServer(app.callback()); //#region Utilities const request = _request(apiServer); const signup = _signup(request); +const post = _post(request); //#endregion describe('Streaming', () => { @@ -51,7 +52,6 @@ describe('Streaming', () => { }; const me = await signup(); - const ws = new WebSocket(`ws://localhost/streaming?i=${me.token}`); ws.on('open', () => { @@ -78,4 +78,74 @@ describe('Streaming', () => { })); }); })); + + it('mention event', () => new Promise(async done => { + const alice = await signup({ username: 'alice' }); + const bob = await signup({ username: 'bob' }); + const aliceNote = { + text: 'foo @bob bar' + }; + + const ws = new WebSocket(`ws://localhost/streaming?i=${bob.token}`); + + ws.on('open', () => { + ws.on('message', data => { + const msg = JSON.parse(data.toString()); + if (msg.type == 'channel' && msg.body.id == 'a') { + if (msg.body.type == 'mention') { + expect(msg.body.body.text).eql(aliceNote.text); + ws.close(); + done(); + } + } else if (msg.type == 'connected' && msg.body.id == 'a') { + request('/notes/create', aliceNote, alice); + } + }); + + ws.send(JSON.stringify({ + type: 'connect', + body: { + channel: 'main', + id: 'a', + pong: true + } + })); + }); + })); + + it('renote event', () => new Promise(async done => { + const alice = await signup({ username: 'alice' }); + const bob = await signup({ username: 'bob' }); + const bobNote = await post(bob, { + text: 'foo' + }); + + const ws = new WebSocket(`ws://localhost/streaming?i=${bob.token}`); + + ws.on('open', () => { + ws.on('message', data => { + const msg = JSON.parse(data.toString()); + if (msg.type == 'channel' && msg.body.id == 'a') { + if (msg.body.type == 'renote') { + expect(msg.body.body.renoteId).eql(bobNote.id); + ws.close(); + done(); + } + } else if (msg.type == 'connected' && msg.body.id == 'a') { + request('/notes/create', { + renoteId: bobNote.id + }, alice); + } + }); + + ws.send(JSON.stringify({ + type: 'connect', + body: { + channel: 'main', + id: 'a', + pong: true + } + })); + }); + })); }); From 42cd7c8a752b801a51e7e3718e4712251e66e2df Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 16:41:51 +0900 Subject: [PATCH 039/429] [MFM] Improve italic syntax detection --- CHANGELOG.md | 1 + src/mfm/parser.ts | 11 ++++++++++- test/mfm.ts | 7 +++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99caaf49c..e7499f32a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ unreleased ---------- * 返信するときにCWを維持するかどうか設定できるように * 外部サービス認証情報の配信 +* イタリック構文の判定の改善 * テーマが反映されないことがある問題を修正 * ホームにフォロワー限定投稿が表示されない問題を修正 * 返信一覧を取得すると非公開投稿も取得されてしまう問題を修正 diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 10b16d619..b86e1d555 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -224,7 +224,16 @@ const mfm = P.createLanguage({ //#region Italic italic: r => - P.alt(P.regexp(/([\s\S]+?)<\/i>/, 1), P.regexp(/(\*|_)([a-zA-Z0-9]+?[\s\S]*?)\1/, 2)) + P.alt( + P.regexp(/([\s\S]+?)<\/i>/, 1), + P((input, i) => { + const text = input.substr(i); + const match = text.match(/^(\*|_)([a-zA-Z0-9]+?[\s\S]*?)\1/); + if (!match) return P.makeFailure(i, 'not a italic'); + if (input[i - 1] != null && input[i - 1].match(/[a-z0-9]/i)) return P.makeFailure(i, 'not a italic'); + return P.makeSuccess(i + match[0].length, match[2]); + }) + ) .map(x => createTree('italic', P.alt( r.bold, r.strike, diff --git a/test/mfm.ts b/test/mfm.ts index 789fb898c..a4b4a1397 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -966,6 +966,13 @@ describe('MFM', () => { text('*foo_'), ]); }); + + it('ignore snake_case string', () => { + const tokens = analyze('foo_bar_baz'); + assert.deepStrictEqual(tokens, [ + text('foo_bar_baz'), + ]); + }); }); }); From 439865184171791bb7784d78e9a9b7b4285df6e7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 19:37:45 +0900 Subject: [PATCH 040/429] Refactor --- test/api.ts | 1 - test/streaming.ts | 11 ++++------- test/utils.ts | 1 + 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/test/api.ts b/test/api.ts index 67edf3dfc..77eb2d741 100644 --- a/test/api.ts +++ b/test/api.ts @@ -13,7 +13,6 @@ import * as fs from 'fs'; import * as assert from 'chai'; import { async, _signup, _request, _uploadFile, _post, _react, resetDb } from './utils'; -assert.use(require('chai-http')); const expect = assert.expect; //#region process diff --git a/test/streaming.ts b/test/streaming.ts index 19cae8c9c..500324d52 100644 --- a/test/streaming.ts +++ b/test/streaming.ts @@ -10,12 +10,9 @@ import * as http from 'http'; import * as WebSocket from 'ws'; -import * as assert from 'chai'; +import * as assert from 'assert'; import { _signup, _request, _uploadFile, _post, _react, resetDb } from './utils'; -assert.use(require('chai-http')); -const expect = assert.expect; - //#region process Error.stackTraceLimit = Infinity; @@ -59,7 +56,7 @@ describe('Streaming', () => { const msg = JSON.parse(data.toString()); if (msg.type == 'channel' && msg.body.id == 'a') { if (msg.body.type == 'note') { - expect(msg.body.body.text).eql(post.text); + assert.deepStrictEqual(msg.body.body.text, post.text); ws.close(); done(); } @@ -93,7 +90,7 @@ describe('Streaming', () => { const msg = JSON.parse(data.toString()); if (msg.type == 'channel' && msg.body.id == 'a') { if (msg.body.type == 'mention') { - expect(msg.body.body.text).eql(aliceNote.text); + assert.deepStrictEqual(msg.body.body.text, aliceNote.text); ws.close(); done(); } @@ -127,7 +124,7 @@ describe('Streaming', () => { const msg = JSON.parse(data.toString()); if (msg.type == 'channel' && msg.body.id == 'a') { if (msg.body.type == 'renote') { - expect(msg.body.body.renoteId).eql(bobNote.id); + assert.deepStrictEqual(msg.body.body.renoteId, bobNote.id); ws.close(); done(); } diff --git a/test/utils.ts b/test/utils.ts index 06fc1e405..137712247 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,6 +1,7 @@ import * as fs from 'fs'; import * as http from 'http'; import * as assert from 'chai'; +assert.use(require('chai-http')); export const async = (fn: Function) => (done: Function) => { fn().then(() => { From e4601962d0b902a6f7386668b92d840e2733cbb2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 25 Jan 2019 19:53:11 +0900 Subject: [PATCH 041/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 91abe2986..87f49dfc5 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -807,8 +807,8 @@ desktop/views/components/settings.vue: timeline: "Timeline" show-my-renotes: "Show my renotes in the timeline" show-renoted-my-notes: "Show renoted posts of mine in timelines" - show-local-renotes: "Show renoted local posts in timelines" - show-maps: "Display a map to show the location" + show-local-renotes: "Show renoted local posts in the timelines" + show-maps: "Display a map to show location" remain-deleted-note: "Continue to show deleted posts" deck-column-align: "Deck column alignment" deck-column-align-center: "Center" From 79d2374d8ec1de10740d36309c26d00e5ab44c68 Mon Sep 17 00:00:00 2001 From: Aya Morisawa Date: Fri, 25 Jan 2019 23:08:06 +0900 Subject: [PATCH 042/429] Add multiline math syntax Co-authored-by: syuilo --- .../common/views/components/formula-core.vue | 7 +++++- .../app/common/views/components/formula.vue | 6 ++++- src/client/app/common/views/components/mfm.ts | 16 +++++++++++-- src/mfm/html.ts | 8 ++++++- src/mfm/parser.ts | 23 ++++++++++++------- test/mfm.ts | 19 +++++++++++---- 6 files changed, 62 insertions(+), 17 deletions(-) diff --git a/src/client/app/common/views/components/formula-core.vue b/src/client/app/common/views/components/formula-core.vue index 254e0df30..69697d6df 100644 --- a/src/client/app/common/views/components/formula-core.vue +++ b/src/client/app/common/views/components/formula-core.vue @@ -1,5 +1,6 @@ + + diff --git a/src/client/app/admin/views/users.vue b/src/client/app/admin/views/users.vue index 6f0f1629f..6b829a2f8 100644 --- a/src/client/app/admin/views/users.vue +++ b/src/client/app/admin/views/users.vue @@ -3,20 +3,26 @@
{{ $t('operation') }}
- + {{ $t('username-or-userid') }} - {{ $t('reset-password') }} - - {{ $t('verify') }} - {{ $t('unverify') }} - - - {{ $t('suspend') }} - {{ $t('unsuspend') }} - {{ $t('lookup') }} - + +
+ +
+ {{ $t('reset-password') }} + + {{ $t('verify') }} + {{ $t('unverify') }} + + + {{ $t('suspend') }} + {{ $t('unsuspend') }} + + +
+
@@ -47,29 +53,7 @@ -
-
- - - -
-
-
- - @{{ user | acct }} - admin - moderator - - -
-
- {{ $t('users.updatedAt') }}: -
-
- {{ $t('users.createdAt') }}: -
-
-
+
{{ $t('@.load-more') }} @@ -83,10 +67,13 @@ import i18n from '../../i18n'; import parseAcct from "../../../../misc/acct/parse"; import { faCertificate, faUsers, faTerminal, faSearch, faKey } from '@fortawesome/free-solid-svg-icons'; import { faSnowflake } from '@fortawesome/free-regular-svg-icons'; +import XUser from './users.user.vue'; export default Vue.extend({ i18n: i18n('admin/views/users.vue'), - + components: { + XUser + }, data() { return { user: null, @@ -131,6 +118,7 @@ export default Vue.extend({ }, methods: { + /** テキストエリアのユーザーを解決する */ async fetchUser() { try { return await this.$root.api('users/show', this.target.startsWith('@') ? parseAcct(this.target) : { userId: this.target }); @@ -149,16 +137,27 @@ export default Vue.extend({ } }, + /** テキストエリアから処理対象ユーザーを設定する */ async showUser() { + this.user = null; const user = await this.fetchUser(); this.$root.api('admin/show-user', { userId: user.id }).then(info => { this.user = info; }); + this.target = ''; + }, + + /** 処理対象ユーザーの情報を更新する */ + async refreshUser() { + this.$root.api('admin/show-user', { userId: this.user._id }).then(info => { + this.user = info; + }); }, async resetPassword() { - const user = await this.fetchUser(); - this.$root.api('admin/reset-password', { userId: user.id }).then(res => { + if (!await this.getConfirmed(this.$t('reset-password-confirm'))) return; + + this.$root.api('admin/reset-password', { userId: this.user._id }).then(res => { this.$root.dialog({ type: 'success', text: this.$t('password-updated', { password: res.password }) @@ -167,11 +166,12 @@ export default Vue.extend({ }, async verifyUser() { + if (!await this.getConfirmed(this.$t('verify-confirm'))) return; + this.verifying = true; const process = async () => { - const user = await this.fetchUser(); - await this.$root.api('admin/verify-user', { userId: user.id }); + await this.$root.api('admin/verify-user', { userId: this.user._id }); this.$root.dialog({ type: 'success', text: this.$t('verified') @@ -186,14 +186,17 @@ export default Vue.extend({ }); this.verifying = false; + + this.refreshUser(); }, async unverifyUser() { + if (!await this.getConfirmed(this.$t('unverify-confirm'))) return; + this.unverifying = true; const process = async () => { - const user = await this.fetchUser(); - await this.$root.api('admin/unverify-user', { userId: user.id }); + await this.$root.api('admin/unverify-user', { userId: this.user._id }); this.$root.dialog({ type: 'success', text: this.$t('unverified') @@ -208,14 +211,17 @@ export default Vue.extend({ }); this.unverifying = false; + + this.refreshUser(); }, async suspendUser() { + if (!await this.getConfirmed(this.$t('suspend-confirm'))) return; + this.suspending = true; const process = async () => { - const user = await this.fetchUser(); - await this.$root.api('admin/suspend-user', { userId: user.id }); + await this.$root.api('admin/suspend-user', { userId: this.user._id }); this.$root.dialog({ type: 'success', text: this.$t('suspended') @@ -230,14 +236,17 @@ export default Vue.extend({ }); this.suspending = false; + + this.refreshUser(); }, async unsuspendUser() { + if (!await this.getConfirmed(this.$t('unsuspend-confirm'))) return; + this.unsuspending = true; const process = async () => { - const user = await this.fetchUser(); - await this.$root.api('admin/unsuspend-user', { userId: user.id }); + await this.$root.api('admin/unsuspend-user', { userId: this.user._id }); this.$root.dialog({ type: 'success', text: this.$t('unsuspended') @@ -252,8 +261,21 @@ export default Vue.extend({ }); this.unsuspending = false; + + this.refreshUser(); }, + async getConfirmed(text: string): Promise { + const confirm = await this.$root.dialog({ + type: 'warning', + showCancelButton: true, + title: 'confirm', + text, + }); + + return !confirm.canceled; + } + fetchUsers() { this.$root.api('admin/show-users', { state: this.state, @@ -277,42 +299,12 @@ export default Vue.extend({ From de1a7b436456b74a70d365dc9e2aebb643d32c75 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:14:43 +0900 Subject: [PATCH 048/429] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 824401e6a..a1ba13339 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ unreleased ---------- * 返信するときにCWを維持するかどうか設定できるように * 外部サービス認証情報の配信 +* 管理画面のモデレーションのUIを強化 * イタリック構文の判定の改善 * テーマが反映されないことがある問題を修正 * ホームにフォロワー限定投稿が表示されない問題を修正 From b3730e3373929a2b82caaca8a7c2de65fc0bf8cf Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:22:36 +0900 Subject: [PATCH 049/429] New translations ja-JP.yml (Catalan) --- locales/ca-ES.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 339a66d0c..25368a4d3 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From 821182cad5ebba95a83f6e01f720a64199c3f7b2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:22:41 +0900 Subject: [PATCH 050/429] New translations ja-JP.yml (Chinese Simplified) --- locales/zh-CN.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index b197f16dc..fafef699c 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "用户不存在" lookup: "订阅" reset-password: "密码重置" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "密码为「{password}」" suspend: "被冻结" + suspend-confirm: "凍結しますか?" suspended: "成功冻结用户" unsuspend: "已解除冻结" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "已成功解除用户冻结" verify: "认证用户" + verify-confirm: "公式アカウントにしますか?" verified: "此账户已被认证" unverify: "解除账户认证" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "该帐户未经认证" users: title: "用户" From 16e4bb7f79af694d2c19609515449a0c816f9ea4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:22:45 +0900 Subject: [PATCH 051/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/en-US.yml b/locales/en-US.yml index 87f49dfc5..5e48e0d56 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "User not found" lookup: "Look up" reset-password: "Reset password" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "The password is now \"{password}\"" suspend: "Suspend" + suspend-confirm: "凍結しますか?" suspended: "Successfully suspended." unsuspend: "Unsuspend" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "The user has successfully unsuspended." verify: "Verify account" + verify-confirm: "公式アカウントにしますか?" verified: "The account is now being verified" unverify: "Unverify account" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "The account is now being unverified" users: title: "Users" From 6667ddbc26dbdbc5afe797eb9b451433de4b04f1 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:22:50 +0900 Subject: [PATCH 052/429] New translations ja-JP.yml (French) --- locales/fr-FR.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index e0216e9a7..5ab41af68 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "Utilisateur non trouvé" lookup: "Recherche" reset-password: "Réinitialiser mot de passe" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "Le mot de passe est « {password} »" suspend: "Suspendre" + suspend-confirm: "凍結しますか?" suspended: "Suspendu avec succès." unsuspend: "Suspension levée" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "La suspension de l’utilisateur a été levée avec succès" verify: "Vérification du compte" + verify-confirm: "公式アカウントにしますか?" verified: "Le compte a été vérifié" unverify: "Enlever la vérification du compte" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "Ce compte n'est plus vérifié" users: title: "Utilisateurs" From 4e92eb55cd2771ea51cbeb71891714ed119bec38 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:22:57 +0900 Subject: [PATCH 053/429] New translations ja-JP.yml (German) --- locales/de-DE.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 225fc70c0..89e545e2f 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From 3bffe605f77a32faecc4ec7be99005ccb18cda76 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:02 +0900 Subject: [PATCH 054/429] New translations ja-JP.yml (Italian) --- locales/it-IT.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/it-IT.yml b/locales/it-IT.yml index b826757cc..75729774e 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From db5a4040813cac076124d04df9029bf5b5dcbb8a Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:09 +0900 Subject: [PATCH 055/429] New translations ja-JP.yml (Korean) --- locales/ko-KR.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 70c41d525..2dab99a98 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "사용자를 찾을 수 없습니다" lookup: "조회" reset-password: "암호 재설정" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "암호는 현재 \"{password}\" 입니다" suspend: "정지" + suspend-confirm: "凍結しますか?" suspended: "정지하였습니다" unsuspend: "정지 해제" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "정지를 해제하였습니다" verify: "공식 계정으로 설정" + verify-confirm: "公式アカウントにしますか?" verified: "공식 계정으로 설정하였습니다" unverify: "공식 계정 해제" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "공식 계정을 해제하였습니다" users: title: "사용자" From 9b386fd50ee5a0b863bddb0ce9e030a87cef72ea Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:14 +0900 Subject: [PATCH 056/429] New translations ja-JP.yml (Polish) --- locales/pl-PL.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index d2680194a..5ff7d8d6e 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "Nie znaleziono użytkownika" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "Użytkownicy" From fbfd3a60ed4b154ab82da9b5141e1ba0ed8b4eb1 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:18 +0900 Subject: [PATCH 057/429] New translations ja-JP.yml (Portuguese) --- locales/pt-PT.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 61fa70986..17bf49334 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From c9c2e36540acbe7f1184dacaf965c786912b7839 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:22 +0900 Subject: [PATCH 058/429] New translations ja-JP.yml (Russian) --- locales/ru-RU.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 235ae3b3d..4e06bc889 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From 9450e567c6a1b999e4062e0f66baa847e3d5b1d7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:27 +0900 Subject: [PATCH 059/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index fe441b255..1758082b9 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From 7c6088b2b458fa84c9c6a69830f1b3132f341325 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:32 +0900 Subject: [PATCH 060/429] New translations ja-JP.yml (Japanese, Kansai) --- locales/ja-KS.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index add497eb9..064d2c523 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つからへん!" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password} 」やで" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From 6128e62751f3606dc4dddff6edfab09994ab8d55 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:36 +0900 Subject: [PATCH 061/429] New translations ja-JP.yml (Dutch) --- locales/nl-NL.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index 14252b3ef..21d3841cb 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From 1f5e3040ed8eaa18d5e24827d16b0aa1dfa32cd3 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:23:40 +0900 Subject: [PATCH 062/429] New translations ja-JP.yml (Norwegian) --- locales/no-NO.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/locales/no-NO.yml b/locales/no-NO.yml index b272f834c..44b3d60a0 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -1134,14 +1134,19 @@ admin/views/users.vue: user-not-found: "ユーザーが見つかりません" lookup: "照会" reset-password: "パスワードをリセット" + reset-password-confirm: "パスワードをリセットしますか?" password-updated: "パスワードは現在「{password}」です" suspend: "凍結" + suspend-confirm: "凍結しますか?" suspended: "凍結しました" unsuspend: "凍結の解除" + unsuspend-confirm: "凍結を解除しますか?" unsuspended: "凍結を解除しました" verify: "公式アカウントにする" + verify-confirm: "公式アカウントにしますか?" verified: "公式アカウントにしました" unverify: "公式アカウントを解除する" + unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" users: title: "ユーザー" From a0f8c7e94ee2de826326a630c783d5c8c39825a7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:47:56 +0900 Subject: [PATCH 063/429] Resolve #2253 --- CHANGELOG.md | 1 + src/client/app/common/scripts/note-subscriber.ts | 1 + src/services/note/delete.ts | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1ba13339..87343664e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ unreleased * 返信するときにCWを維持するかどうか設定できるように * 外部サービス認証情報の配信 * 管理画面のモデレーションのUIを強化 +* 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 * イタリック構文の判定の改善 * テーマが反映されないことがある問題を修正 * ホームにフォロワー限定投稿が表示されない問題を修正 diff --git a/src/client/app/common/scripts/note-subscriber.ts b/src/client/app/common/scripts/note-subscriber.ts index 9545b5406..c2b4dd6df 100644 --- a/src/client/app/common/scripts/note-subscriber.ts +++ b/src/client/app/common/scripts/note-subscriber.ts @@ -133,6 +133,7 @@ export default prop => ({ case 'deleted': { Vue.set(this.$_ns_target, 'deletedAt', body.deletedAt); + Vue.set(this.$_ns_target, 'renote', null); this.$_ns_target.text = null; this.$_ns_target.tags = []; this.$_ns_target.fileIds = []; diff --git a/src/services/note/delete.ts b/src/services/note/delete.ts index 9709eeaf5..e8ce181d5 100644 --- a/src/services/note/delete.ts +++ b/src/services/note/delete.ts @@ -30,12 +30,25 @@ export default async function(user: IUser, note: INote) { text: null, tags: [], fileIds: [], + renoteId: null, poll: null, geo: null, cw: null } }); + if (note.renoteId) { + Note.update({ _id: note.renoteId }, { + $inc: { + renoteCount: -1, + score: -1 + }, + $pull: { + _quoteIds: note._id + } + }); + } + publishNoteStream(note._id, 'deleted', { deletedAt: deletedAt }); From 0854f2e180be7b2ed4e7ea68d7f45cc156a95627 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Sat, 26 Jan 2019 17:53:35 +0900 Subject: [PATCH 064/429] =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E3=81=8B=E3=82=89=E3=83=AA=E3=83=A2=E3=83=BC=E3=83=88=E3=83=A6?= =?UTF-8?q?=E3=83=BC=E3=82=B6=E3=83=BC=E6=83=85=E5=A0=B1=E3=82=92=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=20(#3992)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/ja-JP.yml | 2 + src/client/app/admin/views/users.vue | 16 ++++++- src/server/api/common/getters.ts | 42 +++++++++++++++++++ .../api/endpoints/admin/update-remote-user.ts | 36 ++++++++++++++++ 4 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 src/server/api/endpoints/admin/update-remote-user.ts diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 01b1dfa2c..1735376b2 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1280,6 +1280,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: diff --git a/src/client/app/admin/views/users.vue b/src/client/app/admin/views/users.vue index 6b829a2f8..09d074eee 100644 --- a/src/client/app/admin/views/users.vue +++ b/src/client/app/admin/views/users.vue @@ -20,6 +20,7 @@ {{ $t('suspend') }} {{ $t('unsuspend') }} + {{ $t('update-remote-user') }} @@ -65,7 +66,7 @@ import Vue from 'vue'; import i18n from '../../i18n'; import parseAcct from "../../../../misc/acct/parse"; -import { faCertificate, faUsers, faTerminal, faSearch, faKey } from '@fortawesome/free-solid-svg-icons'; +import { faCertificate, faUsers, faTerminal, faSearch, faKey, faSync } from '@fortawesome/free-solid-svg-icons'; import { faSnowflake } from '@fortawesome/free-regular-svg-icons'; import XUser from './users.user.vue'; @@ -89,7 +90,7 @@ export default Vue.extend({ offset: 0, users: [], existMore: false, - faTerminal, faCertificate, faUsers, faSnowflake, faSearch, faKey + faTerminal, faCertificate, faUsers, faSnowflake, faSearch, faKey, faSync }; }, @@ -265,6 +266,17 @@ export default Vue.extend({ this.refreshUser(); }, + async updateRemoteUser() { + this.$root.api('admin/update-remote-user', { userId: this.user._id }).then(res => { + this.$root.dialog({ + type: 'success', + text: this.$t('remote-user-updated') + }); + }); + + this.refreshUser(); + }, + async getConfirmed(text: string): Promise { const confirm = await this.$root.dialog({ type: 'warning', diff --git a/src/server/api/common/getters.ts b/src/server/api/common/getters.ts index 1fce58b20..1cd054cab 100644 --- a/src/server/api/common/getters.ts +++ b/src/server/api/common/getters.ts @@ -1,5 +1,6 @@ import * as mongo from 'mongodb'; import Note from "../../../models/note"; +import User, { isRemoteUser, isLocalUser } from "../../../models/user"; /** * Get valied note for API processing @@ -16,3 +17,44 @@ export async function getValiedNote(noteId: mongo.ObjectID) { return note; } + +/** + * Get user for API processing + */ +export async function getUser(userId: mongo.ObjectID) { + const user = await User.findOne({ + _id: userId + }); + + if (user == null) { + throw 'user not found'; + } + + return user; +} + +/** + * Get remote user for API processing + */ +export async function getRemoteUser(userId: mongo.ObjectID) { + const user = await getUser(userId); + + if (!isRemoteUser(user)) { + throw 'user is not a remote user'; + } + + return user; +} + +/** + * Get local user for API processing + */ +export async function getLocalUser(userId: mongo.ObjectID) { + const user = await getUser(userId); + + if (!isLocalUser(user)) { + throw 'user is not a local user'; + } + + return user; +} diff --git a/src/server/api/endpoints/admin/update-remote-user.ts b/src/server/api/endpoints/admin/update-remote-user.ts new file mode 100644 index 000000000..9288ce1fb --- /dev/null +++ b/src/server/api/endpoints/admin/update-remote-user.ts @@ -0,0 +1,36 @@ +import * as mongo from 'mongodb'; +import $ from 'cafy'; +import ID, { transform } from '../../../../misc/cafy-id'; +import define from '../../define'; +import { getRemoteUser } from '../../common/getters'; +import { updatePerson } from '../../../../remote/activitypub/models/person'; + +export const meta = { + desc: { + 'ja-JP': '指定されたリモートユーザーの情報を更新します。', + 'en-US': 'Update specified remote user information.' + }, + + requireCredential: true, + requireModerator: true, + + params: { + userId: { + validator: $.type(ID), + transform: transform, + desc: { + 'ja-JP': '対象のユーザーID', + 'en-US': 'The user ID which you want to update' + } + }, + } +}; + +export default define(meta, (ps) => new Promise((res, rej) => { + updatePersonById(ps.userId).then(() => res(), e => rej(e)); +})); + +async function updatePersonById(userId: mongo.ObjectID) { + const user = await getRemoteUser(userId); + await updatePerson(user.uri); +} From 6f6974a6ae9177acdb1bfdc6f19f3a6f36b3999b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 17:54:00 +0900 Subject: [PATCH 065/429] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87343664e..b06c3f63c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ unreleased * 返信するときにCWを維持するかどうか設定できるように * 外部サービス認証情報の配信 * 管理画面のモデレーションのUIを強化 +* 管理画面からリモートユーザーの情報を更新できるように * 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 * イタリック構文の判定の改善 * テーマが反映されないことがある問題を修正 From d717b1d4043866d67395a31c15bc7c739af72ba0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:02:59 +0900 Subject: [PATCH 066/429] New translations ja-JP.yml (Catalan) --- locales/ca-ES.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 25368a4d3..3901a4e90 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From e5fcb2aea027d6177349d8df4ba93b454189dbbc Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:03 +0900 Subject: [PATCH 067/429] New translations ja-JP.yml (Chinese Simplified) --- locales/zh-CN.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index fafef699c..a93b8c798 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "解除账户认证" unverify-confirm: "公式アカウントを解除しますか?" unverified: "该帐户未经认证" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "用户" sort: From 5eeec0becb1a596dc2b6f8375c583c770748411b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:08 +0900 Subject: [PATCH 068/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/en-US.yml b/locales/en-US.yml index 5e48e0d56..615f3ba22 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "Unverify account" unverify-confirm: "公式アカウントを解除しますか?" unverified: "The account is now being unverified" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "Users" sort: From 456b01590b9c15c07d75380055d18dff2a94c830 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:13 +0900 Subject: [PATCH 069/429] New translations ja-JP.yml (French) --- locales/fr-FR.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 5ab41af68..cf3ab8fc7 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "Enlever la vérification du compte" unverify-confirm: "公式アカウントを解除しますか?" unverified: "Ce compte n'est plus vérifié" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "Utilisateurs" sort: From bf00b59339a1bd5569d0eaf2436e9bf1663b50f6 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:17 +0900 Subject: [PATCH 070/429] New translations ja-JP.yml (German) --- locales/de-DE.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 89e545e2f..0be4b072b 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From ec50240a03e9b4cb092c7126c6d028292b93c4a1 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:21 +0900 Subject: [PATCH 071/429] New translations ja-JP.yml (Italian) --- locales/it-IT.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 75729774e..92a3ec84c 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From ff2fc2267d3b5b9e0fb867300a44290cec68f671 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:26 +0900 Subject: [PATCH 072/429] New translations ja-JP.yml (Korean) --- locales/ko-KR.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 2dab99a98..bb04a67d0 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "공식 계정 해제" unverify-confirm: "公式アカウントを解除しますか?" unverified: "공식 계정을 해제하였습니다" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "사용자" sort: From 990bc976de95de6f9614c995ad9777b00d3d5567 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:30 +0900 Subject: [PATCH 073/429] New translations ja-JP.yml (Polish) --- locales/pl-PL.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 5ff7d8d6e..ec1c6214e 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "Użytkownicy" sort: From 3781f07c49bfbaee0c4c99955bf00ba0c440e2f0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:35 +0900 Subject: [PATCH 074/429] New translations ja-JP.yml (Portuguese) --- locales/pt-PT.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 17bf49334..27549d3f7 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From a82eeb7e9259111be603d833b4f9d61ae95a9fc0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:39 +0900 Subject: [PATCH 075/429] New translations ja-JP.yml (Russian) --- locales/ru-RU.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 4e06bc889..2f7980dcb 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From a45abf858fe30d7a5b123bac8996e36416c321ac Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:45 +0900 Subject: [PATCH 076/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 1758082b9..8ace707e5 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From a83c3557fce0261c93effed5fc9d6e8c93a5614a Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:50 +0900 Subject: [PATCH 077/429] New translations ja-JP.yml (Japanese, Kansai) --- locales/ja-KS.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 064d2c523..d3270f1aa 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From b8f60527f614a1199282017c4559b920c3190cb8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:03:57 +0900 Subject: [PATCH 078/429] New translations ja-JP.yml (Dutch) --- locales/nl-NL.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index 21d3841cb..d6f2c8789 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From 3ab5d2e0e1bae6b6420e58227516de2566fd1c3d Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 18:04:03 +0900 Subject: [PATCH 079/429] New translations ja-JP.yml (Norwegian) --- locales/no-NO.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/locales/no-NO.yml b/locales/no-NO.yml index 44b3d60a0..ffade4a24 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -1148,6 +1148,8 @@ admin/views/users.vue: unverify: "公式アカウントを解除する" unverify-confirm: "公式アカウントを解除しますか?" unverified: "公式アカウントを解除しました" + update-remote-user: "リモートユーザー情報の更新" + remote-user-updated: "リモートユーザー情報を更新しました" users: title: "ユーザー" sort: From f9e6c84d00c2506439149e0cdfe82aa75f9c7582 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 19:22:23 +0900 Subject: [PATCH 080/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 615f3ba22..90f191157 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1134,22 +1134,22 @@ admin/views/users.vue: user-not-found: "User not found" lookup: "Look up" reset-password: "Reset password" - reset-password-confirm: "パスワードをリセットしますか?" + reset-password-confirm: "Do you want to reset your password?" password-updated: "The password is now \"{password}\"" suspend: "Suspend" - suspend-confirm: "凍結しますか?" + suspend-confirm: "Do you want to suspend this account?" suspended: "Successfully suspended." unsuspend: "Unsuspend" - unsuspend-confirm: "凍結を解除しますか?" + unsuspend-confirm: "Are you sure you want to unsuspend this account?" unsuspended: "The user has successfully unsuspended." verify: "Verify account" - verify-confirm: "公式アカウントにしますか?" + verify-confirm: "Do you want this to be a verified account?" verified: "The account is now being verified" unverify: "Unverify account" - unverify-confirm: "公式アカウントを解除しますか?" + unverify-confirm: "Do you want to remove the 'verified account' designation?" unverified: "The account is now being unverified" - update-remote-user: "リモートユーザー情報の更新" - remote-user-updated: "リモートユーザー情報を更新しました" + update-remote-user: "Update information about remote user" + remote-user-updated: "The information regarding the remote user has been updated." users: title: "Users" sort: From 5ae576bad1cec2c7430864422260784503bd33e9 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 26 Jan 2019 20:59:14 +0900 Subject: [PATCH 081/429] :art: --- .../choose-file-from-drive-window.vue | 189 +++++++----------- .../choose-folder-from-drive-window.vue | 104 +++------- 2 files changed, 92 insertions(+), 201 deletions(-) diff --git a/src/client/app/desktop/views/components/choose-file-from-drive-window.vue b/src/client/app/desktop/views/components/choose-file-from-drive-window.vue index 8aa7fe167..7c69f3aa7 100644 --- a/src/client/app/desktop/views/components/choose-file-from-drive-window.vue +++ b/src/client/app/desktop/views/components/choose-file-from-drive-window.vue @@ -1,21 +1,23 @@ @@ -60,120 +62,67 @@ export default Vue.extend({ }); - diff --git a/src/client/app/desktop/views/components/choose-folder-from-drive-window.vue b/src/client/app/desktop/views/components/choose-folder-from-drive-window.vue index e5ea7bea1..8633b86e4 100644 --- a/src/client/app/desktop/views/components/choose-folder-from-drive-window.vue +++ b/src/client/app/desktop/views/components/choose-folder-from-drive-window.vue @@ -1,17 +1,19 @@ @@ -36,79 +38,19 @@ export default Vue.extend({ }); - From 94154a1aa29a85714bc9334bfb7d380059a34a59 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Sat, 26 Jan 2019 21:10:25 +0900 Subject: [PATCH 082/429] =?UTF-8?q?=E3=83=86=E3=83=BC=E3=83=9E=E3=81=AB?= =?UTF-8?q?=E3=82=88=E3=81=A3=E3=81=A6=E3=82=B3=E3=83=BC=E3=83=89=E3=81=8C?= =?UTF-8?q?=E8=A6=8B=E3=81=A5=E3=82=89=E3=81=84=E3=81=AE=E3=82=92=E5=B0=91?= =?UTF-8?q?=E3=81=97=E6=94=B9=E5=96=84=20(#3993)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/common/views/components/misskey-flavored-markdown.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/app/common/views/components/misskey-flavored-markdown.vue b/src/client/app/common/views/components/misskey-flavored-markdown.vue index 6fc2aa795..33e3679d4 100644 --- a/src/client/app/common/views/components/misskey-flavored-markdown.vue +++ b/src/client/app/common/views/components/misskey-flavored-markdown.vue @@ -36,9 +36,9 @@ export default Vue.extend({ >>> code padding 4px 8px margin 0 0.5em - font-size 80% + font-size 90% color #525252 - background rgba(0, 0, 0, 0.05) + background var(--bg) border-radius 2px >>> pre > code From be5714a9f1993356dff909b3f218756fb3c028e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Sun, 27 Jan 2019 12:36:47 +0900 Subject: [PATCH 083/429] Update qrcode requirement from 1.3.2 to 1.3.3 (#3988) Updates the requirements on [qrcode](https://github.com/soldair/node-qrcode) to permit the latest version. - [Release notes](https://github.com/soldair/node-qrcode/releases) - [Changelog](https://github.com/soldair/node-qrcode/blob/master/CHANGELOG.md) - [Commits](https://github.com/soldair/node-qrcode/commits/v1.3.3) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5f7c704fb..d5afc934b 100644 --- a/package.json +++ b/package.json @@ -184,7 +184,7 @@ "promise-sequential": "1.1.1", "pug": "2.0.3", "punycode": "2.1.1", - "qrcode": "1.3.2", + "qrcode": "1.3.3", "randomcolor": "0.5.3", "ratelimiter": "3.2.0", "recaptcha-promise": "0.1.3", From 895e80d7946b824cd806b5257cf8e812c8e4d5d2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:11:47 +0900 Subject: [PATCH 084/429] New translations ja-JP.yml (French) --- locales/fr-FR.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index cf3ab8fc7..c097872de 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -788,7 +788,7 @@ desktop/views/components/settings.vue: auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。" deck-nav: "Deck sans tansitions" deck-nav-desc: "Vous obtenez une colonne temporaire sans transitions dans la page pendant la navigation, lors de l’utilisation du Deck." - keep-cw: "CW保持" + keep-cw: "Maintenir l'avertissement de contenu" keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" deck-default: "Utiliser le Deck comme IU par défaut" display: "Affichage et design" @@ -1137,19 +1137,19 @@ admin/views/users.vue: reset-password-confirm: "パスワードをリセットしますか?" password-updated: "Le mot de passe est « {password} »" suspend: "Suspendre" - suspend-confirm: "凍結しますか?" + suspend-confirm: "Désirez-vous suspendre ce compte ?" suspended: "Suspendu avec succès." unsuspend: "Suspension levée" - unsuspend-confirm: "凍結を解除しますか?" + unsuspend-confirm: "Souhaiteriez-vous ne plus suspendre ce compte ?" unsuspended: "La suspension de l’utilisateur a été levée avec succès" verify: "Vérification du compte" - verify-confirm: "公式アカウントにしますか?" + verify-confirm: "Souhaiteriez-vous rendre votre compte comme étant un compte vérifié ?" verified: "Le compte a été vérifié" unverify: "Enlever la vérification du compte" unverify-confirm: "公式アカウントを解除しますか?" unverified: "Ce compte n'est plus vérifié" - update-remote-user: "リモートユーザー情報の更新" - remote-user-updated: "リモートユーザー情報を更新しました" + update-remote-user: "Mettre à jour les informations de l’utilisateur·rice distant·e" + remote-user-updated: "Les informations de l’utilisateur·rice distant·e ont étés mis à jour" users: title: "Utilisateurs" sort: @@ -1476,7 +1476,7 @@ mobile/views/pages/settings.vue: notification-position-top: "en haut" behavior: "Comportement" fetch-on-scroll: "Chargement lors du défilement" - keep-cw: "CW保持" + keep-cw: "Garder l'avertissement de contenu" note-visibility: "Visibilité de la publication" default-note-visibility: "Visibilité par défaut" remember-note-visibility: "Se souvenir du mode de visibilité de la publication" From 7dcea49be74784132469e027845fc68557aa8dd4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:29:53 +0900 Subject: [PATCH 085/429] Refactoring --- locales/ja-JP.yml | 12 +-- .../views/components/media-image.vue | 12 ++- .../common/views/components/media-list.vue | 6 +- .../app/desktop/views/components/index.ts | 2 - .../desktop/views/components/media-image.vue | 81 ------------------- .../app/mobile/views/components/index.ts | 2 - 6 files changed, 17 insertions(+), 98 deletions(-) rename src/client/app/{mobile => common}/views/components/media-image.vue (84%) delete mode 100644 src/client/app/desktop/views/components/media-image.vue diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 1735376b2..91a6add5d 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -730,10 +730,6 @@ desktop/views/components/drive.vue: upload: "ファイルをアップロード" url-upload: "URLからアップロード" -desktop/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" - desktop/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" @@ -980,6 +976,10 @@ desktop/views/components/settings.2fa.vue: failed: "設定に失敗しました。トークンに誤りがないかご確認ください。" info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" + common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1493,10 +1493,6 @@ mobile/views/components/drive.file-detail.vue: mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" - mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" diff --git a/src/client/app/mobile/views/components/media-image.vue b/src/client/app/common/views/components/media-image.vue similarity index 84% rename from src/client/app/mobile/views/components/media-image.vue rename to src/client/app/common/views/components/media-image.vue index dbb275b51..01187465f 100644 --- a/src/client/app/mobile/views/components/media-image.vue +++ b/src/client/app/common/views/components/media-image.vue @@ -5,16 +5,21 @@ {{ $t('click-to-show') }} - + - - diff --git a/src/client/app/mobile/views/components/index.ts b/src/client/app/mobile/views/components/index.ts index 9a410e827..351aaea9f 100644 --- a/src/client/app/mobile/views/components/index.ts +++ b/src/client/app/mobile/views/components/index.ts @@ -3,7 +3,6 @@ import Vue from 'vue'; import ui from './ui.vue'; import note from './note.vue'; import notes from './notes.vue'; -import mediaImage from './media-image.vue'; import mediaVideo from './media-video.vue'; import notePreview from './note-preview.vue'; import subNoteContent from './sub-note-content.vue'; @@ -24,7 +23,6 @@ import postForm from './post-form.vue'; Vue.component('mk-ui', ui); Vue.component('mk-note', note); Vue.component('mk-notes', notes); -Vue.component('mk-media-image', mediaImage); Vue.component('mk-media-video', mediaVideo); Vue.component('mk-note-preview', notePreview); Vue.component('mk-sub-note-content', subNoteContent); From 717f66b4a6c23111360a3392b71400924b900f7c Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:31:58 +0900 Subject: [PATCH 086/429] New translations ja-JP.yml (Catalan) --- locales/ca-ES.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 3901a4e90..a687e0d26 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "フォルダーを作成" upload: "ファイルをアップロード" url-upload: "URLからアップロード" -desktop/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" desktop/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "設定が完了しました!" failed: "設定に失敗しました。トークンに誤りがないかご確認ください。" info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "閲覧注意" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" From fffce73d3e0b756c213aae5b3534cb64874d409f Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:03 +0900 Subject: [PATCH 087/429] New translations ja-JP.yml (Chinese Simplified) --- locales/zh-CN.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index a93b8c798..3eed23f2c 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "创建文件夹" upload: "上传文件" url-upload: "从URL上传" -desktop/views/components/media-image.vue: - sensitive: "阅读注意" - click-to-show: "点击以显示" desktop/views/components/media-video.vue: sensitive: "阅读注意" click-to-show: "点击以显示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "设置完成" failed: "设置失败, 请确保您的密钥是正确的。" info: "从下次登录Misskey时,您的设备上显示的令牌以及密码也是必需的。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "要访问API,请将此标记设置为请求参数的关键字“i”。" caution: "请勿将此令牌输入任何应用,也不要将此令牌告诉其他人,否则您的账户可能会受到损害。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "阅读注意" mark-as-sensitive: "标记为“敏感”" unmark-as-sensitive: "取消标记为“敏感”" -mobile/views/components/media-image.vue: - sensitive: "阅读注意" - click-to-show: "点击以显示" mobile/views/components/media-video.vue: sensitive: "阅读注意" click-to-show: "点击以显示" From 0352fd0acdc35520d3cc933a8dccb4eff537e766 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:07 +0900 Subject: [PATCH 088/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 90f191157..bd9126b56 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "Create a folder" upload: "Upload a file" url-upload: "Upload from a URL" -desktop/views/components/media-image.vue: - sensitive: "NSFW" - click-to-show: "Click to show" desktop/views/components/media-video.vue: sensitive: "The content is NSFW" click-to-show: "Click to show" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "Settings saved!" failed: "Failed to setup. Please ensure that the token is correct." info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password." +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "To access the API, set this token as the key 'i' of request parameters." caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised." @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "NSFW" mark-as-sensitive: "Mark as 'sensitive'" unmark-as-sensitive: "Unmark as 'sensitive'" -mobile/views/components/media-image.vue: - sensitive: "NSFW" - click-to-show: "Click to show" mobile/views/components/media-video.vue: sensitive: "The content is NSFW" click-to-show: "Click to show" From ef92578555f5ffb33d0f43cc3ca3a8bf489b04dc Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:11 +0900 Subject: [PATCH 089/429] New translations ja-JP.yml (French) --- locales/fr-FR.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index c097872de..9fbde4856 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "Créer un dossier" upload: "Téléverser un fichier" url-upload: "Téléverser à partir d’une URL" -desktop/views/components/media-image.vue: - sensitive: "Le contenu est NSFW" - click-to-show: "Cliquer pour afficher" desktop/views/components/media-video.vue: sensitive: "Le contenu est NSFW" click-to-show: "Cliquer pour afficher" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "Sauvegarde des paramètres avec succès !" failed: "L’opération a échoué. Veuillez vous assurer que le jeton a été saisi correctement." info: "À partir de maintenant, à chaque fois que vous vous connectez entrez votre mot de passe ainsi que le jeton généré sur votre appareil." +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "Pour accéder à l'API, définissez ce jeton comme la clé de « i » dans les paramètres de requête." caution: "Merci de ne pas introduire ce jeton dans aucune application ou le divulguer à quiconque. Ceci risque de compromettre votre compte." @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "CW" mark-as-sensitive: "Marquer comme sensible" unmark-as-sensitive: "Ne pas marquer comme sensible" -mobile/views/components/media-image.vue: - sensitive: "Le contenu est NSFW" - click-to-show: "Cliquer pour afficher" mobile/views/components/media-video.vue: sensitive: "Le contenu est NSFW" click-to-show: "Cliquer pour afficher" From 65ee1711e5c64e221a3064b74936753d79e49733 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:16 +0900 Subject: [PATCH 090/429] New translations ja-JP.yml (German) --- locales/de-DE.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 0be4b072b..27365da18 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "Ein Verzeichnis erstellen" upload: "Eine Datei hochladen" url-upload: "Von einer URL hochladen" -desktop/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" desktop/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "設定が完了しました!" failed: "設定に失敗しました。トークンに誤りがないかご確認ください。" info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "閲覧注意" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" From e806f33f9fdc2a84659db5c70d834dca4ce2ef0d Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:23 +0900 Subject: [PATCH 091/429] New translations ja-JP.yml (Italian) --- locales/it-IT.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 92a3ec84c..d6ce4b38d 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "フォルダーを作成" upload: "ファイルをアップロード" url-upload: "URLからアップロード" -desktop/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" desktop/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "設定が完了しました!" failed: "設定に失敗しました。トークンに誤りがないかご確認ください。" info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "閲覧注意" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" From 714446fb46bb4f481f85e6d63b66c5c21d984109 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:27 +0900 Subject: [PATCH 092/429] New translations ja-JP.yml (Korean) --- locales/ko-KR.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index bb04a67d0..0872275ea 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "폴더 만들기" upload: "파일 업로드" url-upload: "URL에서 업로드" -desktop/views/components/media-image.vue: - sensitive: "열람주의" - click-to-show: "클릭하여 표시" desktop/views/components/media-video.vue: sensitive: "열람주의" click-to-show: "클릭하여 표시" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "설정이 완료되었습니다!" failed: "설정에 실패했습니다. 토큰이 잘못되었는지 확인해주십시오." info: "다음 로그인부터는 이와 동일하게 비밀번호에 더해 장치에 표시된 토큰을 입력합니다." +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "API를 사용하려면 위의 토큰을 \"i\" 라는 키의 값으로 매개변수를 추가하여 요청합니다." caution: "계정을 부정 사용할 가능성이 있으므로, 이 토큰은 제 3자에게 알려주지 마십시오 (앱 등에 붙여넣지 마십시오)." @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "열람주의" mark-as-sensitive: "열람주의로 설정" unmark-as-sensitive: "열람주의 해제" -mobile/views/components/media-image.vue: - sensitive: "열람주의" - click-to-show: "클릭하여 표시" mobile/views/components/media-video.vue: sensitive: "열람주의" click-to-show: "클릭하여 표시" From 3940a9a44745d761c1c31d2c9be88dfe00c218d8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:34 +0900 Subject: [PATCH 093/429] New translations ja-JP.yml (Polish) --- locales/pl-PL.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index ec1c6214e..50b85d6fb 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "Utwórz katalog" upload: "Wyślij plik" url-upload: "Wyślij z adresu URL" -desktop/views/components/media-image.vue: - sensitive: "To jest zawartość NSFW" - click-to-show: "Naciśnij aby wyświetlić" desktop/views/components/media-video.vue: sensitive: "To jest zawartość NSFW" click-to-show: "Naciśnij aby wyświetlić" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "Pomyślnie ukończono konfigurację!" failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token." info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey." +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań." caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce." @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "NSFW" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "To jest zawartość NSFW" - click-to-show: "Naciśnij aby wyświetlić" mobile/views/components/media-video.vue: sensitive: "To jest zawartość NSFW" click-to-show: "Naciśnij aby wyświetlić" From bfadb4026d67c476d3bd7804cb1e61e904717369 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:40 +0900 Subject: [PATCH 094/429] New translations ja-JP.yml (Portuguese) --- locales/pt-PT.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 27549d3f7..03185360f 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "フォルダーを作成" upload: "ファイルをアップロード" url-upload: "URLからアップロード" -desktop/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" desktop/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "設定が完了しました!" failed: "設定に失敗しました。トークンに誤りがないかご確認ください。" info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "閲覧注意" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" From 171651484aec907d851f8a44d671c7e413320dc8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:45 +0900 Subject: [PATCH 095/429] New translations ja-JP.yml (Russian) --- locales/ru-RU.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 2f7980dcb..0d5382ff2 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "フォルダーを作成" upload: "ファイルをアップロード" url-upload: "URLからアップロード" -desktop/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" desktop/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "設定が完了しました!" failed: "設定に失敗しました。トークンに誤りがないかご確認ください。" info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "閲覧注意" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" From 9ac2913afc50419e801c0d040bfde23829c20728 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:50 +0900 Subject: [PATCH 096/429] New translations ja-JP.yml (Spanish) --- locales/es-ES.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 8ace707e5..41906b52b 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "Crear una carpeta" upload: "Subir fichero" url-upload: "Subir desde una URL" -desktop/views/components/media-image.vue: - sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')" - click-to-show: "Click para mostrar" desktop/views/components/media-video.vue: sensitive: "Este contenido no es apropiado para ver en el trabajo" click-to-show: "Click para mostrar" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "¡Configuraciones guardadas!" failed: "Error al configurar. Por favor asegúrate de que el token es correcto." info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "閲覧注意" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" From 870ab3d3b62c01123bc64444118e9d835d415c12 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:54 +0900 Subject: [PATCH 097/429] New translations ja-JP.yml (Japanese, Kansai) --- locales/ja-KS.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index d3270f1aa..4e6cbbd22 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "フォルダー作る" upload: "ファイル上げる" url-upload: "URLつこうて上げる" -desktop/views/components/media-image.vue: - sensitive: "ちょっと見せられへんわ" - click-to-show: "クリックして見せるで" desktop/views/components/media-video.vue: sensitive: "ちょっと見せられへんわ" click-to-show: "クリックして見せるで" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "設定が完了したで!" failed: "なんか設定に失敗したで。トークンを間違えとらんか確認してや。" info: "次のサインインからは、パスワードに加えてデバイスに出とるトークンを入力してな。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "API使うんやったらこのトークンを「i」っちゅうパラメータにくっつけてリクエストできるで。" caution: "アカウント勝手にいじられるかも知れんから、このトークンは教えたらあかんし、アプリにも書いたらあかんで(これはフリちゃうで)" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "ちょっと見せられへんわ" mark-as-sensitive: "見たらあかん感じにしとく" unmark-as-sensitive: "やっぱ見せたるわ" -mobile/views/components/media-image.vue: - sensitive: "見たらあかんで" - click-to-show: "押してみ、見せたるわ" mobile/views/components/media-video.vue: sensitive: "ちょっと見せられへんわ" click-to-show: "押してみ、見せたるわ" From 405f98d6d1c31af6299fed10022813aca2aa525f Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:32:58 +0900 Subject: [PATCH 098/429] New translations ja-JP.yml (Dutch) --- locales/nl-NL.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index d6f2c8789..02ad030e2 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "Map creëren" upload: "Bestand uploaden" url-upload: "Uploaden via URL" -desktop/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" desktop/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "Instellen voltooid!" failed: "Instellen mislukt. Zorg ervoor dat de sleutel juist is." info: "Vanaf nu moet je ook de op je apparaat getoonde sleutel tonen bij het inloggen op Misskey." +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "閲覧注意" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" From e4c0c8869e3103e6ab5f3cc62c81148f622fd7a0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:33:03 +0900 Subject: [PATCH 099/429] New translations ja-JP.yml (Norwegian) --- locales/no-NO.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/locales/no-NO.yml b/locales/no-NO.yml index ffade4a24..ddc270c2e 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -658,9 +658,6 @@ desktop/views/components/drive.vue: create-folder: "フォルダーを作成" upload: "ファイルをアップロード" url-upload: "URLからアップロード" -desktop/views/components/media-image.vue: - sensitive: "NSFW" - click-to-show: "クリックして表示" desktop/views/components/media-video.vue: sensitive: "Innholdet er NSFW" click-to-show: "クリックして表示" @@ -875,6 +872,9 @@ desktop/views/components/settings.2fa.vue: success: "設定が完了しました!" failed: "設定に失敗しました。トークンに誤りがないかご確認ください。" info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。" +common/views/components/media-image.vue: + sensitive: "閲覧注意" + click-to-show: "クリックして表示" common/views/components/api-settings.vue: intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。" caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。" @@ -1329,9 +1329,6 @@ mobile/views/components/drive.file-detail.vue: nsfw: "NSFW" mark-as-sensitive: "閲覧注意に設定" unmark-as-sensitive: "閲覧注意を解除" -mobile/views/components/media-image.vue: - sensitive: "NSFW" - click-to-show: "クリックして表示" mobile/views/components/media-video.vue: sensitive: "Innholdet er NSFW" click-to-show: "クリックして表示" From 085325e65fa47c9dd9f2d261faeb7775f9f2486f Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:40:38 +0900 Subject: [PATCH 100/429] [MFM] Improve title syntax detection --- CHANGELOG.md | 1 + src/mfm/parser.ts | 1 + test/mfm.ts | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b06c3f63c..6325663fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ unreleased * 管理画面からリモートユーザーの情報を更新できるように * 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 * イタリック構文の判定の改善 +* タイトル構文の判定の改善 * テーマが反映されないことがある問題を修正 * ホームにフォロワー限定投稿が表示されない問題を修正 * 返信一覧を取得すると非公開投稿も取得されてしまう問題を修正 diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index b86e1d555..5572e26f8 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -361,6 +361,7 @@ const mfm = P.createLanguage({ const match = text.match(/^((【|\[)(.+?)(】|]))(\n|$)/); if (!match) return P.makeFailure(i, 'not a title'); const q = match[1].trim().substring(1, match[1].length - 1); + if (q.includes('】')) return P.makeFailure(i, 'not a title'); const contents = P.alt( r.big, r.small, diff --git a/test/mfm.ts b/test/mfm.ts index a4b4a1397..2124f592f 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -894,6 +894,13 @@ describe('MFM', () => { text('after') ]); }); + + it('ignore multiple title blocks', () => { + const tokens = analyze('【foo】bar【baz】'); + assert.deepStrictEqual(tokens, [ + text('【foo】bar【baz】') + ]); + }); }); describe('center', () => { From 71210595d2fade60c6f84041402d5627ac700928 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:48:56 +0900 Subject: [PATCH 101/429] [Test] Add a MFM test --- test/mfm.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/mfm.ts b/test/mfm.ts index 2124f592f..8eadfc728 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -901,6 +901,13 @@ describe('MFM', () => { text('【foo】bar【baz】') ]); }); + + it('disallow linebreak in title', () => { + const tokens = analyze('【foo\nbar】'); + assert.deepStrictEqual(tokens, [ + text('【foo\nbar】') + ]); + }); }); describe('center', () => { From 54ce19bd567504c029e60f7baddd53ffd8bfcbd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 27 Jan 2019 13:50:47 +0900 Subject: [PATCH 102/429] Update parser.ts (#3999) * Update parser.ts * Update parser.ts * Update parser.ts --- src/mfm/parser.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 5572e26f8..560e226af 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -358,10 +358,9 @@ const mfm = P.createLanguage({ title: r => newline.then(P((input, i) => { const text = input.substr(i); - const match = text.match(/^((【|\[)(.+?)(】|]))(\n|$)/); + const match = text.match(/^([【\[]([^【\[】\]\n]+?)[】\]])(\n|$)/); if (!match) return P.makeFailure(i, 'not a title'); - const q = match[1].trim().substring(1, match[1].length - 1); - if (q.includes('】')) return P.makeFailure(i, 'not a title'); + const q = match[2].trim(); const contents = P.alt( r.big, r.small, From 50b809784fca1b9933fd8b1ef766228c959b5c45 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 13:55:11 +0900 Subject: [PATCH 103/429] Improve readability and some cleanups --- test/mfm.ts | 87 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 67 insertions(+), 20 deletions(-) diff --git a/test/mfm.ts b/test/mfm.ts index 8eadfc728..a5ea4b293 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -152,9 +152,19 @@ describe('MFM', () => { it('can be analyzed', () => { const tokens = analyze('@himawari @hima_sub@namori.net お腹ペコい :cat: #yryr'); assert.deepStrictEqual(tokens, [ - leaf('mention', { acct: '@himawari', canonical: '@himawari', username: 'himawari', host: null }), + leaf('mention', { + acct: '@himawari', + canonical: '@himawari', + username: 'himawari', + host: null + }), text(' '), - leaf('mention', { acct: '@hima_sub@namori.net', canonical: '@hima_sub@namori.net', username: 'hima_sub', host: 'namori.net' }), + leaf('mention', { + acct: '@hima_sub@namori.net', + canonical: '@hima_sub@namori.net', + username: 'hima_sub', + host: 'namori.net' + }), text(' お腹ペコい '), leaf('emoji', { name: 'cat' }), text(' '), @@ -280,7 +290,12 @@ describe('MFM', () => { it('local', () => { const tokens = analyze('@himawari foo'); assert.deepStrictEqual(tokens, [ - leaf('mention', { acct: '@himawari', canonical: '@himawari', username: 'himawari', host: null }), + leaf('mention', { + acct: '@himawari', + canonical: '@himawari', + username: 'himawari', + host: null + }), text(' foo') ]); }); @@ -288,7 +303,12 @@ describe('MFM', () => { it('remote', () => { const tokens = analyze('@hima_sub@namori.net foo'); assert.deepStrictEqual(tokens, [ - leaf('mention', { acct: '@hima_sub@namori.net', canonical: '@hima_sub@namori.net', username: 'hima_sub', host: 'namori.net' }), + leaf('mention', { + acct: '@hima_sub@namori.net', + canonical: '@hima_sub@namori.net', + username: 'hima_sub', + host: 'namori.net' + }), text(' foo') ]); }); @@ -296,7 +316,12 @@ describe('MFM', () => { it('remote punycode', () => { const tokens = analyze('@hima_sub@xn--q9j5bya.xn--zckzah foo'); assert.deepStrictEqual(tokens, [ - leaf('mention', { acct: '@hima_sub@xn--q9j5bya.xn--zckzah', canonical: '@hima_sub@なもり.テスト', username: 'hima_sub', host: 'xn--q9j5bya.xn--zckzah' }), + leaf('mention', { + acct: '@hima_sub@xn--q9j5bya.xn--zckzah', + canonical: '@hima_sub@なもり.テスト', + username: 'hima_sub', + host: 'xn--q9j5bya.xn--zckzah' + }), text(' foo') ]); }); @@ -309,11 +334,26 @@ describe('MFM', () => { const tokens2 = analyze('@a\n@b\n@c'); assert.deepStrictEqual(tokens2, [ - leaf('mention', { acct: '@a', canonical: '@a', username: 'a', host: null }), + leaf('mention', { + acct: '@a', + canonical: '@a', + username: 'a', + host: null + }), text('\n'), - leaf('mention', { acct: '@b', canonical: '@b', username: 'b', host: null }), + leaf('mention', { + acct: '@b', + canonical: '@b', + username: 'b', + host: null + }), text('\n'), - leaf('mention', { acct: '@c', canonical: '@c', username: 'c', host: null }) + leaf('mention', { + acct: '@c', + canonical: '@c', + username: 'c', + host: null + }) ]); const tokens3 = analyze('**x**@a'); @@ -321,24 +361,31 @@ describe('MFM', () => { tree('bold', [ text('x') ], {}), - leaf('mention', { acct: '@a', canonical: '@a', username: 'a', host: null }) + leaf('mention', { + acct: '@a', + canonical: '@a', + username: 'a', + host: null + }) ]); - const tokens4 = analyze('@\n@v\n@veryverylongusername' /* \n@toolongtobeasamention */); + const tokens4 = analyze('@\n@v\n@veryverylongusername'); assert.deepStrictEqual(tokens4, [ text('@\n'), - leaf('mention', { acct: '@v', canonical: '@v', username: 'v', host: null }), + leaf('mention', { + acct: '@v', + canonical: '@v', + username: 'v', + host: null + }), text('\n'), - leaf('mention', { acct: '@veryverylongusername', canonical: '@veryverylongusername', username: 'veryverylongusername', host: null }), - // text('\n@toolongtobeasamention') + leaf('mention', { + acct: '@veryverylongusername', + canonical: '@veryverylongusername', + username: 'veryverylongusername', + host: null + }), ]); - /* - const tokens5 = analyze('@domain_is@valid.example.com\n@domain_is@.invalid\n@domain_is@invali.d\n@domain_is@invali.d\n@domain_is@-invalid.com\n@domain_is@invalid-.com'); - assert.deepStrictEqual([ - leaf('mention', { acct: '@domain_is@valid.example.com', canonical: '@domain_is@valid.example.com', username: 'domain_is', host: 'valid.example.com' }), - text('\n@domain_is@.invalid\n@domain_is@invali.d\n@domain_is@invali.d\n@domain_is@-invalid.com\n@domain_is@invalid-.com') - ], tokens5); - */ }); }); From f9f70d5df45da43d88c2fe51ce3da4b414ac014b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 14:30:57 +0900 Subject: [PATCH 104/429] Clean up --- .../views/components/misskey-flavored-markdown.vue | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/client/app/common/views/components/misskey-flavored-markdown.vue b/src/client/app/common/views/components/misskey-flavored-markdown.vue index 33e3679d4..448df9aa8 100644 --- a/src/client/app/common/views/components/misskey-flavored-markdown.vue +++ b/src/client/app/common/views/components/misskey-flavored-markdown.vue @@ -45,13 +45,4 @@ export default Vue.extend({ padding 16px margin 0 - >>> [data-is-me]:after - content "you" - padding 0 4px - margin-left 4px - font-size 80% - color var(--primaryForeground) - background var(--primary) - border-radius 4px - From 4b191c7f68a13e1a9acb00b8b8c1b7638465f5f5 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 14:34:52 +0900 Subject: [PATCH 105/429] [Client] Improve syntax highlighting Resolve #3926 Resolve #3390 --- CHANGELOG.md | 1 + package.json | 4 +- .../app/common/views/components/code-core.vue | 30 ++ .../app/common/views/components/code.vue | 28 ++ src/client/app/common/views/components/mfm.ts | 27 +- .../components/misskey-flavored-markdown.vue | 15 - src/mfm/syntax-highlight.ts | 343 ------------------ 7 files changed, 76 insertions(+), 372 deletions(-) create mode 100644 src/client/app/common/views/components/code-core.vue create mode 100644 src/client/app/common/views/components/code.vue delete mode 100644 src/mfm/syntax-highlight.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 6325663fc..d9e69e8f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ unreleased * 外部サービス認証情報の配信 * 管理画面のモデレーションのUIを強化 * 管理画面からリモートユーザーの情報を更新できるように +* シンタックスハイライトの強化 * 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 * イタリック構文の判定の改善 * タイトル構文の判定の改善 diff --git a/package.json b/package.json index d5afc934b..b561b4de4 100644 --- a/package.json +++ b/package.json @@ -97,8 +97,8 @@ "bootstrap-vue": "2.0.0-rc.11", "cafy": "12.0.0", "chai": "4.2.0", - "chalk": "2.4.2", "chai-http": "4.2.1", + "chalk": "2.4.2", "commander": "2.19.0", "crc-32": "1.2.0", "css-loader": "1.0.1", @@ -178,6 +178,7 @@ "parsimmon": "1.12.0", "portscanner": "2.2.0", "postcss-loader": "3.0.0", + "prismjs": "1.15.0", "progress-bar-webpack-plugin": "1.12.0", "promise-any": "0.2.0", "promise-limit": "2.7.0", @@ -230,6 +231,7 @@ "vue-js-modal": "1.3.28", "vue-loader": "15.5.1", "vue-marquee-text-component": "1.1.1", + "vue-prism-component": "1.1.1", "vue-router": "3.0.2", "vue-sequential-entrance": "1.1.3", "vue-style-loader": "4.1.2", diff --git a/src/client/app/common/views/components/code-core.vue b/src/client/app/common/views/components/code-core.vue new file mode 100644 index 000000000..a50d94394 --- /dev/null +++ b/src/client/app/common/views/components/code-core.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/client/app/common/views/components/code.vue b/src/client/app/common/views/components/code.vue new file mode 100644 index 000000000..d52c9f7bc --- /dev/null +++ b/src/client/app/common/views/components/code.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index ad3d8204c..8ffa56666 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -6,8 +6,8 @@ import MkUrl from './url.vue'; import MkMention from './mention.vue'; import { concat, sum } from '../../../../../prelude/array'; import MkFormula from './formula.vue'; +import MkCode from './code.vue'; import MkGoogle from './google.vue'; -import syntaxHighlight from '../../../../../mfm/syntax-highlight'; import { host } from '../../../config'; import { preorderF, countNodesF } from '../../../../../prelude/tree'; @@ -170,21 +170,22 @@ export default Vue.component('misskey-flavored-markdown', { } case 'blockCode': { - return [createElement('pre', { - class: 'code' - }, [ - createElement('code', { - domProps: { - innerHTML: syntaxHighlight(token.node.props.code) - } - }) - ])]; + return [createElement(MkCode, { + key: Math.random(), + props: { + code: token.node.props.code, + lang: token.node.props.lang, + } + })]; } case 'inlineCode': { - return [createElement('code', { - domProps: { - innerHTML: syntaxHighlight(token.node.props.code) + return [createElement(MkCode, { + key: Math.random(), + props: { + code: token.node.props.code, + lang: token.node.props.lang, + inline: true } })]; } diff --git a/src/client/app/common/views/components/misskey-flavored-markdown.vue b/src/client/app/common/views/components/misskey-flavored-markdown.vue index 448df9aa8..5cb102240 100644 --- a/src/client/app/common/views/components/misskey-flavored-markdown.vue +++ b/src/client/app/common/views/components/misskey-flavored-markdown.vue @@ -24,25 +24,10 @@ export default Vue.extend({ background var(--mfmTitleBg) border-radius 4px - >>> .code - margin 8px 0 - >>> .quote margin 8px padding 6px 0 6px 12px color var(--mfmQuote) border-left solid 3px var(--mfmQuoteLine) - >>> code - padding 4px 8px - margin 0 0.5em - font-size 90% - color #525252 - background var(--bg) - border-radius 2px - - >>> pre > code - padding 16px - margin 0 - diff --git a/src/mfm/syntax-highlight.ts b/src/mfm/syntax-highlight.ts deleted file mode 100644 index 109923fb7..000000000 --- a/src/mfm/syntax-highlight.ts +++ /dev/null @@ -1,343 +0,0 @@ -import { capitalize, toUpperCase } from '../prelude/string'; - -function escape(text: string) { - return text - .replace(/>/g, '>') - .replace(/ b.length - a.length); - -const symbols = [ - '=', - '+', - '-', - '*', - '/', - '%', - '~', - '^', - '&', - '|', - '>', - '<', - '!', - '?' -]; - -type Token = { - html: string - next: number -}; - -type Element = (code: string, i: number, source: string) => (Token | null); - -const elements: Element[] = [ - // comment - code => { - if (code.substr(0, 2) != '//') return null; - const match = code.match(/^\/\/(.+?)(\n|$)/); - if (!match) return null; - const comment = match[0]; - return { - html: `${escape(comment)}`, - next: comment.length - }; - }, - - // block comment - code => { - const match = code.match(/^\/\*([\s\S]+?)\*\//); - if (!match) return null; - return { - html: `${escape(match[0])}`, - next: match[0].length - }; - }, - - // string - code => { - if (!/^['"`]/.test(code)) return null; - const begin = code[0]; - let str = begin; - let thisIsNotAString = false; - for (let i = 1; i < code.length; i++) { - const char = code[i]; - if (char == '\\') { - str += char; - str += code[i + 1] || ''; - i++; - continue; - } else if (char == begin) { - str += char; - break; - } else if (char == '\n' || i == (code.length - 1)) { - thisIsNotAString = true; - break; - } else { - str += char; - } - } - if (thisIsNotAString) { - return null; - } else { - return { - html: `${escape(str)}`, - next: str.length - }; - } - }, - - // regexp - code => { - if (code[0] != '/') return null; - let regexp = ''; - let thisIsNotARegexp = false; - for (let i = 1; i < code.length; i++) { - const char = code[i]; - if (char == '\\') { - regexp += char; - regexp += code[i + 1] || ''; - i++; - continue; - } else if (char == '/') { - break; - } else if (char == '\n' || i == (code.length - 1)) { - thisIsNotARegexp = true; - break; - } else { - regexp += char; - } - } - - if (thisIsNotARegexp) return null; - if (regexp == '') return null; - if (regexp.startsWith(' ') && regexp.endsWith(' ')) return null; - - return { - html: `/${escape(regexp)}/`, - next: regexp.length + 2 - }; - }, - - // label - code => { - if (code[0] != '@') return null; - const match = code.match(/^@([a-zA-Z_-]+?)\n/); - if (!match) return null; - const label = match[0]; - return { - html: `${label}`, - next: label.length - }; - }, - - // number - (code, i, source) => { - const prev = source[i - 1]; - if (prev && /[a-zA-Z]/.test(prev)) return null; - if (!/^[\-\+]?[0-9\.]+/.test(code)) return null; - const match = code.match(/^[\-\+]?[0-9\.]+/)[0]; - if (match) { - return { - html: `${match}`, - next: match.length - }; - } else { - return null; - } - }, - - // nan - (code, i, source) => { - const prev = source[i - 1]; - if (prev && /[a-zA-Z]/.test(prev)) return null; - if (code.substr(0, 3) == 'NaN') { - return { - html: `NaN`, - next: 3 - }; - } else { - return null; - } - }, - - // method - code => { - const match = code.match(/^([a-zA-Z_-]+?)\(/); - if (!match) return null; - - if (match[1] == '-') return null; - - return { - html: `${match[1]}`, - next: match[1].length - }; - }, - - // property - (code, i, source) => { - const prev = source[i - 1]; - if (prev != '.') return null; - - const match = code.match(/^[a-zA-Z0-9_-]+/); - if (!match) return null; - - return { - html: `${match[0]}`, - next: match[0].length - }; - }, - - // keyword - (code, i, source) => { - const prev = source[i - 1]; - if (prev && /[a-zA-Z]/.test(prev)) return null; - - const match = keywords.filter(k => code.substr(0, k.length) == k)[0]; - if (match) { - if (/^[a-zA-Z]/.test(code.substr(match.length))) return null; - return { - html: `${match}`, - next: match.length - }; - } else { - return null; - } - }, - - // symbol - code => { - const match = symbols.filter(s => code[0] == s)[0]; - if (match) { - return { - html: `${match}`, - next: 1 - }; - } else { - return null; - } - } -]; - -// TODO: specify lang -export default (source: string, lang?: string): string => { - let code = source; - let html = ''; - - let i = 0; - - function push(token: Token) { - html += token.html; - code = code.substr(token.next); - i += token.next; - } - - while (code != '') { - const parsed = elements.some(el => { - const e = el(code, i, source); - if (e) { - push(e); - return true; - } else { - return false; - } - }); - - if (!parsed) { - push({ - html: escape(code[0]), - next: 1 - }); - } - } - - return html; -}; From b836528b515d80de3253dea1366a8090ebba6c35 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 14:44:39 +0900 Subject: [PATCH 106/429] Celan up --- src/client/app/app.styl | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/src/client/app/app.styl b/src/client/app/app.styl index 13b013328..a98ece7a5 100644 --- a/src/client/app/app.styl +++ b/src/client/app/app.styl @@ -72,47 +72,6 @@ body code font-family Consolas, 'Courier New', Courier, Monaco, monospace - .comment - opacity 0.5 - - .string - color #e96900 - - .regexp - color #e9003f - - .keyword - color #2973b7 - - &.true - &.false - &.null - &.nil - &.undefined - color #ae81ff - - .symbol - color #42b983 - - .number - .nan - color #ae81ff - - .var:not(.keyword) - font-weight bold - font-style italic - //text-decoration underline - - .method - font-style italic - color #8964c1 - - .property - color #a71d5d - - .label - color #e9003f - pre display block From d906d9001052d2cde05b1bd9c2fbfb23a5a66cd2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 14:55:02 +0900 Subject: [PATCH 107/429] [Server] Introduce admin stream channel --- .../api/endpoints/users/report-abuse.ts | 22 ++++++++++++++++++- src/server/api/stream/channels/admin.ts | 16 ++++++++++++++ src/server/api/stream/channels/index.ts | 2 ++ src/stream.ts | 5 +++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/server/api/stream/channels/admin.ts diff --git a/src/server/api/endpoints/users/report-abuse.ts b/src/server/api/endpoints/users/report-abuse.ts index b520b29e2..19beee433 100644 --- a/src/server/api/endpoints/users/report-abuse.ts +++ b/src/server/api/endpoints/users/report-abuse.ts @@ -2,6 +2,7 @@ import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id'; import define from '../../define'; import User from '../../../../models/user'; import AbuseUserReport from '../../../../models/abuse-user-report'; +import { publishAdminStream } from '../../../../stream'; export const meta = { desc: { @@ -47,12 +48,31 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { return rej('cannot report admin'); } - await AbuseUserReport.insert({ + const report = await AbuseUserReport.insert({ createdAt: new Date(), userId: user._id, reporterId: me._id, comment: ps.comment }); + // Publish event to moderators + setTimeout(async () => { + const moderators = await User.find({ + $or: [{ + isAdmin: true + }, { + isModerator: true + }] + }); + for (const moderator of moderators) { + publishAdminStream(moderator._id, 'newAbuseUserReport', { + id: report._id, + userId: report.userId, + reporterId: report.reporterId, + comment: report.comment + }); + } + }, 1); + res(); })); diff --git a/src/server/api/stream/channels/admin.ts b/src/server/api/stream/channels/admin.ts new file mode 100644 index 000000000..6bcd1a7e0 --- /dev/null +++ b/src/server/api/stream/channels/admin.ts @@ -0,0 +1,16 @@ +import autobind from 'autobind-decorator'; +import Channel from '../channel'; + +export default class extends Channel { + public readonly chName = 'admin'; + public static shouldShare = true; + public static requireCredential = true; + + @autobind + public async init(params: any) { + // Subscribe admin stream + this.subscriber.on(`adminStream:${this.user._id}`, data => { + this.send(data); + }); + } +} diff --git a/src/server/api/stream/channels/index.ts b/src/server/api/stream/channels/index.ts index 7248579ab..02f71b585 100644 --- a/src/server/api/stream/channels/index.ts +++ b/src/server/api/stream/channels/index.ts @@ -11,6 +11,7 @@ import messagingIndex from './messaging-index'; import drive from './drive'; import hashtag from './hashtag'; import apLog from './ap-log'; +import admin from './admin'; import gamesReversi from './games/reversi'; import gamesReversiGame from './games/reversi-game'; @@ -28,6 +29,7 @@ export default { drive, hashtag, apLog, + admin, gamesReversi, gamesReversiGame }; diff --git a/src/stream.ts b/src/stream.ts index 596cb98e7..098d49ecd 100644 --- a/src/stream.ts +++ b/src/stream.ts @@ -87,6 +87,10 @@ class Publisher { public publishApLogStream = (log: any): void => { this.publish('apLog', null, log); } + + public publishAdminStream = (userId: ID, type: string, value?: any): void => { + this.publish(`adminStream:${userId}`, type, typeof value === 'undefined' ? null : value); + } } const publisher = new Publisher(); @@ -107,3 +111,4 @@ export const publishHybridTimelineStream = publisher.publishHybridTimelineStream export const publishGlobalTimelineStream = publisher.publishGlobalTimelineStream; export const publishHashtagStream = publisher.publishHashtagStream; export const publishApLogStream = publisher.publishApLogStream; +export const publishAdminStream = publisher.publishAdminStream; From 5621113d1f0e1779c4d2aba8d4b563cc3856df05 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 15:02:03 +0900 Subject: [PATCH 108/429] New translations ja-JP.yml (English) --- locales/en-US.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index bd9126b56..44af015c5 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -873,8 +873,8 @@ desktop/views/components/settings.2fa.vue: failed: "Failed to setup. Please ensure that the token is correct." info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password." common/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" + sensitive: "NSFW" + click-to-show: "Click to show" common/views/components/api-settings.vue: intro: "To access the API, set this token as the key 'i' of request parameters." caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised." From e5d938150386b32d2aa49e1a825453309209d9e4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 16:18:04 +0900 Subject: [PATCH 109/429] [MFM] Add spin syntax Resolve #4003 --- CHANGELOG.md | 1 + src/client/app/animation.styl | 5 +++++ src/client/app/common/views/components/mfm.ts | 11 +++++++++++ src/mfm/html.ts | 6 ++++++ src/mfm/parser.ts | 15 +++++++++++++++ test/mfm.ts | 9 +++++++++ 6 files changed, 47 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9e69e8f0..f8291a135 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ unreleased * 外部サービス認証情報の配信 * 管理画面のモデレーションのUIを強化 * 管理画面からリモートユーザーの情報を更新できるように +* 回転構文の追加 * シンタックスハイライトの強化 * 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 * イタリック構文の判定の改善 diff --git a/src/client/app/animation.styl b/src/client/app/animation.styl index a62916520..9cbd3ec6c 100644 --- a/src/client/app/animation.styl +++ b/src/client/app/animation.styl @@ -26,3 +26,8 @@ transform: translateY(0); } } + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index 8ffa56666..f6f95deb2 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -124,6 +124,17 @@ export default Vue.component('misskey-flavored-markdown', { }, genEl(token.children)); } + case 'spin': { + motionCount++; + const isLong = sumTextsLength(token.children) > 5 || countNodesF(token.children) > 3; + const isMany = motionCount > 3; + return (createElement as any)('span', { + attrs: { + style: (this.$store.state.settings.disableAnimatedMfm || isLong || isMany) ? 'display: inline-block;' : 'display: inline-block; animation: spin 1.5s linear infinite;' + }, + }, genEl(token.children)); + } + case 'url': { return [createElement(MkUrl, { key: Math.random(), diff --git a/src/mfm/html.ts b/src/mfm/html.ts index 6af283385..a40ff19ac 100644 --- a/src/mfm/html.ts +++ b/src/mfm/html.ts @@ -55,6 +55,12 @@ export default (tokens: MfmForest, mentionedRemoteUsers: INote['mentionedRemoteU return el; }, + spin(token) { + const el = doc.createElement('i'); + appendChildren(token.children, el); + return el; + }, + blockCode(token) { const pre = doc.createElement('pre'); const inner = doc.createElement('code'); diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 560e226af..5cd9fc04c 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -91,6 +91,7 @@ const mfm = P.createLanguage({ root: r => P.alt( r.big, r.small, + r.spin, r.bold, r.strike, r.italic, @@ -122,6 +123,7 @@ const mfm = P.createLanguage({ r.hashtag, r.emoji, r.math, + r.spin, r.text ).atLeast(1).tryParse(x), {})), //#endregion @@ -140,6 +142,15 @@ const mfm = P.createLanguage({ ).atLeast(1).tryParse(x), {})), //#endregion + //#region Spin + spin: r => + P.regexp(/(.+?)<\/spin>/, 1) + .map(x => createTree('spin', P.alt( + r.emoji, + r.text + ).atLeast(1).tryParse(x), {})), + //#endregion + //#region Block code blockCode: r => newline.then( @@ -173,6 +184,7 @@ const mfm = P.createLanguage({ .map(x => createTree('center', P.alt( r.big, r.small, + r.spin, r.bold, r.strike, r.italic, @@ -261,6 +273,7 @@ const mfm = P.createLanguage({ return createTree('link', P.alt( r.big, r.small, + r.spin, r.bold, r.strike, r.italic, @@ -304,6 +317,7 @@ const mfm = P.createLanguage({ .map(x => createTree('motion', P.alt( r.bold, r.small, + r.spin, r.strike, r.italic, r.mention, @@ -364,6 +378,7 @@ const mfm = P.createLanguage({ const contents = P.alt( r.big, r.small, + r.spin, r.bold, r.strike, r.italic, diff --git a/test/mfm.ts b/test/mfm.ts index a5ea4b293..d8cba8ee1 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -244,6 +244,15 @@ describe('MFM', () => { ]); }); + it('spin', () => { + const tokens = analyze(':foo:'); + assert.deepStrictEqual(tokens, [ + tree('spin', [ + leaf('emoji', { name: 'foo' }) + ], {}), + ]); + }); + describe('motion', () => { it('by triple brackets', () => { const tokens = analyze('(((foo)))'); From 4de62220e3f0e2ed759d31b633ef267b12ec16b3 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 16:31:00 +0900 Subject: [PATCH 110/429] [MFM] Add flip syntax Resolve #4002 --- CHANGELOG.md | 1 + src/client/app/common/views/components/mfm.ts | 8 +++++++ src/mfm/html.ts | 6 +++++ src/mfm/parser.ts | 24 +++++++++++++++++++ test/mfm.ts | 9 +++++++ 5 files changed, 48 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8291a135..e9319075c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ unreleased * 管理画面のモデレーションのUIを強化 * 管理画面からリモートユーザーの情報を更新できるように * 回転構文の追加 +* 左右反転構文の追加 * シンタックスハイライトの強化 * 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 * イタリック構文の判定の改善 diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index f6f95deb2..a3849e960 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -135,6 +135,14 @@ export default Vue.component('misskey-flavored-markdown', { }, genEl(token.children)); } + case 'flip': { + return (createElement as any)('span', { + attrs: { + style: 'display: inline-block; transform: scaleX(-1);' + }, + }, genEl(token.children)); + } + case 'url': { return [createElement(MkUrl, { key: Math.random(), diff --git a/src/mfm/html.ts b/src/mfm/html.ts index a40ff19ac..568a39bc7 100644 --- a/src/mfm/html.ts +++ b/src/mfm/html.ts @@ -61,6 +61,12 @@ export default (tokens: MfmForest, mentionedRemoteUsers: INote['mentionedRemoteU return el; }, + flip(token) { + const el = doc.createElement('span'); + appendChildren(token.children, el); + return el; + }, + blockCode(token) { const pre = doc.createElement('pre'); const inner = doc.createElement('code'); diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 5cd9fc04c..1cf1edfa4 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -102,6 +102,7 @@ const mfm = P.createLanguage({ r.hashtag, r.emoji, r.blockCode, + r.flip, r.inlineCode, r.quote, r.math, @@ -173,6 +174,7 @@ const mfm = P.createLanguage({ r.hashtag, r.url, r.link, + r.flip, r.emoji, r.text ).atLeast(1).tryParse(x), {})), @@ -195,6 +197,7 @@ const mfm = P.createLanguage({ r.math, r.url, r.link, + r.flip, r.text ).atLeast(1).tryParse(x), {})), //#endregion @@ -228,6 +231,23 @@ const mfm = P.createLanguage({ }), //#endregion + //#region Flip + flip: r => + P.regexp(/(.+?)<\/flip>/, 1) + .map(x => createTree('flip', P.alt( + r.big, + r.small, + r.spin, + r.bold, + r.strike, + r.link, + r.italic, + r.motion, + r.emoji, + r.text + ).atLeast(1).tryParse(x), {})), + //#endregion + //#region Inline code inlineCode: r => P.regexp(/`([^´\n]+?)`/, 1) @@ -253,6 +273,7 @@ const mfm = P.createLanguage({ r.hashtag, r.url, r.link, + r.flip, r.emoji, r.text ).atLeast(1).tryParse(x), {})), @@ -325,6 +346,7 @@ const mfm = P.createLanguage({ r.emoji, r.url, r.link, + r.flip, r.math, r.text ).atLeast(1).tryParse(x), {})), @@ -363,6 +385,7 @@ const mfm = P.createLanguage({ r.hashtag, r.url, r.link, + r.flip, r.emoji, r.text ).atLeast(1).tryParse(x), {})), @@ -385,6 +408,7 @@ const mfm = P.createLanguage({ r.motion, r.url, r.link, + r.flip, r.mention, r.hashtag, r.emoji, diff --git a/test/mfm.ts b/test/mfm.ts index d8cba8ee1..e48bba09e 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -244,6 +244,15 @@ describe('MFM', () => { ]); }); + it('flip', () => { + const tokens = analyze('foo'); + assert.deepStrictEqual(tokens, [ + tree('flip', [ + text('flip') + ], {}), + ]); + }); + it('spin', () => { const tokens = analyze(':foo:'); assert.deepStrictEqual(tokens, [ From 8c62aafa973457bd5abbe43747e69b9655a5761f Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 16:36:01 +0900 Subject: [PATCH 111/429] Fix test --- test/mfm.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/mfm.ts b/test/mfm.ts index e48bba09e..2eeaeb2e5 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -248,7 +248,7 @@ describe('MFM', () => { const tokens = analyze('foo'); assert.deepStrictEqual(tokens, [ tree('flip', [ - text('flip') + text('foo') ], {}), ]); }); From b24de13a37ec640b937f622bbefa97b3e77d7bdf Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 16:43:06 +0900 Subject: [PATCH 112/429] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e9319075c..312f90a07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ unreleased * 管理画面からリモートユーザーの情報を更新できるように * 回転構文の追加 * 左右反転構文の追加 +* 複数行の数式構文を追加 * シンタックスハイライトの強化 * 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 * イタリック構文の判定の改善 From 031287aebd1a428ba51aaa54ff29c9e0a0e18bf4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 16:43:50 +0900 Subject: [PATCH 113/429] 10.79.0 --- CHANGELOG.md | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 312f90a07..606ee7e99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ ChangeLog ========= -unreleased +10.79.0 ---------- * 返信するときにCWを維持するかどうか設定できるように * 外部サービス認証情報の配信 diff --git a/package.json b/package.json index b561b4de4..a004c1b9d 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "misskey", "author": "syuilo ", - "version": "10.78.5", - "clientVersion": "2.0.13712", + "version": "10.79.0", + "clientVersion": "2.0.13835", "codename": "nighthike", "main": "./built/index.js", "private": true, From e8d0568a1105596351d89d141fc4660adb18472b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Sun, 27 Jan 2019 16:45:36 +0900 Subject: [PATCH 114/429] Update @fortawesome/free-regular-svg-icons requirement (#3963) Updates the requirements on [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version. - [Release notes](https://github.com/FortAwesome/Font-Awesome/releases) - [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md) - [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.3) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a004c1b9d..52456ad8c 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "dependencies": { "@fortawesome/fontawesome-svg-core": "1.2.12", "@fortawesome/free-brands-svg-icons": "5.6.3", - "@fortawesome/free-regular-svg-icons": "5.5.0", + "@fortawesome/free-regular-svg-icons": "5.6.3", "@fortawesome/free-solid-svg-icons": "5.6.3", "@fortawesome/vue-fontawesome": "0.1.5", "@koa/cors": "2.2.3", From 2519abdd39f8e22d753c2a7106498e1268416ccf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Sun, 27 Jan 2019 16:45:48 +0900 Subject: [PATCH 115/429] Update @types/webpack requirement from 4.4.21 to 4.4.24 (#3976) Updates the requirements on [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 52456ad8c..84e320c3d 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "@types/tinycolor2": "1.4.1", "@types/tmp": "0.0.33", "@types/uuid": "3.4.4", - "@types/webpack": "4.4.21", + "@types/webpack": "4.4.24", "@types/webpack-stream": "3.2.10", "@types/websocket": "0.0.40", "@types/ws": "6.0.1", From aad1b8c12ef5cd610bbced82c6ca94108c345f40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Sun, 27 Jan 2019 16:45:55 +0900 Subject: [PATCH 116/429] Update @types/js-yaml requirement from 3.11.4 to 3.12.0 (#3977) Updates the requirements on [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 84e320c3d..31f89da40 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@types/is-root": "1.0.0", "@types/is-svg": "3.0.0", "@types/is-url": "1.2.28", - "@types/js-yaml": "3.11.4", + "@types/js-yaml": "3.12.0", "@types/katex": "0.5.0", "@types/koa": "2.0.48", "@types/koa-bodyparser": "5.0.2", From d2cc5c3b6363774ba9028230efe82ec593a2ca5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Sun, 27 Jan 2019 16:46:41 +0900 Subject: [PATCH 117/429] Update debug requirement from 4.1.0 to 4.1.1 (#3964) Updates the requirements on [debug](https://github.com/visionmedia/debug) to permit the latest version. - [Release notes](https://github.com/visionmedia/debug/releases) - [Commits](https://github.com/visionmedia/debug/commits/4.1.1) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d89760369..b0c3cc2c6 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "css-loader": "1.0.1", "cssnano": "4.1.8", "dateformat": "3.0.3", - "debug": "4.1.0", + "debug": "4.1.1", "deep-equal": "1.0.1", "deepcopy": "0.6.3", "diskusage": "1.0.0", From e5cfdbf372a2e3f693998b87317b30c1b3f3a9eb Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 16:51:42 +0900 Subject: [PATCH 118/429] New translations ja-JP.yml (Korean) --- locales/ko-KR.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 0872275ea..311035795 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -785,8 +785,8 @@ desktop/views/components/settings.vue: auto-popout-desc: "창이 열릴 때 팝아웃 (브라우저 밖으로 분리) 이 가능한 경우 자동으로 팝아웃합니다. 이 설정은 브라우저에 저장됩니다." deck-nav: "덱 내 탐색" deck-nav-desc: "덱을 사용중일 때, 내비게이션이 발생하였을 경우 페이지를 이동하지 않고 일시적으로 임시 칼럼을 생성하도록 합니다." - keep-cw: "CW保持" - keep-cw-desc: "投稿にリプライする際、リプライ元の投稿にCWが設定されていたとき、デフォルトで同じCWを設定するようにします。" + keep-cw: "CW 유지" + keep-cw-desc: "글에 답글을 달 때, 답글 대상 글에 CW가 설정되어 있는 경우 기본으로 동일한 CW를 설정하도록 합니다." deck-default: "덱을 기본 UI로 설정" display: "디자인 및 표시" customize: "홈 커스터마이징" @@ -873,8 +873,8 @@ desktop/views/components/settings.2fa.vue: failed: "설정에 실패했습니다. 토큰이 잘못되었는지 확인해주십시오." info: "다음 로그인부터는 이와 동일하게 비밀번호에 더해 장치에 표시된 토큰을 입력합니다." common/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" + sensitive: "열람주의" + click-to-show: "클릭하여 보기" common/views/components/api-settings.vue: intro: "API를 사용하려면 위의 토큰을 \"i\" 라는 키의 값으로 매개변수를 추가하여 요청합니다." caution: "계정을 부정 사용할 가능성이 있으므로, 이 토큰은 제 3자에게 알려주지 마십시오 (앱 등에 붙여넣지 마십시오)." @@ -1065,7 +1065,7 @@ admin/views/instance.vue: external-user-recommendation-timeout: "타임 아웃" external-user-recommendation-timeout-desc: "밀리초 (예: 300000)" email-config: "메일 서버 설정" - email-config-info: "메일 주소 확인 혹은 암호 재설정에 사용 됩니다." + email-config-info: "메일 주소 확인 혹은 비밀번호 재설정에 사용 됩니다." enable-email: "메일 발신 활성화" email: "메일 주소" smtp-secure: "SMTP 연결에 암시적으로 SSL/TLS를 사용" @@ -1133,23 +1133,23 @@ admin/views/users.vue: username-or-userid: "사용자명 혹은 사용자 ID" user-not-found: "사용자를 찾을 수 없습니다" lookup: "조회" - reset-password: "암호 재설정" - reset-password-confirm: "パスワードをリセットしますか?" - password-updated: "암호는 현재 \"{password}\" 입니다" + reset-password: "비밀번호 재설정" + reset-password-confirm: "비밀번호를 재설정하시겠습니까?" + password-updated: "비밀번호는 현재 \"{password}\" 입니다" suspend: "정지" - suspend-confirm: "凍結しますか?" + suspend-confirm: "정지하시겠습니까?" suspended: "정지하였습니다" unsuspend: "정지 해제" - unsuspend-confirm: "凍結を解除しますか?" + unsuspend-confirm: "정지를 해제하시겠습니까?" unsuspended: "정지를 해제하였습니다" verify: "공식 계정으로 설정" - verify-confirm: "公式アカウントにしますか?" + verify-confirm: "공식 계정으로 설정하시겠습니까?" verified: "공식 계정으로 설정하였습니다" unverify: "공식 계정 해제" - unverify-confirm: "公式アカウントを解除しますか?" + unverify-confirm: "공식 계정을 해제하시겠습니까?" unverified: "공식 계정을 해제하였습니다" - update-remote-user: "リモートユーザー情報の更新" - remote-user-updated: "リモートユーザー情報を更新しました" + update-remote-user: "원격 사용자 정보 갱신" + remote-user-updated: "원격 사용자 정보를 갱신하였습니다" users: title: "사용자" sort: @@ -1473,7 +1473,7 @@ mobile/views/pages/settings.vue: notification-position-top: "위" behavior: "동작" fetch-on-scroll: "스크롤하여 자동으로 불러오기" - keep-cw: "CW保持" + keep-cw: "CW 유지" note-visibility: "게시물의 공개 범위" default-note-visibility: "기본 공개 범위" remember-note-visibility: "글의 공개 범위를 기억하기" From 5ea8e9c787cdaddb8c66604592a2887414cfc00a Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 17:01:41 +0900 Subject: [PATCH 119/429] New translations ja-JP.yml (Korean) --- locales/ko-KR.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 311035795..2255873a5 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -786,7 +786,7 @@ desktop/views/components/settings.vue: deck-nav: "덱 내 탐색" deck-nav-desc: "덱을 사용중일 때, 내비게이션이 발생하였을 경우 페이지를 이동하지 않고 일시적으로 임시 칼럼을 생성하도록 합니다." keep-cw: "CW 유지" - keep-cw-desc: "글에 답글을 달 때, 답글 대상 글에 CW가 설정되어 있는 경우 기본으로 동일한 CW를 설정하도록 합니다." + keep-cw-desc: "글에 답글을 달 때, 답글할 글에 CW가 설정되어 있는 경우 기본값으로 동일한 CW를 설정하도록 합니다." deck-default: "덱을 기본 UI로 설정" display: "디자인 및 표시" customize: "홈 커스터마이징" From ade01139cac8e6e74ce8bb747695cc14abae3607 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 17:54:13 +0900 Subject: [PATCH 120/429] New translations ja-JP.yml (French) --- locales/fr-FR.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 9fbde4856..a3f296946 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -873,8 +873,8 @@ desktop/views/components/settings.2fa.vue: failed: "L’opération a échoué. Veuillez vous assurer que le jeton a été saisi correctement." info: "À partir de maintenant, à chaque fois que vous vous connectez entrez votre mot de passe ainsi que le jeton généré sur votre appareil." common/views/components/media-image.vue: - sensitive: "閲覧注意" - click-to-show: "クリックして表示" + sensitive: "Contenu sensible" + click-to-show: "Cliquer pour afficher" common/views/components/api-settings.vue: intro: "Pour accéder à l'API, définissez ce jeton comme la clé de « i » dans les paramètres de requête." caution: "Merci de ne pas introduire ce jeton dans aucune application ou le divulguer à quiconque. Ceci risque de compromettre votre compte." @@ -1134,7 +1134,7 @@ admin/views/users.vue: user-not-found: "Utilisateur non trouvé" lookup: "Recherche" reset-password: "Réinitialiser mot de passe" - reset-password-confirm: "パスワードをリセットしますか?" + reset-password-confirm: "Souhaitez-vous réinitialiser votre mot de passe ?" password-updated: "Le mot de passe est « {password} »" suspend: "Suspendre" suspend-confirm: "Désirez-vous suspendre ce compte ?" From 5fac7c1718e21c47202b343ca14cff989e8d12cb Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 19:12:08 +0900 Subject: [PATCH 121/429] =?UTF-8?q?[MFM]=20spin=E3=81=AE=E4=B8=AD=E3=81=A7?= =?UTF-8?q?flip=E3=82=92=E4=BD=BF=E3=81=88=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mfm/parser.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 7bddea2ac..1d72496a6 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -149,6 +149,7 @@ const mfm = P.createLanguage({ P.regexp(/(.+?)<\/spin>/, 1) .map(x => createTree('spin', P.alt( r.emoji, + r.flip, r.text ).atLeast(1).tryParse(x), {})), //#endregion From 62d41023e19dfb551e0d9fd28f1361efaced9765 Mon Sep 17 00:00:00 2001 From: Aya Morisawa Date: Sun, 27 Jan 2019 19:12:45 +0900 Subject: [PATCH 122/429] Add jump syntax (#4007) * Add jump syntax * Fix typo: spin -> jump * Fix typo --- src/client/app/animation.styl | 8 ++++++++ src/client/app/common/views/components/mfm.ts | 11 +++++++++++ src/mfm/html.ts | 6 ++++++ src/mfm/parser.ts | 16 ++++++++++++++++ test/mfm.ts | 9 +++++++++ 5 files changed, 50 insertions(+) diff --git a/src/client/app/animation.styl b/src/client/app/animation.styl index 9cbd3ec6c..9a0ec2729 100644 --- a/src/client/app/animation.styl +++ b/src/client/app/animation.styl @@ -31,3 +31,11 @@ 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } + +@keyframes jump { + 0% { transform: translateY(0); } + 25% { transform: translateY(-16px); } + 50% { transform: translateY(0); } + 75% { transform: translateY(-8px); } + 100% { transform: translateY(0); } +} diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index 199d6bb97..542f1e34c 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -135,6 +135,17 @@ export default Vue.component('misskey-flavored-markdown', { }, genEl(token.children)); } + case 'jump': { + motionCount++; + const isLong = sumTextsLength(token.children) > 5 || countNodesF(token.children) > 3; + const isMany = motionCount > 3; + return (createElement as any)('span', { + attrs: { + style: (this.$store.state.settings.disableAnimatedMfm || isLong || isMany) ? 'display: inline-block;' : 'display: inline-block; animation: jump 0.75s linear infinite;' + }, + }, genEl(token.children)); + } + case 'flip': { return (createElement as any)('span', { attrs: { diff --git a/src/mfm/html.ts b/src/mfm/html.ts index acd6891ab..6dba6defe 100644 --- a/src/mfm/html.ts +++ b/src/mfm/html.ts @@ -61,6 +61,12 @@ export default (tokens: MfmForest, mentionedRemoteUsers: INote['mentionedRemoteU return el; }, + jump(token) { + const el = doc.createElement('i'); + appendChildren(token.children, el); + return el; + }, + flip(token) { const el = doc.createElement('span'); appendChildren(token.children, el); diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 1d72496a6..6b7c3c584 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -92,6 +92,7 @@ const mfm = P.createLanguage({ r.big, r.small, r.spin, + r.jump, r.bold, r.strike, r.italic, @@ -126,6 +127,7 @@ const mfm = P.createLanguage({ r.emoji, r.mathInline, r.spin, + r.jump, r.text ).atLeast(1).tryParse(x), {})), //#endregion @@ -154,6 +156,15 @@ const mfm = P.createLanguage({ ).atLeast(1).tryParse(x), {})), //#endregion + //#region Jump + jump: r => + P.regexp(/(.+?)<\/jump>/, 1) + .map(x => createTree('jump', P.alt( + r.emoji, + r.text + ).atLeast(1).tryParse(x), {})), + //#endregion + //#region Block code blockCode: r => newline.then( @@ -189,6 +200,7 @@ const mfm = P.createLanguage({ r.big, r.small, r.spin, + r.jump, r.bold, r.strike, r.italic, @@ -240,6 +252,7 @@ const mfm = P.createLanguage({ r.big, r.small, r.spin, + r.jump, r.bold, r.strike, r.link, @@ -297,6 +310,7 @@ const mfm = P.createLanguage({ r.big, r.small, r.spin, + r.jump, r.bold, r.strike, r.italic, @@ -347,6 +361,7 @@ const mfm = P.createLanguage({ r.bold, r.small, r.spin, + r.jump, r.strike, r.italic, r.mention, @@ -410,6 +425,7 @@ const mfm = P.createLanguage({ r.big, r.small, r.spin, + r.jump, r.bold, r.strike, r.italic, diff --git a/test/mfm.ts b/test/mfm.ts index 7070329f3..0d07add0e 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -262,6 +262,15 @@ describe('MFM', () => { ]); }); + it('jump', () => { + const tokens = analyze(':foo:'); + assert.deepStrictEqual(tokens, [ + tree('jump', [ + leaf('emoji', { name: 'foo' }) + ], {}), + ]); + }); + describe('motion', () => { it('by triple brackets', () => { const tokens = analyze('(((foo)))'); From 103fe8b91de036613425ec5d39e5c21c38a6a0ee Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 19:32:35 +0900 Subject: [PATCH 123/429] [MFM] Resolve #4009 --- CHANGELOG.md | 4 +++ src/client/app/common/views/components/mfm.ts | 9 +++++- src/mfm/parser.ts | 13 +++++++-- test/mfm.ts | 29 ++++++++++++++----- 4 files changed, 45 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 606ee7e99..22772636b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ ChangeLog ========= +unreleased +---------- +* MFMで左回転、往復回転を行えるように + 10.79.0 ---------- * 返信するときにCWを維持するかどうか設定できるように diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index 542f1e34c..1cf7752cb 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -128,9 +128,16 @@ export default Vue.component('misskey-flavored-markdown', { motionCount++; const isLong = sumTextsLength(token.children) > 5 || countNodesF(token.children) > 3; const isMany = motionCount > 3; + const direction = + token.node.props.attr == 'left' ? 'reverse' : + token.node.props.attr == 'alternate' ? 'alternate' : + 'normal'; + const style = (this.$store.state.settings.disableAnimatedMfm || isLong || isMany) + ? '' + : `animation: spin 1.5s linear infinite; animation-direction: ${direction};`; return (createElement as any)('span', { attrs: { - style: (this.$store.state.settings.disableAnimatedMfm || isLong || isMany) ? 'display: inline-block;' : 'display: inline-block; animation: spin 1.5s linear infinite;' + style: 'display: inline-block;' + style }, }, genEl(token.children)); } diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 6b7c3c584..3c917f8d0 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -148,12 +148,21 @@ const mfm = P.createLanguage({ //#region Spin spin: r => - P.regexp(/(.+?)<\/spin>/, 1) + P((input, i) => { + const text = input.substr(i); + const match = text.match(/^(.+?)<\/spin>/i); + if (!match) return P.makeFailure(i, 'not a spin'); + return P.makeSuccess(i + match[0].length, { + content: match[2], attr: match[1] ? match[1].trim() : null + }); + }) .map(x => createTree('spin', P.alt( r.emoji, r.flip, r.text - ).atLeast(1).tryParse(x), {})), + ).atLeast(1).tryParse(x.content), { + attr: x.attr + })), //#endregion //#region Jump diff --git a/test/mfm.ts b/test/mfm.ts index 0d07add0e..a1f83fe1d 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -253,13 +253,28 @@ describe('MFM', () => { ]); }); - it('spin', () => { - const tokens = analyze(':foo:'); - assert.deepStrictEqual(tokens, [ - tree('spin', [ - leaf('emoji', { name: 'foo' }) - ], {}), - ]); + describe('spin', () => { + it('simple', () => { + const tokens = analyze(':foo:'); + assert.deepStrictEqual(tokens, [ + tree('spin', [ + leaf('emoji', { name: 'foo' }) + ], { + attr: null + }), + ]); + }); + + it('with attr', () => { + const tokens = analyze(':foo:'); + assert.deepStrictEqual(tokens, [ + tree('spin', [ + leaf('emoji', { name: 'foo' }) + ], { + attr: 'left' + }), + ]); + }); }); it('jump', () => { From 78763116c3d4ce6c8f6ba6fd5aaa6e665cc4ffc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 27 Jan 2019 19:41:41 +0900 Subject: [PATCH 124/429] Module 'nprogress' as import syntax (#4012) --- package.json | 1 + src/client/app/common/scripts/loading.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b0c3cc2c6..2a4ee43fa 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "@types/ms": "0.7.30", "@types/node": "10.12.18", "@types/nodemailer": "4.6.5", + "@types/nprogress": "0.0.29", "@types/oauth": "0.9.1", "@types/parsimmon": "1.10.0", "@types/portscanner": "2.1.0", diff --git a/src/client/app/common/scripts/loading.ts b/src/client/app/common/scripts/loading.ts index c48e62664..70a3a4c85 100644 --- a/src/client/app/common/scripts/loading.ts +++ b/src/client/app/common/scripts/loading.ts @@ -1,4 +1,4 @@ -const NProgress = require('nprogress'); +import * as NProgress from 'nprogress'; NProgress.configure({ trickleSpeed: 500, showSpinner: false From 85e8b1fbf4059ab0e7568372b47c262518a28f92 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 27 Jan 2019 20:03:58 +0900 Subject: [PATCH 125/429] :art: --- src/client/app/common/views/components/code-core.vue | 2 +- .../app/common/views/components/misskey-flavored-markdown.vue | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/client/app/common/views/components/code-core.vue b/src/client/app/common/views/components/code-core.vue index a50d94394..75564f07d 100644 --- a/src/client/app/common/views/components/code-core.vue +++ b/src/client/app/common/views/components/code-core.vue @@ -5,7 +5,7 @@ diff --git a/src/client/app/desktop/views/components/media-video-dialog.vue b/src/client/app/desktop/views/components/media-video-dialog.vue index cb112e526..3c682ecef 100644 --- a/src/client/app/desktop/views/components/media-video-dialog.vue +++ b/src/client/app/desktop/views/components/media-video-dialog.vue @@ -1,7 +1,7 @@ @@ -18,8 +18,9 @@ export default Vue.extend({ duration: 100, easing: 'linear' }); - const videoTag = this.$refs.video as HTMLVideoElement + const videoTag = this.$refs.video as HTMLVideoElement; if (this.start) videoTag.currentTime = this.start + videoTag.volume = this.$store.state.device.mediaVolume; }, methods: { close() { @@ -30,7 +31,11 @@ export default Vue.extend({ easing: 'linear', complete: () => this.destroyDom() }); - } + }, + volumechange() { + const videoTag = this.$refs.video as HTMLVideoElement; + this.$store.commit('device/set', { key: 'mediaVolume', value: videoTag.volume }); + }, } }); diff --git a/src/client/app/store.ts b/src/client/app/store.ts index 46655b7bd..8cde2d359 100644 --- a/src/client/app/store.ts +++ b/src/client/app/store.ts @@ -56,6 +56,7 @@ const defaultDeviceSettings = { themes: [], enableSounds: true, soundVolume: 0.5, + mediaVolume: 0.5, lang: null, preventUpdate: false, debug: false, From 4a23ebe5347caec77aa543aeb8c3796f839c55cb Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 3 Feb 2019 20:10:20 +0900 Subject: [PATCH 275/429] Refactoring --- src/argv.ts | 11 +++++++++++ src/index.ts | 11 +---------- src/misc/logger.ts | 5 ++--- 3 files changed, 14 insertions(+), 13 deletions(-) create mode 100644 src/argv.ts diff --git a/src/argv.ts b/src/argv.ts new file mode 100644 index 000000000..da22e5fdf --- /dev/null +++ b/src/argv.ts @@ -0,0 +1,11 @@ +import * as program from 'commander'; +import * as pkg from '../package.json'; + +program + .version(pkg.version) + .option('--no-daemons', 'Disable daemon processes (for debbuging)') + .option('--disable-clustering', 'Disable clustering') + .option('--quiet', 'Suppress all logs') + .parse(process.argv); + +export { program }; diff --git a/src/index.ts b/src/index.ts index af9f7de98..ea8d67b77 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,7 +12,6 @@ import chalk from 'chalk'; import * as portscanner from 'portscanner'; import * as isRoot from 'is-root'; import Xev from 'xev'; -import * as program from 'commander'; import * as sysUtils from 'systeminformation'; import mongo, { nativeDbConn } from './db/mongodb'; @@ -23,21 +22,13 @@ import loadConfig from './config/load'; import { Config } from './config/types'; import { lessThan } from './prelude/array'; import * as pkg from '../package.json'; +import { program } from './argv'; const logger = new Logger('core', 'cyan'); const bootLogger = logger.createSubLogger('boot', 'magenta'); const clusterLog = logger.createSubLogger('cluster', 'orange'); const ev = new Xev(); -//#region Command line argument definitions -program - .version(pkg.version) - .option('--no-daemons', 'Disable daemon processes (for debbuging)') - .option('--disable-clustering', 'Disable clustering') - .option('--quiet', 'Suppress all logs') - .parse(process.argv); -//#endregion - /** * Init process */ diff --git a/src/misc/logger.ts b/src/misc/logger.ts index 6d75e65ce..15d2c84d7 100644 --- a/src/misc/logger.ts +++ b/src/misc/logger.ts @@ -1,8 +1,7 @@ import * as cluster from 'cluster'; import chalk from 'chalk'; import * as dateformat from 'dateformat'; - -const quiet = process.argv.find(x => x == '--quiet'); +import { program } from '../argv'; export default class Logger { private domain: string; @@ -21,7 +20,7 @@ export default class Logger { } public log(level: string, message: string, important = false): void { - if (quiet) return; + if (program.quiet) return; const domain = this.color ? chalk.keyword(this.color)(this.domain) : chalk.white(this.domain); if (this.parentLogger) { this.parentLogger.log(level, `[${domain}]\t${message}`, important); From edd1baa9f4640b72df22c0fbf0eeec3da7f01b6b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 3 Feb 2019 20:23:53 +0900 Subject: [PATCH 276/429] :art: --- src/misc/logger.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/misc/logger.ts b/src/misc/logger.ts index 15d2c84d7..f8f7aa732 100644 --- a/src/misc/logger.ts +++ b/src/misc/logger.ts @@ -33,7 +33,7 @@ export default class Logger { } public error(message: string | Error, important = false): void { // 実行を継続できない状況で使う - this.log(chalk.red('ERR '), chalk.red(message.toString()), important); + this.log(important ? chalk.bgRed.white('ERR ') : chalk.red('ERR '), chalk.red(message.toString()), important); } public warn(message: string, important = false): void { // 実行を継続できるが改善すべき状況で使う @@ -41,7 +41,7 @@ export default class Logger { } public succ(message: string, important = false): void { // 何かに成功した状況で使う - this.log(chalk.green('DONE'), chalk.green(message), important); + this.log(important ? chalk.bgGreen.white('DONE') : chalk.green('DONE'), chalk.green(message), important); } public info(message: string, important = false): void { // それ以外 From b97f788d7148b206b1e62b13f86e0005d624e6ef Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 3 Feb 2019 20:31:35 +0900 Subject: [PATCH 277/429] Display version in logo --- src/index.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index ea8d67b77..671594ac0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -61,11 +61,12 @@ async function masterMain() { if (!program.quiet) { //#region Misskey logo - console.log(' _____ _ _ '); - console.log('| |_|___ ___| |_ ___ _ _ '); - console.log('| | | | |_ -|_ -| \'_| -_| | |'); - console.log('|_|_|_|_|___|___|_,_|___|_ |'); - console.log(' |___|\n'); + const v = `v${pkg.version}`; + console.log(' _____ _ _ '); + console.log(' | |_|___ ___| |_ ___ _ _ '); + console.log(' | | | | |_ -|_ -| \'_| -_| | |'); + console.log(' |_|_|_|_|___|___|_,_|___|_ |'); + console.log(' ' + chalk.gray(v) + (' |___|\n'.substr(v.length))); //#endregion } From df54da9510c7c87f91013f1be08fcc6d3baff885 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 3 Feb 2019 20:32:46 +0900 Subject: [PATCH 278/429] Fix type declaretion --- src/@types/nested-property.d.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/@types/nested-property.d.ts b/src/@types/nested-property.d.ts index 6990952ef..097b786a5 100644 --- a/src/@types/nested-property.d.ts +++ b/src/@types/nested-property.d.ts @@ -1,3 +1,5 @@ +type Obj = { [key: string]: any }; + declare module 'nested-property' { interface IHasNestedPropertyOptions { own?: boolean; @@ -9,11 +11,11 @@ declare module 'nested-property' { export function set(object: T, property: string, value: any): T; - export function get(object: object, property: string): any; + export function get(object: Obj, property: string): any; - export function has(object: object, property: string, options?: IHasNestedPropertyOptions): boolean; + export function has(object: Obj, property: string, options?: IHasNestedPropertyOptions): boolean; - export function hasOwn(object: object, property: string, options?: IHasNestedPropertyOptions): boolean; + export function hasOwn(object: Obj, property: string, options?: IHasNestedPropertyOptions): boolean; - export function isIn(object: object, property: string, objectInPath: object, options?: IIsInNestedPropertyOptions): boolean; + export function isIn(object: Obj, property: string, objectInPath: Obj, options?: IIsInNestedPropertyOptions): boolean; } From b4859be098d0752c1517466ee102c7606397d21f Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 3 Feb 2019 21:42:52 +0900 Subject: [PATCH 279/429] Improve log readability --- src/misc/logger.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/misc/logger.ts b/src/misc/logger.ts index f8f7aa732..0cf6b72a6 100644 --- a/src/misc/logger.ts +++ b/src/misc/logger.ts @@ -19,15 +19,16 @@ export default class Logger { return logger; } - public log(level: string, message: string, important = false): void { + public log(level: string, message: string, important = false, subDomains: string[] = []): void { if (program.quiet) return; const domain = this.color ? chalk.keyword(this.color)(this.domain) : chalk.white(this.domain); + const domains = [domain].concat(subDomains); if (this.parentLogger) { - this.parentLogger.log(level, `[${domain}]\t${message}`, important); + this.parentLogger.log(level, message, important, domains); } else { const time = dateformat(new Date(), 'HH:MM:ss'); const process = cluster.isMaster ? '*' : cluster.worker.id; - const log = `${chalk.gray(time)} ${level} ${process}\t[${domain}]\t${message}`; + const log = `${chalk.gray(time)} ${level} ${process}\t[${domains.join(' ')}]\t${message}`; console.log(important ? chalk.bold(log) : log); } } From 014b58cb4098c31c1d0d8d2ad521e48368491d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 3 Feb 2019 22:21:36 +0900 Subject: [PATCH 280/429] Create new type definition for 'is-url' (#4013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create new type definition for 'is-url' * [Client] Resolve #3638 * 10.79.1 * New translations ja-JP.yml (Korean) * Add missing semicolon * Remove file-loader from dependencies (#4025) * Update README.md [AUTOGEN] (#4028) * Update README.md [AUTOGEN] (#4030) * Add visibility test (#4029) * Update ws requirement from 6.1.2 to 6.1.3 (#4027) Updates the requirements on [ws](https://github.com/websockets/ws) to permit the latest version. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/commits/6.1.3) Signed-off-by: dependabot[bot] * Module 'web-push' as import syntax (#4017) * Fix visibility test (#4031) * Upgrade gulp version to 4.0.0 * Prevent typescript errors from crashing * Remove duplicated dependencies * Use parallel and task to specify dependencies * Sort tasks by topological ordering * リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に (#4033) * 非メンション/リプライ投稿がmentionsにあるかどうかはvisibilityと関係ないので削除 * リプライ/メンションされていれば非フォロワーでも参照可能に * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Chinese Simplified) * Fix #4034 (#4037) * Fix #4034 * improve * Module 'crypto' as import syntax (#4011) * Extract MFM normalize function * Extract MFM types * Rename html to toHtml * Rename html-to-mfm to fromHtml * Merge plainParser into mfm * Extract parsePlain function * Rename analyze to parse in MFM tests * Update @types/mongodb requirement from 3.1.18 to 3.1.19 (#4041) Updates the requirements on [@types/mongodb](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] * Update vue-svg-inline-loader requirement from 1.2.7 to 1.2.10 (#4040) Updates the requirements on [vue-svg-inline-loader](https://github.com/oliverfindl/vue-svg-inline-loader) to permit the latest version. - [Release notes](https://github.com/oliverfindl/vue-svg-inline-loader/releases) - [Commits](https://github.com/oliverfindl/vue-svg-inline-loader/commits/v1.2.10) Signed-off-by: dependabot[bot] * Avoid export default * Rename parser to language * Fix import * Introduce silence (#4043) * Introduce silence * Fix icon * delete unnecessary key (#4045) * delete unnecessary key * Add note * Update CHANGELOG.md * [ActivityPub] Use microformats on mentions To avoid pointless link previews. see: https://misskey.xyz/notes/5c51ab5c2d85f2003248eddc * Create type definition for '*/package.json' (#4014) * Create type definition for '*/package.json' * Update tsconfig.json * Update index.ts * Create type definition for 'is-root' (#4001) * Update @types/sharp requirement from 0.21.0 to 0.21.1 Updates the requirements on [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] * Add multiline math syntax Co-authored-by: syuilo * New translations ja-JP.yml (Catalan) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (English) * New translations ja-JP.yml (French) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Italian) * New translations ja-JP.yml (Korean) * New translations ja-JP.yml (Polish) * New translations ja-JP.yml (Portuguese) * New translations ja-JP.yml (Russian) * New translations ja-JP.yml (Spanish) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Dutch) * New translations ja-JP.yml (Norwegian) * New translations ja-JP.yml (English) * Create type definition for 'is-root' * [MFM] Add spin syntax Resolve #4003 * [MFM] Add flip syntax Resolve #4002 * Fix test * Update CHANGELOG.md * 10.79.0 * Update @fortawesome/free-regular-svg-icons requirement (#3963) Updates the requirements on [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) to permit the latest version. - [Release notes](https://github.com/FortAwesome/Font-Awesome/releases) - [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md) - [Commits](https://github.com/FortAwesome/Font-Awesome/commits/5.6.3) Signed-off-by: dependabot[bot] * Update @types/webpack requirement from 4.4.21 to 4.4.24 (#3976) Updates the requirements on [@types/webpack](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] * Update @types/js-yaml requirement from 3.11.4 to 3.12.0 (#3977) Updates the requirements on [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] * Update debug requirement from 4.1.0 to 4.1.1 (#3964) Updates the requirements on [debug](https://github.com/visionmedia/debug) to permit the latest version. - [Release notes](https://github.com/visionmedia/debug/releases) - [Commits](https://github.com/visionmedia/debug/commits/4.1.1) Signed-off-by: dependabot[bot] * New translations ja-JP.yml (Korean) * New translations ja-JP.yml (Korean) * New translations ja-JP.yml (French) * [MFM] spinの中でflipを使えるように * Add jump syntax (#4007) * Add jump syntax * Fix typo: spin -> jump * Fix typo * [MFM] Resolve #4009 * Module 'nprogress' as import syntax (#4012) * :art: * [Client] Fix #4008 * Use yarn instead of npm on CircleCI * touch yarn.lock * [Client] Resolve #3638 * 10.79.1 * New translations ja-JP.yml (Korean) * Add missing semicolon * Remove file-loader from dependencies (#4025) * Update README.md [AUTOGEN] (#4028) * Update README.md [AUTOGEN] (#4030) * Add visibility test (#4029) * Update ws requirement from 6.1.2 to 6.1.3 (#4027) Updates the requirements on [ws](https://github.com/websockets/ws) to permit the latest version. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/commits/6.1.3) Signed-off-by: dependabot[bot] * Module 'web-push' as import syntax (#4017) * Fix visibility test (#4031) * Upgrade gulp version to 4.0.0 * Prevent typescript errors from crashing * Remove duplicated dependencies * Use parallel and task to specify dependencies * Sort tasks by topological ordering * リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に (#4033) * 非メンション/リプライ投稿がmentionsにあるかどうかはvisibilityと関係ないので削除 * リプライ/メンションされていれば非フォロワーでも参照可能に * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Chinese Simplified) * Fix #4034 (#4037) * Fix #4034 * improve * Module 'crypto' as import syntax (#4011) * Extract MFM normalize function * Extract MFM types * Rename html to toHtml * Rename html-to-mfm to fromHtml * Merge plainParser into mfm * Extract parsePlain function * Rename analyze to parse in MFM tests * Update @types/mongodb requirement from 3.1.18 to 3.1.19 (#4041) Updates the requirements on [@types/mongodb](https://github.com/DefinitelyTyped/DefinitelyTyped) to permit the latest version. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] * Update vue-svg-inline-loader requirement from 1.2.7 to 1.2.10 (#4040) Updates the requirements on [vue-svg-inline-loader](https://github.com/oliverfindl/vue-svg-inline-loader) to permit the latest version. - [Release notes](https://github.com/oliverfindl/vue-svg-inline-loader/releases) - [Commits](https://github.com/oliverfindl/vue-svg-inline-loader/commits/v1.2.10) Signed-off-by: dependabot[bot] * Avoid export default * Rename parser to language * Fix import * Introduce silence (#4043) * Introduce silence * Fix icon * Update is-root.d.ts * Update index.ts * Create type definition for 'is-root' * Update is-root.d.ts * Update index.ts * Fix path refs: 7e3a8d56e614a1771015b6b2557fea8127c46aeb * Re-fix path refs: 4bb4903ee513bacf79d475e100019bd3058d9b34, 7e3a8d56e614a1771015b6b2557fea8127c46aeb * Do not import as pack from AP renderer (#4048) * Do not import as pack from AP renderer * rename * Simplify MFM (#4046) * [MFM] Make some syntax block Resolve #3508 * [MFM] Better syntax parsing Allow nesting by same tag * [Client] MFMの制限を緩和 * :art: * Update CHANGELOG.md * 10.80.0 * Update is-url.d.ts --- package.json | 1 - src/@types/is-url.d.ts | 7 +++++++ src/config/load.ts | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 src/@types/is-url.d.ts diff --git a/package.json b/package.json index e4969ade3..8eb1cf965 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "@types/gulp-util": "3.0.34", "@types/is-root": "1.0.0", "@types/is-svg": "3.0.0", - "@types/is-url": "1.2.28", "@types/js-yaml": "3.12.0", "@types/katex": "0.5.0", "@types/koa": "2.0.48", diff --git a/src/@types/is-url.d.ts b/src/@types/is-url.d.ts new file mode 100644 index 000000000..c1ccadd49 --- /dev/null +++ b/src/@types/is-url.d.ts @@ -0,0 +1,7 @@ +declare module 'is-url' { + function isUrl(string: string): boolean; + + namespace isUrl {} // Hack + + export = isUrl; +} diff --git a/src/config/load.ts b/src/config/load.ts index ba8b4af3c..57cfb8075 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -6,7 +6,7 @@ import * as fs from 'fs'; import { URL } from 'url'; import * as yaml from 'js-yaml'; import { Source, Mixin } from './types'; -import isUrl = require('is-url'); +import * as isUrl from 'is-url'; import * as pkg from '../../package.json'; /** From ceda3dd72a5b4ebe01500d0a5e76a58699c878bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 3 Feb 2019 22:21:47 +0900 Subject: [PATCH 281/429] Create new type definition for 'escape-regexp' (#4058) --- src/@types/escape-regexp.d.ts | 7 +++++++ src/server/api/endpoints/hashtags/search.ts | 2 +- src/server/api/endpoints/users/search.ts | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 src/@types/escape-regexp.d.ts diff --git a/src/@types/escape-regexp.d.ts b/src/@types/escape-regexp.d.ts new file mode 100644 index 000000000..d68e6048a --- /dev/null +++ b/src/@types/escape-regexp.d.ts @@ -0,0 +1,7 @@ +declare module 'escape-regexp' { + function escapeRegExp(str: string): string; + + namespace escapeRegExp {} // Hack + + export = escapeRegExp; +} diff --git a/src/server/api/endpoints/hashtags/search.ts b/src/server/api/endpoints/hashtags/search.ts index 4d753808d..d8a215635 100644 --- a/src/server/api/endpoints/hashtags/search.ts +++ b/src/server/api/endpoints/hashtags/search.ts @@ -1,7 +1,7 @@ import $ from 'cafy'; import Hashtag from '../../../../models/hashtag'; import define from '../../define'; -const escapeRegexp = require('escape-regexp'); +import * as escapeRegexp from 'escape-regexp'; export const meta = { desc: { diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts index 86b16dcbb..b0a789c7d 100644 --- a/src/server/api/endpoints/users/search.ts +++ b/src/server/api/endpoints/users/search.ts @@ -1,5 +1,5 @@ import $ from 'cafy'; -const escapeRegexp = require('escape-regexp'); +import * as escapeRegexp from 'escape-regexp'; import User, { pack, validateUsername, IUser } from '../../../../models/user'; import define from '../../define'; From ce576dea8fe3356e919723f71d7ea09d378f3bea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 3 Feb 2019 22:21:55 +0900 Subject: [PATCH 282/429] Create type definition for 'recaptcha-promise' (#4068) --- src/@types/recaptcha-promise.d.ts | 16 ++++++++++++++++ src/server/api/private/signup.ts | 3 +-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/@types/recaptcha-promise.d.ts diff --git a/src/@types/recaptcha-promise.d.ts b/src/@types/recaptcha-promise.d.ts new file mode 100644 index 000000000..cfbd5eebf --- /dev/null +++ b/src/@types/recaptcha-promise.d.ts @@ -0,0 +1,16 @@ +declare module 'recaptcha-promise' { + interface IVerifyOptions { + secret_key?: string; + } + + interface IVerify { + (response: string, remoteAddress?: string): Promise; + init(options: IVerifyOptions): IVerify; + } + + namespace recaptchaPromise {} // Hack + + const verify: IVerify; + + export = verify; +} diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index b89629bcd..6318eabdb 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -8,14 +8,13 @@ import Meta from '../../../models/meta'; import RegistrationTicket from '../../../models/registration-tickets'; import usersChart from '../../../chart/users'; import fetchMeta from '../../../misc/fetch-meta'; +import * as recaptcha from 'recaptcha-promise'; export default async (ctx: Koa.BaseContext) => { const body = ctx.request.body as any; const instance = await fetchMeta(); - const recaptcha = require('recaptcha-promise'); - // Verify recaptcha // ただしテスト時はこの機構は障害となるため無効にする if (process.env.NODE_ENV !== 'test' && instance.enableRecaptcha) { From 5049870b6e2e8371509ac4984cc4f74674245d87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 3 Feb 2019 23:01:03 +0900 Subject: [PATCH 283/429] Create type definition for 'koa-slow' (#4072) --- src/@types/koa-slow.d.ts | 14 ++++++++++++++ src/server/index.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/@types/koa-slow.d.ts diff --git a/src/@types/koa-slow.d.ts b/src/@types/koa-slow.d.ts new file mode 100644 index 000000000..bca6a8490 --- /dev/null +++ b/src/@types/koa-slow.d.ts @@ -0,0 +1,14 @@ +declare module 'koa-slow' { + import { Middleware } from 'koa'; + + interface ISlowOptions { + url?: RegExp + delay?: number + } + + function slow(options?: ISlowOptions): Middleware; + + namespace slow {} // Hack + + export = slow; +} diff --git a/src/server/index.ts b/src/server/index.ts index 57f1326f2..be0a6f5c7 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -13,7 +13,7 @@ import * as mount from 'koa-mount'; import * as compress from 'koa-compress'; import * as koaLogger from 'koa-logger'; import * as requestStats from 'request-stats'; -//const slow = require('koa-slow'); +//import * as slow from 'koa-slow'; import activityPub from './activitypub'; import webFinger from './webfinger'; From fe13c17fcba8f3507e58adfaac181f77a63518ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 3 Feb 2019 23:41:05 +0900 Subject: [PATCH 284/429] Create type definition for 'langmap' (#4059) * Create type definition for 'langmap' * Follow lint --- src/@types/langmap.d.ts | 10 ++++++++++ src/server/api/endpoints/i/update.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/@types/langmap.d.ts diff --git a/src/@types/langmap.d.ts b/src/@types/langmap.d.ts new file mode 100644 index 000000000..a0f99028a --- /dev/null +++ b/src/@types/langmap.d.ts @@ -0,0 +1,10 @@ +declare module 'langmap' { + type Lang = { + nativeName: string; + englishName: string; + }; + + const langmap: { [lang: string]: Lang }; + + export = langmap; +} diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts index 4b02e393b..d087687a5 100644 --- a/src/server/api/endpoints/i/update.ts +++ b/src/server/api/endpoints/i/update.ts @@ -9,7 +9,7 @@ import getDriveFileUrl from '../../../../misc/get-drive-file-url'; import { parse, parsePlain } from '../../../../mfm/parse'; import extractEmojis from '../../../../misc/extract-emojis'; import extractHashtags from '../../../../misc/extract-hashtags'; -const langmap = require('langmap'); +import * as langmap from 'langmap'; export const meta = { desc: { From 893a3b527dbb4364ef20b38efbd0d50df27e89b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 3 Feb 2019 23:41:27 +0900 Subject: [PATCH 285/429] Create type definition for 'os-utils' (#4050) --- src/@types/os-utils.d.ts | 30 ++++++++++++++++++++++++++++++ src/daemons/server-stats.ts | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/@types/os-utils.d.ts diff --git a/src/@types/os-utils.d.ts b/src/@types/os-utils.d.ts new file mode 100644 index 000000000..390df17d3 --- /dev/null +++ b/src/@types/os-utils.d.ts @@ -0,0 +1,30 @@ +declare module 'os-utils' { + type FreeCommandCallback = (usedmem: number) => void; + + type HarddriveCallback = (total: number, free: number, used: number) => void; + + type GetProcessesCallback = (result: string) => void; + + type CPUCallback = (perc: number) => void; + + export function platform(): NodeJS.Platform; + export function cpuCount(): number; + export function sysUptime(): number; + export function processUptime(): number; + + export function freemem(): number; + export function totalmem(): number; + export function freememPercentage(): number; + export function freeCommand(callback: FreeCommandCallback): void; + + export function harddrive(callback: HarddriveCallback): void; + + export function getProcesses(callback: GetProcessesCallback): void; + export function getProcesses(nProcess: number, callback: GetProcessesCallback): void; + + export function allLoadavg(): string; + export function loadavg(_time?: number): number; + + export function cpuFree(callback: CPUCallback): void; + export function cpuUsage(callback: CPUCallback): void; +} diff --git a/src/daemons/server-stats.ts b/src/daemons/server-stats.ts index 6028277b2..b82f42177 100644 --- a/src/daemons/server-stats.ts +++ b/src/daemons/server-stats.ts @@ -3,7 +3,7 @@ import * as sysUtils from 'systeminformation'; import * as diskusage from 'diskusage'; import * as Deque from 'double-ended-queue'; import Xev from 'xev'; -const osUtils = require('os-utils'); +import * as osUtils from 'os-utils'; const ev = new Xev(); From 6e0c055fafca940f13893123fe2303394d48f498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Sun, 3 Feb 2019 23:49:00 +0900 Subject: [PATCH 286/429] Module 'jsdom' as import syntax (#4016) --- package.json | 1 + src/mfm/toHtml.ts | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8eb1cf965..b480519f9 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@types/is-root": "1.0.0", "@types/is-svg": "3.0.0", "@types/js-yaml": "3.12.0", + "@types/jsdom": "12.2.1", "@types/katex": "0.5.0", "@types/koa": "2.0.48", "@types/koa-bodyparser": "5.0.2", diff --git a/src/mfm/toHtml.ts b/src/mfm/toHtml.ts index 85e8c8a7f..e67ccc503 100644 --- a/src/mfm/toHtml.ts +++ b/src/mfm/toHtml.ts @@ -1,5 +1,4 @@ -const jsdom = require('jsdom'); -const { JSDOM } = jsdom; +import { JSDOM } from 'jsdom'; import config from '../config'; import { INote } from '../models/note'; import { intersperse } from '../prelude/array'; @@ -158,9 +157,9 @@ export function toHtml(tokens: MfmForest, mentionedRemoteUsers: INote['mentioned text(token) { const el = doc.createElement('span'); - const nodes = (token.node.props.text as string).split(/\r\n|\r|\n/).map(x => doc.createTextNode(x)); + const nodes = (token.node.props.text as string).split(/\r\n|\r|\n/).map(x => doc.createTextNode(x) as Node); - for (const x of intersperse('br', nodes)) { + for (const x of intersperse('br', nodes)) { el.appendChild(x === 'br' ? doc.createElement('br') : x); } From 8f2f4b6d2d64dd83643f958bb5863f40aa563e6a Mon Sep 17 00:00:00 2001 From: Aya Morisawa Date: Sun, 3 Feb 2019 23:52:46 +0900 Subject: [PATCH 287/429] Add missing semicolons --- src/@types/deepcopy.d.ts | 2 +- src/@types/koa-slow.d.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/@types/deepcopy.d.ts b/src/@types/deepcopy.d.ts index afeee5191..3eb08d577 100644 --- a/src/@types/deepcopy.d.ts +++ b/src/@types/deepcopy.d.ts @@ -8,7 +8,7 @@ declare namespace deepcopy { valueType: DeepcopyCustomizerValueType) => T; interface DeepcopyOptions { - customizer: DeepcopyCustomizer + customizer: DeepcopyCustomizer; } export function deepcopy( diff --git a/src/@types/koa-slow.d.ts b/src/@types/koa-slow.d.ts index bca6a8490..a7908d860 100644 --- a/src/@types/koa-slow.d.ts +++ b/src/@types/koa-slow.d.ts @@ -2,13 +2,13 @@ declare module 'koa-slow' { import { Middleware } from 'koa'; interface ISlowOptions { - url?: RegExp - delay?: number + url?: RegExp; + delay?: number; } function slow(options?: ISlowOptions): Middleware; - namespace slow {} // Hack + namespace slow { } // Hack export = slow; } From 8b71006fbec6b4a0f57828aea69420b610e9db4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 4 Feb 2019 00:09:24 +0900 Subject: [PATCH 288/429] Bye 'is-url' --- package.json | 1 - src/@types/is-url.d.ts | 7 ------- src/config/load.ts | 14 +++++++++----- 3 files changed, 9 insertions(+), 13 deletions(-) delete mode 100644 src/@types/is-url.d.ts diff --git a/package.json b/package.json index b480519f9..820c76bad 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,6 @@ "insert-text-at-cursor": "0.1.1", "is-root": "2.0.0", "is-svg": "3.0.0", - "is-url": "1.2.4", "js-yaml": "3.12.1", "jsdom": "13.1.0", "json5": "2.1.0", diff --git a/src/@types/is-url.d.ts b/src/@types/is-url.d.ts deleted file mode 100644 index c1ccadd49..000000000 --- a/src/@types/is-url.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module 'is-url' { - function isUrl(string: string): boolean; - - namespace isUrl {} // Hack - - export = isUrl; -} diff --git a/src/config/load.ts b/src/config/load.ts index 57cfb8075..fc3e69919 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -6,7 +6,6 @@ import * as fs from 'fs'; import { URL } from 'url'; import * as yaml from 'js-yaml'; import { Source, Mixin } from './types'; -import * as isUrl from 'is-url'; import * as pkg from '../../package.json'; /** @@ -26,10 +25,7 @@ export default function load() { const mixin = {} as Mixin; - // Validate URLs - if (!isUrl(config.url)) throw `url="${config.url}" is not a valid URL`; - - const url = new URL(config.url); + const url = validateUrl(config.url); config.url = normalizeUrl(config.url); mixin.host = url.host; @@ -51,6 +47,14 @@ export default function load() { return Object.assign(config, mixin); } +function validateUrl(url: string) { + try { + return new URL(url); + } catch (e) { + throw `url="${url}" is not a valid URL`; + } +} + function normalizeUrl(url: string) { return url.endsWith('/') ? url.substr(0, url.length - 1) : url; } From 1b0e03704e078f8d7310d9496c35c39072852f9a Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 01:13:39 +0900 Subject: [PATCH 289/429] New translations ja-JP.yml (Polish) (#4115) --- locales/pl-PL.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index ea549dfd6..188016878 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -472,7 +472,7 @@ common/views/components/visibility-chooser.vue: local-followers: "Dla śledzących (tylko lokalnie)" common/views/components/trends.vue: count: "{}人が投稿" - empty: "トレンドなし" + empty: "Brak popularnych hashtagów" common/views/components/language-settings.vue: title: "Język" pick-language: "Wybierz język" From 206b57b9628bb414d1915ade3c254447f42c7da8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 01:22:37 +0900 Subject: [PATCH 290/429] New translations ja-JP.yml (Polish) (#4116) --- locales/pl-PL.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 188016878..6e101cb04 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -395,11 +395,11 @@ common/views/components/signin.vue: token: "Token" signing-in: "Logowanie…" signin: "Zaloguj" - or: "または" + or: "lub" signin-with-twitter: "Zaloguj się za pomocą Twittera" signin-with-github: "Zaloguj się za pomocą GitHuba" signin-with-discord: "Zaloguj się za pomocą Discorda" - login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。" + login-failed: "Logowanie nie powiodło się. Upewnij się, że podałeś prawidłową nazwę użytkownika i hasło." common/views/components/signup.vue: invitation-code: "Kod zaproszenia" invitation-info: "招待コードをお持ちでない方は、管理者までご連絡ください。" @@ -478,7 +478,7 @@ common/views/components/language-settings.vue: pick-language: "Wybierz język" recommended: "Zalecane" auto: "Automatyczny" - specify-language: "言語を指定" + specify-language: "Wybierz język" info: "Musisz odświeżyć stronę, aby zmiany zostały uwzględnione." common/views/components/profile-editor.vue: title: "Twój profil" @@ -504,15 +504,15 @@ common/views/components/profile-editor.vue: upload-failed: "Wysyłanie nie powiodło się" email: "Ustawienia e-mail" email-address: "Adres e-mail" - email-verified: "メールアドレスが確認されました" + email-verified: "Twój adres e-mail został zweryfikowany." email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" common/views/components/user-list-editor.vue: users: "Użytkownicy" rename: "Zmień nazwę listy" delete: "Usuń listę" remove-user: "Usuń z tej listy" - delete-are-you-sure: "リスト「$1」を削除しますか?" - deleted: "削除しました" + delete-are-you-sure: "Usunąć listę \"$1\"?" + deleted: "Usunięto" common/views/widgets/broadcast.vue: fetching: "Sprawdzanie" no-broadcasts: "Brak transmisji" @@ -595,7 +595,7 @@ desktop/views/components/activity.vue: title: "Aktywność" toggle: "Przełącz widok" desktop/views/components/calendar.vue: - title: "{year}年 {month}月" + title: "{year} / {month}" prev: "Poprzedni miesiąc" next: "Następny miesiąc" go: "Naciśnij, aby przejść" @@ -706,7 +706,7 @@ desktop/views/components/note.vue: add-reaction: "Dodaj reakcję" undo-reaction: "リアクション解除" detail: "Szczegóły" - private: "この投稿は非公開です" + private: "Ten wpis jest prywatny" deleted: "この投稿は削除されました" desktop/views/components/notes.vue: error: "Ładowanie nie powiodło się." From c4f74913225cc92d4285b6da0182b0daf62ca404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 4 Feb 2019 01:30:33 +0900 Subject: [PATCH 291/429] Revert "Create new type definition for 'is-url' (#4013)" This reverts commit 014b58cb4098c31c1d0d8d2ad521e48368491d07. --- package.json | 1 + src/@types/is-url.d.ts | 7 ------- src/config/load.ts | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 src/@types/is-url.d.ts diff --git a/package.json b/package.json index b480519f9..ad24a1ef1 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "@types/gulp-util": "3.0.34", "@types/is-root": "1.0.0", "@types/is-svg": "3.0.0", + "@types/is-url": "1.2.28", "@types/js-yaml": "3.12.0", "@types/jsdom": "12.2.1", "@types/katex": "0.5.0", diff --git a/src/@types/is-url.d.ts b/src/@types/is-url.d.ts deleted file mode 100644 index c1ccadd49..000000000 --- a/src/@types/is-url.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module 'is-url' { - function isUrl(string: string): boolean; - - namespace isUrl {} // Hack - - export = isUrl; -} diff --git a/src/config/load.ts b/src/config/load.ts index 57cfb8075..ba8b4af3c 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -6,7 +6,7 @@ import * as fs from 'fs'; import { URL } from 'url'; import * as yaml from 'js-yaml'; import { Source, Mixin } from './types'; -import * as isUrl from 'is-url'; +import isUrl = require('is-url'); import * as pkg from '../../package.json'; /** From 5891135ac17aa94bd9c20bf84d5afc1b6290fbec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 4 Feb 2019 01:46:59 +0900 Subject: [PATCH 292/429] Create type definition for ./locales (#4117) --- locales/index.d.ts | 5 +++++ src/server/web/docs.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 locales/index.d.ts diff --git a/locales/index.d.ts b/locales/index.d.ts new file mode 100644 index 000000000..4a9672c63 --- /dev/null +++ b/locales/index.d.ts @@ -0,0 +1,5 @@ +type Locale = { [key: string]: string }; + +declare const locales: { [lang: string]: Locale }; + +export default locales; diff --git a/src/server/web/docs.ts b/src/server/web/docs.ts index f823c308c..1455abae7 100644 --- a/src/server/web/docs.ts +++ b/src/server/web/docs.ts @@ -16,7 +16,7 @@ import config from '../../config'; import { licenseHtml } from '../../misc/license'; const constants = require('../../const.json'); import endpoints from '../api/endpoints'; -const locales = require('../../../locales'); +import locales from '../../../locales'; import * as nestedProperty from 'nested-property'; function getLang(lang: string): string { From 99d8d0a484eca8901ea6f1d556d51411ddfd9209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 4 Feb 2019 01:47:12 +0900 Subject: [PATCH 293/429] Create type definition for '*/const.json' (#4118) --- src/@types/const.json.d.ts | 3 +++ src/server/web/docs.ts | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 src/@types/const.json.d.ts diff --git a/src/@types/const.json.d.ts b/src/@types/const.json.d.ts new file mode 100644 index 000000000..40a96f2a2 --- /dev/null +++ b/src/@types/const.json.d.ts @@ -0,0 +1,3 @@ +declare module '*/const.json' { + const copyright: string; +} diff --git a/src/server/web/docs.ts b/src/server/web/docs.ts index 1455abae7..0597f50a9 100644 --- a/src/server/web/docs.ts +++ b/src/server/web/docs.ts @@ -14,7 +14,7 @@ import * as glob from 'glob'; import * as yaml from 'js-yaml'; import config from '../../config'; import { licenseHtml } from '../../misc/license'; -const constants = require('../../const.json'); +import { copyright } from '../../const.json'; import endpoints from '../api/endpoints'; import locales from '../../../locales'; import * as nestedProperty from 'nested-property'; @@ -59,7 +59,7 @@ async function genVars(lang: string): Promise<{ [key: string]: any }> { vars['config'] = config; - vars['copyright'] = constants.copyright; + vars['copyright'] = copyright; vars['license'] = licenseHtml; From ba1b5a8ede123bbe4243aa3df0dde5d212d5a285 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 01:51:01 +0900 Subject: [PATCH 294/429] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a05fbe657..8b89c01ac 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). -:heart: Backers & Sponsors +:heart: Backers ---------------------------------------------------------------- From beb1b570d4a93e39b2ebfc77b25b5f09258f504d Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 01:52:39 +0900 Subject: [PATCH 295/429] New translations ja-JP.yml (Polish) (#4119) --- locales/pl-PL.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 6e101cb04..d32d2ea59 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -356,7 +356,7 @@ common/views/components/user-menu.vue: block: "Zablokuj" unblock: "Odblokuj" push-to-list: "Dodaj do listy" - select-list: "リストを選択してください" + select-list: "Wybierz listę" report-abuse: "Zgłoś nadużycie" report-abuse-detail: "どのような迷惑行為を行っていますか?" report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。" @@ -1011,7 +1011,7 @@ admin/views/abuse.vue: target: "対象" reporter: "報告者" details: "詳細" - remove-report: "削除" + remove-report: "Usuń" admin/views/instance.vue: instance: "インスタンス" instance-name: "インスタンス名" From cf9e8ed39ec2acd098ba3587f0957a6afa641a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 4 Feb 2019 02:06:08 +0900 Subject: [PATCH 296/429] Update load.ts --- src/config/load.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/config/load.ts b/src/config/load.ts index fc3e69919..904305647 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -47,14 +47,21 @@ export default function load() { return Object.assign(config, mixin); } -function validateUrl(url: string) { +function tryCreateUrl(url: string) { try { return new URL(url); } catch (e) { - throw `url="${url}" is not a valid URL`; + throw `url="${url}" is not a valid URL.`; } } +function validateUrl(url: string) { + const result = tryCreateUrl(url); + if (result.pathname.trim('/').length) throw `url="${url}" is not a valid URL, has a pathname.`; + if (!url.includes(result.host)) throw `url="${url}" is not a valid URL, has an invalid hostname.`; + return result; +} + function normalizeUrl(url: string) { return url.endsWith('/') ? url.substr(0, url.length - 1) : url; } From 67792fcb5e866cfad6fc6788b8555526658099fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 4 Feb 2019 02:09:41 +0900 Subject: [PATCH 297/429] Update load.ts --- src/config/load.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/config/load.ts b/src/config/load.ts index 904305647..1cec3b148 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -59,6 +59,7 @@ function validateUrl(url: string) { const result = tryCreateUrl(url); if (result.pathname.trim('/').length) throw `url="${url}" is not a valid URL, has a pathname.`; if (!url.includes(result.host)) throw `url="${url}" is not a valid URL, has an invalid hostname.`; + if (!/^https?:$/.test(result.protocol)) throw `url="${url}" is not a valid URL, has an invalid protocol.`; return result; } From c7e8c27ce6652b64a55d7d5ea85c66b4a1cbc06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 4 Feb 2019 02:14:18 +0900 Subject: [PATCH 298/429] Fix bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit C#っぽく使ってしまっていた。 --- src/config/load.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/load.ts b/src/config/load.ts index 1cec3b148..c0b966d53 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -57,7 +57,7 @@ function tryCreateUrl(url: string) { function validateUrl(url: string) { const result = tryCreateUrl(url); - if (result.pathname.trim('/').length) throw `url="${url}" is not a valid URL, has a pathname.`; + if (result.pathname.replace('/', '').length) throw `url="${url}" is not a valid URL, has a pathname.`; if (!url.includes(result.host)) throw `url="${url}" is not a valid URL, has an invalid hostname.`; if (!/^https?:$/.test(result.protocol)) throw `url="${url}" is not a valid URL, has an invalid protocol.`; return result; From 42d6ed62f6bda8ee58c41f46e8015cef61978f9e Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 07:01:19 +0900 Subject: [PATCH 299/429] New translations ja-JP.yml (English) (#4120) --- locales/en-US.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 4b3bb9861..f94e6b478 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -360,8 +360,8 @@ common/views/components/user-menu.vue: report-abuse: "Report abuse" report-abuse-detail: "What kind of nuisance did you encounter?" report-abuse-reported: "The issue has been reported to the administrator. Your cooperation is much appreciated." - silence: "Make Silence" - unsilence: "Unsilence" + silence: "Mute" + unsilence: "Unmute" suspend: "Suspend" unsuspend: "Unsuspend" common/views/components/poll.vue: @@ -1147,8 +1147,8 @@ admin/views/users.vue: unsuspend: "Unsuspend" unsuspend-confirm: "Are you sure you want to unsuspend this account?" unsuspended: "The user has successfully unsuspended." - make-silence: "Make Silence" - unmake-silence: "Unmake Silence" + make-silence: "Mute" + unmake-silence: "Unmute" verify: "Verify account" verify-confirm: "Do you want this to be a verified account?" verified: "The account is now being verified" From 9950b6fbc6c5e880896fdfa04b97cf1813477a63 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 4 Feb 2019 07:16:01 +0900 Subject: [PATCH 300/429] Update tslint-sonarts requirement from 1.8.0 to 1.9.0 (#3978) Updates the requirements on [tslint-sonarts](https://github.com/SonarSource/SonarTS) to permit the latest version. - [Release notes](https://github.com/SonarSource/SonarTS/releases) - [Commits](https://github.com/SonarSource/SonarTS/commits/v1.9.0) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ad24a1ef1..53cdbdb43 100644 --- a/package.json +++ b/package.json @@ -221,7 +221,7 @@ "ts-loader": "5.3.3", "ts-node": "7.0.1", "tslint": "5.12.0", - "tslint-sonarts": "1.8.0", + "tslint-sonarts": "1.9.0", "typescript": "3.2.4", "typescript-eslint-parser": "21.0.2", "uglify-es": "3.3.9", From 874c0eae6a64c144113d61fe010ec0ca1b9ff4c4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 09:02:23 +0900 Subject: [PATCH 301/429] Better error log of WebFinger --- src/remote/resolve-user.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/remote/resolve-user.ts b/src/remote/resolve-user.ts index 8deba6e21..f4e6a138e 100644 --- a/src/remote/resolve-user.ts +++ b/src/remote/resolve-user.ts @@ -78,7 +78,10 @@ export default async (username: string, _host: string, option?: any, resync?: bo async function resolveSelf(acctLower: string) { logger.info(`WebFinger for ${chalk.yellow(acctLower)}`); - const finger = await webFinger(acctLower); + const finger = await webFinger(acctLower).catch(e => { + logger.error(`Failed to WebFinger for ${chalk.yellow(acctLower)}: ${e.message} (${e.status})`); + throw e; + }); const self = finger.links.find(link => link.rel && link.rel.toLowerCase() === 'self'); if (!self) { throw new Error('self link not found'); From 11101a6acaef77504f65c65b913973c38915d467 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 09:06:13 +0900 Subject: [PATCH 302/429] Better error log of WebFinger --- src/remote/resolve-user.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/remote/resolve-user.ts b/src/remote/resolve-user.ts index f4e6a138e..400293da8 100644 --- a/src/remote/resolve-user.ts +++ b/src/remote/resolve-user.ts @@ -84,6 +84,7 @@ async function resolveSelf(acctLower: string) { }); const self = finger.links.find(link => link.rel && link.rel.toLowerCase() === 'self'); if (!self) { + logger.error(`Failed to WebFinger for ${chalk.yellow(acctLower)}: self link not found`); throw new Error('self link not found'); } return self; From b536ee4dcd24f102f1ef8b3945a07880ec0dd561 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 09:09:45 +0900 Subject: [PATCH 303/429] Add collaborators credit --- src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.ts b/src/index.ts index 671594ac0..392c8881f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -72,6 +72,7 @@ async function masterMain() { bootLogger.info('Welcome to Misskey!'); bootLogger.info(`Misskey v${pkg.version}`, true); + bootLogger.info('Misskey is maintained by @syuilo, @AyaMorisawa, @mei23 and @acid-chicken.'); try { // initialize app From 90b6688057780c10593d2597225552af16521c97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 4 Feb 2019 09:29:47 +0900 Subject: [PATCH 304/429] Update apexcharts requirement from 2.5.1 to 3.2.1 (#4124) Updates the requirements on [apexcharts](https://github.com/apexcharts/apexcharts.js) to permit the latest version. - [Release notes](https://github.com/apexcharts/apexcharts.js/releases) - [Changelog](https://github.com/apexcharts/apexcharts.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/apexcharts/apexcharts.js/commits/v3.2.1) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 53cdbdb43..ca216fefc 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "@types/websocket": "0.0.40", "@types/ws": "6.0.1", "animejs": "3.0.1", - "apexcharts": "2.5.1", + "apexcharts": "3.2.1", "autobind-decorator": "2.4.0", "autosize": "4.0.2", "autwh": "0.1.0", From 30b1b1a5edc944b0afbef52db942d5f7572f3add Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 4 Feb 2019 09:37:15 +0900 Subject: [PATCH 305/429] Fix imports --- src/client/app/admin/views/charts.vue | 2 +- src/client/app/admin/views/cpu-memory.vue | 2 +- src/client/app/common/views/components/drive-settings.vue | 2 +- src/client/app/desktop/views/pages/deck/deck.hashtag-column.vue | 2 +- src/client/app/desktop/views/pages/deck/deck.user-column.vue | 2 +- src/client/app/mobile/views/components/activity.vue | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/client/app/admin/views/charts.vue b/src/client/app/admin/views/charts.vue index 2100cc288..15c2a5997 100644 --- a/src/client/app/admin/views/charts.vue +++ b/src/client/app/admin/views/charts.vue @@ -42,7 +42,7 @@ import Vue from 'vue'; import i18n from '../../i18n'; import * as tinycolor from 'tinycolor2'; -import * as ApexCharts from 'apexcharts'; +import ApexCharts from 'apexcharts'; const limit = 90; diff --git a/src/client/app/admin/views/cpu-memory.vue b/src/client/app/admin/views/cpu-memory.vue index a8237fe41..a3951e761 100644 --- a/src/client/app/admin/views/cpu-memory.vue +++ b/src/client/app/admin/views/cpu-memory.vue @@ -19,7 +19,7 @@ diff --git a/src/client/app/desktop/views/pages/user/user.photos.vue b/src/client/app/desktop/views/pages/user/user.photos.vue index cd8853e0b..d989738e5 100644 --- a/src/client/app/desktop/views/pages/user/user.photos.vue +++ b/src/client/app/desktop/views/pages/user/user.photos.vue @@ -3,8 +3,8 @@

{{ $t('title') }}

{{ $t('loading') }}

-

{{ $t('no-photos') }}

@@ -14,6 +14,8 @@ diff --git a/src/client/app/mobile/views/components/note-card.vue b/src/client/app/mobile/views/components/note-card.vue index 43f821085..01f52c76f 100644 --- a/src/client/app/mobile/views/components/note-card.vue +++ b/src/client/app/mobile/views/components/note-card.vue @@ -2,7 +2,7 @@