Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6dc6c6984 | ||
|
|
517084b1fc | ||
|
|
27763e6898 | ||
|
|
57dde1da38 | ||
|
|
0bb961767c | ||
|
|
88515ce677 | ||
|
|
00562e840c | ||
|
|
b7927ba386 | ||
|
|
9c363ff045 | ||
|
|
1dbce5e3e2 | ||
|
|
361a9ca1be | ||
|
|
cde6514839 | ||
|
|
507e2f727e | ||
|
|
8028499d2b | ||
|
|
c2c79c4a87 | ||
|
|
d56f7f3390 | ||
|
|
ef70d17194 | ||
|
|
9789b9a083 | ||
|
|
e6311fdb13 | ||
|
|
2231c54dee | ||
|
|
20de9a5e35 | ||
|
|
ec3a6d7097 | ||
|
|
9d99bf5af8 | ||
|
|
52911cc9fd | ||
|
|
6f71ba376d | ||
|
|
9f439aabba | ||
|
|
33ad60b1f3 | ||
|
|
010d3f8281 | ||
|
|
e27c4bf1b9 | ||
|
|
11cfc58ffc | ||
|
|
91f38a8ddd | ||
|
|
b56fed8ed5 | ||
|
|
4a93dadc1c | ||
|
|
3a5f55c471 | ||
|
|
2919e37586 | ||
|
|
077bdbfdef | ||
|
|
61ac024127 | ||
|
|
8db8d3f39e | ||
|
|
e7032363d7 | ||
|
|
8a9dc26419 | ||
|
|
022f5a18c8 | ||
|
|
eae4b2f2e9 | ||
|
|
d285452dec |
24
CHANGELOG.md
24
CHANGELOG.md
@@ -1,6 +1,30 @@
|
||||
ChangeLog
|
||||
=========
|
||||
|
||||
10.90.4
|
||||
----------
|
||||
* url-previewでembedプレイヤー展開をオプトインにするように
|
||||
* デザインの調整
|
||||
* ユーザビリティの強化
|
||||
|
||||
10.90.3
|
||||
----------
|
||||
* モバイルのデッキで投稿フォームウィジェットが設置できなかった問題を修正
|
||||
* ドキュメントの強化
|
||||
* デザインの調整
|
||||
* ユーザビリティの強化
|
||||
|
||||
10.90.2
|
||||
----------
|
||||
* アカウントが削除できない問題を修正
|
||||
* ドキュメントの強化
|
||||
* デザインの調整
|
||||
|
||||
10.90.1
|
||||
----------
|
||||
* アカウントを作成したときに自動でホームに遷移しない問題を修正
|
||||
* ユーザビリティの強化
|
||||
|
||||
10.90.0
|
||||
----------
|
||||
* モバイル版でもデッキを使えるように
|
||||
|
||||
@@ -40,10 +40,10 @@ Stands for _**M**iss**k**ey_.
|
||||
Stands for _**S**ervice**W**orker_.
|
||||
|
||||
### Nyaize
|
||||
な を にゃ にすること
|
||||
Convert な(na) to にゃ(nya)
|
||||
|
||||
#### Denyaize
|
||||
Nyaizeを解除すること
|
||||
Revert Nyaize
|
||||
|
||||
## Code style
|
||||
### Don't use `export default`
|
||||
@@ -59,16 +59,16 @@ export function something(foo: string): string {
|
||||
|
||||
## Directory structure
|
||||
```
|
||||
src ... ソースコード
|
||||
@types ... 外部ライブラリなどの型定義
|
||||
prelude ... Misskeyに関係ないかつ副作用なし
|
||||
misc ... 副作用なしのユーティリティ処理
|
||||
service ... 副作用ありの共通処理
|
||||
queue ... ジョブキューとジョブ
|
||||
server ... Webサーバー
|
||||
client ... クライアント
|
||||
src ... Source code
|
||||
@types ... Type definitions
|
||||
prelude ... Independence utils for coding JavaScript without side effects
|
||||
misc ... Independence utils for Misskey without side effects
|
||||
service ... Common functions with side effects
|
||||
queue ... Job queues and Jobs
|
||||
server ... Web Server
|
||||
client ... Client
|
||||
mfm ... MFM
|
||||
|
||||
test ... テスト
|
||||
test ... Test code
|
||||
|
||||
```
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "パスワード"
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
signin: "ログイン履歴"
|
||||
password: "パスワード"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "Zwei-Faktor-Authentifizierung"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "Verstanden!"
|
||||
customization-tips:
|
||||
title: "Anpassung-Tipps"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "Passwort"
|
||||
token: "Token"
|
||||
signing-in: "Melde an..."
|
||||
signin: "Anmelden"
|
||||
or: "Oder"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "Sicherheit"
|
||||
signin: "サインイン履歴"
|
||||
signin: "ログイン履歴"
|
||||
password: "Passwort"
|
||||
other: "Anderes"
|
||||
license: "Lizenz"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "Nacht Modus"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "Abgerundete Ecken"
|
||||
circle-icons: "Kreisförmige Icons"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "Zeige Antworten"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "管理"
|
||||
settings: "Einstellungen"
|
||||
signout: "Ausloggen"
|
||||
dark: "Verdunkeln"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "Spielen"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "Two-factor authentication"
|
||||
customize-home: "Customize home layout"
|
||||
featured-notes: "Featured notes"
|
||||
dark-mode: "Dark Mode"
|
||||
use-shadow: "Use shadows in the UI"
|
||||
rounded-corners: "Round corners of UI"
|
||||
circle-icons: "Use circle icons"
|
||||
contrasted-acct: "Add contrast to username"
|
||||
signin: "Log In"
|
||||
signup: "Sign up"
|
||||
signout: "Logout"
|
||||
got-it: "Got it!"
|
||||
customization-tips:
|
||||
title: "Customization tips"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "Password"
|
||||
token: "Token"
|
||||
signing-in: "Signing in..."
|
||||
signin: "Sign in"
|
||||
or: "Or"
|
||||
signin-with-twitter: "Log in with Twitter"
|
||||
signin-with-github: "Sign in with GitHub"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "Mute / Block"
|
||||
blocking: "Blocking"
|
||||
security: "Security"
|
||||
signin: "Sign in history"
|
||||
signin: "Login History"
|
||||
password: "Password"
|
||||
other: "Other"
|
||||
license: "License"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "Wallpaper"
|
||||
choose-wallpaper: "Choose a background"
|
||||
delete-wallpaper: "Remove background"
|
||||
dark-mode: "Dark Mode"
|
||||
use-shadow: "Use shadows in the UI"
|
||||
rounded-corners: "Round corners of UI"
|
||||
circle-icons: "Use circle icons"
|
||||
contrasted-acct: "Add contrast to username"
|
||||
post-form-on-timeline: "Display post form at the top of the timeline"
|
||||
show-clock-on-header: "Show clock on upper-right"
|
||||
show-reply-target: "Display reply target"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "Follow requests"
|
||||
admin: "Admin"
|
||||
settings: "Settings"
|
||||
signout: "Sign out"
|
||||
dark: "Toggle dark mode"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "Games"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "Daily"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "More details..."
|
||||
gotit: "Got it!"
|
||||
signin: "Log In"
|
||||
signup: "Sign up"
|
||||
signin-button: "Logging in..."
|
||||
signup-button: "Sign up"
|
||||
timeline: "Timeline"
|
||||
announcements: "Announcements"
|
||||
photos: "Recent Images"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "Messages"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "No posts contains \"{q}\" found."
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "Sign up"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "Dashboard"
|
||||
widgets-hints: "You can add/delete/rearrange widgets. To move the widget, drag \"三\". Tap \"x\" to delete the widget. Some widgets can change display by tapping."
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Signed in as {}"
|
||||
design: "Design and display"
|
||||
dark-mode: "Dark Mode"
|
||||
i-am-under-limited-internet: "I'm in limited bandwidth"
|
||||
circle-icons: "Use circle icons"
|
||||
contrasted-acct: "Add contrast to username"
|
||||
timeline: "Timeline"
|
||||
show-reply-target: "Show reply target"
|
||||
show-my-renotes: "Show my reposts"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "A new version is available"
|
||||
update-available-desc: "Updates will be applied after reloading the page"
|
||||
settings: "Settings"
|
||||
signout: "Sign out"
|
||||
sound: "Sounds"
|
||||
enable-sounds: "Enable sounds"
|
||||
password: "Password"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "Autenticación de dos factores"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "¡Listo!"
|
||||
customization-tips:
|
||||
title: "Consejos de personalización"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "Contraseña"
|
||||
token: "Identificador"
|
||||
signing-in: "Entrando..."
|
||||
signin: "Entra"
|
||||
or: "O"
|
||||
signin-with-twitter: "Ingresar con Twitter"
|
||||
signin-with-github: "Ingresar con Github"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "Silenciar/Bloquear"
|
||||
blocking: "Bloquear"
|
||||
security: "Seguridad"
|
||||
signin: "Historial de inicios de sesión"
|
||||
signin: "ログイン履歴"
|
||||
password: "Contraseña"
|
||||
other: "Otros"
|
||||
license: "Licencia"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "Elije un fondo"
|
||||
delete-wallpaper: "Suprimir fondo"
|
||||
dark-mode: "Modo Nocturno"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "Usar iconos circulares"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "Solicitudes de seguimiento"
|
||||
admin: "Admin"
|
||||
settings: "Configuraciones"
|
||||
signout: "Desconectarse"
|
||||
dark: "Sumergirse en la oscuridad"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "Juegos"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "Authentification à deux facteurs"
|
||||
customize-home: "Personnaliser la disposition de votre accueil"
|
||||
featured-notes: "Les notes mises en avant"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "J’ai compris !"
|
||||
customization-tips:
|
||||
title: "Conseils de personnalisation"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "Mot de passe"
|
||||
token: "Jeton"
|
||||
signing-in: "Connexion…"
|
||||
signin: "Se connecter"
|
||||
or: "Ou"
|
||||
signin-with-twitter: "Se connecter via Twitter"
|
||||
signin-with-github: "Se connecter avec GitHub"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "Silencé·e·s / Bloqué·e·s"
|
||||
blocking: "En cours de blocage"
|
||||
security: "Sécurité"
|
||||
signin: "Historique de connexion"
|
||||
signin: "ログイン履歴"
|
||||
password: "Mot de Passe"
|
||||
other: "Autres"
|
||||
license: "Licence"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "Arrière plan"
|
||||
choose-wallpaper: "Sélectionner un fond d'écran"
|
||||
delete-wallpaper: "Supprimer le fond d'écran"
|
||||
dark-mode: "Mode nuit"
|
||||
use-shadow: "Utiliser les ombres dans l'interface utilisateur"
|
||||
rounded-corners: "Coins arrondis"
|
||||
circle-icons: "Utiliser des icônes circulaires"
|
||||
contrasted-acct: "Nom d’utilisateur contrasté"
|
||||
post-form-on-timeline: "Afficher le formulaire en haut du fil"
|
||||
show-clock-on-header: "Afficher l'horloge à droite sur le coté supérieur"
|
||||
show-reply-target: "Afficher les réponses"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "Demandes d’abonnement"
|
||||
admin: "Admin"
|
||||
settings: "Réglages"
|
||||
signout: "Déconnexion"
|
||||
dark: "Fall in dark"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "Jeux"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "Par jour"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "à propos"
|
||||
gotit: "J'ai compris !"
|
||||
signin: "Connexion"
|
||||
signup: "S'enregistrer"
|
||||
signin-button: "Se connecter"
|
||||
signup-button: "S'inscrire"
|
||||
timeline: "Fil d’actualité"
|
||||
announcements: "Notices"
|
||||
photos: "Images récentes"
|
||||
@@ -1503,13 +1498,11 @@ mobile/views/pages/home.vue:
|
||||
messages: "Messages"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "Aucune publication ayant pour hashtag « {q} » n’a été trouvée."
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "S'enregistrer"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "Tableau de bord"
|
||||
widgets-hints: "Vous pouvez ajouter, supprimer et réarranger les widgets. Faites glisser « 三 » pour déplacer le widget. Appuyez sur « x » pour supprimer le widget. Certains widgets peuvent changer d’apparence en cliquant dessus."
|
||||
add-widget: "Ajouter"
|
||||
customization-tips: "Conseils de personnalisation"
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "Activité"
|
||||
mobile/views/pages/share.vue:
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Connecté·e en tant que {}"
|
||||
design: "Affichage et design"
|
||||
dark-mode: "Mode nuit"
|
||||
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
||||
circle-icons: "Utiliser des icônes circulaires"
|
||||
contrasted-acct: "Nom d’utilisateur contrasté"
|
||||
timeline: "Fil d’actualité"
|
||||
show-reply-target: "Afficher les réponses"
|
||||
show-my-renotes: "Afficher mes partages"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "Nouvelle version disponible !"
|
||||
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
|
||||
settings: "Réglages"
|
||||
signout: "Déconnexion"
|
||||
sound: "Sons"
|
||||
enable-sounds: "Activer les sons"
|
||||
password: "Mot de Passe"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "パスワード"
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
signin: "ログイン履歴"
|
||||
password: "パスワード"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,15 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
reload-to-apply-the-setting: "この設定を反映するにはページをリロードする必要があります。今すぐリロードしますか?"
|
||||
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
@@ -249,6 +258,9 @@ common/views/pages/explore.vue:
|
||||
explore: "{host}を探索"
|
||||
users-info: "現在{users}ユーザーが登録されています"
|
||||
|
||||
common/views/components/url-preview.vue:
|
||||
enable-player: "プレイヤーを開く"
|
||||
|
||||
common/views/components/user-list.vue:
|
||||
no-users: "ユーザーがいません"
|
||||
|
||||
@@ -472,7 +484,6 @@ common/views/components/signin.vue:
|
||||
password: "パスワード"
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -913,7 +924,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
signin: "ログイン履歴"
|
||||
password: "パスワード"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
@@ -936,11 +947,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
@@ -1100,8 +1106,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "ゲーム"
|
||||
@@ -1453,11 +1457,6 @@ admin/views/federation.vue:
|
||||
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1687,9 +1686,6 @@ mobile/views/pages/home.vue:
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1725,10 +1721,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1761,7 +1754,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "ほい"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "パスワード"
|
||||
token: "トークン"
|
||||
signing-in: "サインイン中や..."
|
||||
signin: "サインイン"
|
||||
or: "それか"
|
||||
signin-with-twitter: "Twitterでサインイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "こんな感じでサインインしたらしいで"
|
||||
signin: "ログイン履歴"
|
||||
password: "パスワード"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙選ぶ"
|
||||
delete-wallpaper: "壁紙ほかす"
|
||||
dark-mode: "夜にすんで"
|
||||
use-shadow: "UIに影付けたる"
|
||||
rounded-corners: "みんなまぁるくUI変更"
|
||||
circle-icons: "アイコンもタコ焼きも丸いやんな?"
|
||||
contrasted-acct: "ユーザー名ようわからんし見やすしといて"
|
||||
post-form-on-timeline: "タイムラインの上の方で投稿できるようにせえへん?"
|
||||
show-clock-on-header: "右上をカリヨン広場にする(時計表示)"
|
||||
show-reply-target: "どこにリプライするんや見せて"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー許してくれや!言うてみる"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "さいなら"
|
||||
dark: "ナイトゲームじゃ!"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "もうちょい……"
|
||||
gotit: "ほい"
|
||||
signin: "サインイン"
|
||||
signup: "サインアップ"
|
||||
signin-button: "やっとる"
|
||||
signup-button: "サインアップ"
|
||||
timeline: "タイムライン"
|
||||
announcements: "知っときや"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,12 +1498,10 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿はあらへんかった。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできんで。ウィジェットを移動するんやったら「三」をドラッグしてや。ウィジェットを削除するんやったら「x」をタップしてや。いくつかのウィジェットはタップしたったら表示を変更できるかも分からん、知らんけど。"
|
||||
add-widget: "増やす"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "やっとること"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "あんたは橋の下で拾った{}や!"
|
||||
design: "見た感じ"
|
||||
dark-mode: "ナイトゲームや!"
|
||||
i-am-under-limited-internet: "電波と阪神がザコいんや"
|
||||
circle-icons: "アイコンもタコ焼きも丸いやんな?"
|
||||
contrasted-acct: "ユーザー名ようわからんし見やすしといて"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "どこにリプライするんや見せて"
|
||||
show-my-renotes: "あんたのしたRenoteも出すで"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "もっとええバージョンがあるで"
|
||||
update-available-desc: "もっぺんページ読み込んだら新しなるで"
|
||||
settings: "設定"
|
||||
signout: "さいなら"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンド鳴らす"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "2단계 인증"
|
||||
customize-home: "홈 커스터마이징"
|
||||
featured-notes: "하이라이트"
|
||||
dark-mode: "다크 모드"
|
||||
use-shadow: "UI에 그림자 효과 적용"
|
||||
rounded-corners: "UI의 모서리를 둥글게 설정"
|
||||
circle-icons: "원형 아이콘 사용"
|
||||
contrasted-acct: "사용자명에 대비 추가"
|
||||
signin: "로그인"
|
||||
signup: "신규 등록"
|
||||
signout: "로그아웃"
|
||||
got-it: "알겠습니다"
|
||||
customization-tips:
|
||||
title: "커스터마이징 도움말"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "비밀번호"
|
||||
token: "토큰"
|
||||
signing-in: "로그인 중입니다..."
|
||||
signin: "로그인"
|
||||
or: "또는"
|
||||
signin-with-twitter: "Twitter로 로그인"
|
||||
signin-with-github: "GitHub으로 로그인"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "배경"
|
||||
choose-wallpaper: "배경 설정"
|
||||
delete-wallpaper: "배경 제거"
|
||||
dark-mode: "다크 모드"
|
||||
use-shadow: "UI에 그림자 효과 적용"
|
||||
rounded-corners: "UI의 모서리를 둥글게 설정"
|
||||
circle-icons: "원형 아이콘 사용"
|
||||
contrasted-acct: "사용자명에 대비 추가"
|
||||
post-form-on-timeline: "타임라인 상단에 글 작성란을 표시"
|
||||
show-clock-on-header: "오른쪽 상단에 시계 표시"
|
||||
show-reply-target: "답글 대상 표시"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "팔로우 요청"
|
||||
admin: "관리"
|
||||
settings: "설정"
|
||||
signout: "로그아웃"
|
||||
dark: "어둠에 삼켜져라"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "게임"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1일마다"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "자세히..."
|
||||
gotit: "알겠습니다"
|
||||
signin: "로그인"
|
||||
signup: "신규 등록"
|
||||
signin-button: "로그인 중"
|
||||
signup-button: "등록"
|
||||
timeline: "타임라인"
|
||||
announcements: "공지사항"
|
||||
photos: "최근 이미지"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "메시지"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "해시태그 \"{q}\"가 붙은 글을 찾을 수 없습니다."
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "신규 등록"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "대시보드"
|
||||
widgets-hints: "위젯을 추가 / 제거하거나 정렬할 수 있습니다. 위젯을 이동하려면 창틀의 \"☰\" 아이콘을 드래그합니다. 위젯을 삭제하려면 \"X\" 아이콘을 탭 합니다. 몇몇 위젯은 탭하면 표시형식을 바꿀 수 있습니다."
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}(으)로 로그인"
|
||||
design: "디자인 및 표시"
|
||||
dark-mode: "다크 모드"
|
||||
i-am-under-limited-internet: "저는 통신 대역폭이 제한되어 있습니다"
|
||||
circle-icons: "원형 아이콘 사용"
|
||||
contrasted-acct: "사용자명에 대비 추가"
|
||||
timeline: "타임라인"
|
||||
show-reply-target: "답글 대상 표시"
|
||||
show-my-renotes: "자신이 한 리노트 표시"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "새 버전을 사용할 수 있습니다"
|
||||
update-available-desc: "페이지를 다시 로드하면 업데이트가 적용됩니다."
|
||||
settings: "설정"
|
||||
signout: "로그아웃"
|
||||
sound: "소리"
|
||||
enable-sounds: "소리 사용"
|
||||
password: "비밀번호"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "Wachtwoord"
|
||||
token: "Sleutel"
|
||||
signing-in: "Bezig met inloggen..."
|
||||
signin: "Inloggen"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "Beveiliging"
|
||||
signin: "Inloggeschiedenis"
|
||||
signin: "ログイン履歴"
|
||||
password: "Wachtwoord"
|
||||
other: "Overig"
|
||||
license: "Licentie"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "Donkere modus"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "Ronde pictogrammen gebruiken"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "Antwoord-knop tonen"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "管理"
|
||||
settings: "Instellingen"
|
||||
signout: "Uitloggen"
|
||||
dark: "Donkere modus"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "Othello spelen"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "Inloggen"
|
||||
signup: "Registreren"
|
||||
signin-button: "Inloggen"
|
||||
signup-button: "Registreren"
|
||||
timeline: "Tijdlijn"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Ingelogd als {}"
|
||||
design: "Ontwerp en weergave"
|
||||
dark-mode: "Donkere modus"
|
||||
i-am-under-limited-internet: "Ik heb beperkt internet"
|
||||
circle-icons: "Ronde pictogrammen gebruiken"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "Tijdlijn"
|
||||
show-reply-target: "Antwoordknop tonen"
|
||||
show-my-renotes: "Mijn renotes tonen"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "Nieuwe versie beschikbaar!"
|
||||
update-available-desc: "Herlaad de pagina om de updates toe te passen."
|
||||
settings: "Instellingen"
|
||||
signout: "Uitloggen"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "Skjønner!"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "Passord"
|
||||
token: "Token"
|
||||
signing-in: "やってます..."
|
||||
signin: "Logg inn"
|
||||
or: "Eller"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
signin: "ログイン履歴"
|
||||
password: "Passord"
|
||||
other: "Annet"
|
||||
license: "Lisens"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "Admin"
|
||||
settings: "Innstillinger"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "Spill"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "Skjønner!"
|
||||
signin: "Logg inn"
|
||||
signup: "Bli med"
|
||||
signin-button: "Logger inn..."
|
||||
signup-button: "Registrer"
|
||||
timeline: "タイムライン"
|
||||
announcements: "Kunngjøringer"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,12 +1498,10 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "Bli med"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "Legg til"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "アクティビティ"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "Innstillinger"
|
||||
signout: "サインアウト"
|
||||
sound: "Lyder"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "Uwierzytelnienie dwuetapowe"
|
||||
customize-home: "Dostosuj stronę główną"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "Rozumiem!"
|
||||
customization-tips:
|
||||
title: "Wskazówki o dostosowywaniu"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "Hasło"
|
||||
token: "Token"
|
||||
signing-in: "Logowanie…"
|
||||
signin: "Zaloguj"
|
||||
or: "lub"
|
||||
signin-with-twitter: "Zaloguj się za pomocą Twittera"
|
||||
signin-with-github: "Zaloguj się za pomocą GitHuba"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "Wycisz / Zablokuj"
|
||||
blocking: "ブロック"
|
||||
security: "Bezpieczeństwo"
|
||||
signin: "Historia logowań"
|
||||
signin: "ログイン履歴"
|
||||
password: "Hasło"
|
||||
other: "Inne"
|
||||
license: "Licencja"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "Tapeta"
|
||||
choose-wallpaper: "Wybierz tło"
|
||||
delete-wallpaper: "Usuń tło"
|
||||
dark-mode: "Tryb ciemny"
|
||||
use-shadow: "Użyj cieni w UI"
|
||||
rounded-corners: "Zaokrąglaj rogi w UI"
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "Prośby o śledzenie"
|
||||
admin: "Admin"
|
||||
settings: "Ustawienia"
|
||||
signout: "Wyloguj się"
|
||||
dark: "Sprowadź ciemność"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "Gra"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "O Misskey"
|
||||
gotit: "Rozumiem!"
|
||||
signin: "Zaloguj się"
|
||||
signup: "Zarejestruj się"
|
||||
signin-button: "Zaloguj się"
|
||||
signup-button: "Zarejestruj się"
|
||||
timeline: "Oś czasu"
|
||||
announcements: "Ogłoszenia"
|
||||
photos: "Ostatnie obrazy"
|
||||
@@ -1503,12 +1498,10 @@ mobile/views/pages/home.vue:
|
||||
messages: "Wiadomości"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "Zarejestruj się"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "Kokpit"
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
add-widget: "Dodaj"
|
||||
add-widget: "追加"
|
||||
customization-tips: "カスタマイズのヒント"
|
||||
mobile/views/pages/widgets/activity.vue:
|
||||
activity: "Aktywność"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Zalogowany jako {}"
|
||||
design: "Wygląd i wyświetlanie"
|
||||
dark-mode: "Tryb ciemny"
|
||||
i-am-under-limited-internet: "Ograniczaj zużycie transferu"
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "Oś czasu"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "Dostępna jest nowa wersja"
|
||||
update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
|
||||
settings: "Ustawienia"
|
||||
signout: "Wyloguj"
|
||||
sound: "Dźwięk"
|
||||
enable-sounds: "Włącz dźwięk"
|
||||
password: "Hasło"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "Entendi!"
|
||||
customization-tips:
|
||||
title: "Dicas de personalização"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "パスワード"
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
signin: "ログイン履歴"
|
||||
password: "パスワード"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "Timeline"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "Uma nova versão está disponível"
|
||||
update-available-desc: "Atualizações vão ser aplicadas depois de recarregar a página"
|
||||
settings: "Configurações"
|
||||
signout: "Sair"
|
||||
sound: "Sons"
|
||||
enable-sounds: "Ativar sons"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "二段階認証"
|
||||
customize-home: "ホームをカスタマイズ"
|
||||
featured-notes: "ハイライト"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signout: "ログアウト"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "Советы по настройке"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "パスワード"
|
||||
token: "トークン"
|
||||
signing-in: "やってます..."
|
||||
signin: "サインイン"
|
||||
or: "または"
|
||||
signin-with-twitter: "Twitterでログイン"
|
||||
signin-with-github: "GitHubでログイン"
|
||||
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
|
||||
mute-and-block: "ミュート/ブロック"
|
||||
blocking: "ブロック"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
signin: "ログイン履歴"
|
||||
password: "パスワード"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁紙"
|
||||
choose-wallpaper: "壁紙を選択"
|
||||
delete-wallpaper: "壁紙を削除"
|
||||
dark-mode: "ダークモード"
|
||||
use-shadow: "UIに影を使用"
|
||||
rounded-corners: "UIの角を丸める"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
|
||||
show-clock-on-header: "右上に時計を表示する"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "フォロー申請"
|
||||
admin: "管理"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
dark: "闇に飲まれる"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "ゲーム"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "1日ごと"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "詳しく..."
|
||||
gotit: "わかった"
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
announcements: "お知らせ"
|
||||
photos: "最近の画像"
|
||||
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
|
||||
messages: "メッセージ"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "新規登録"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "{}としてサインイン中"
|
||||
design: "デザインと表示"
|
||||
dark-mode: "ダークモード"
|
||||
i-am-under-limited-internet: "私は通信を制限されている"
|
||||
circle-icons: "円形のアイコンを使用"
|
||||
contrasted-acct: "ユーザー名にコントラストを付ける"
|
||||
timeline: "タイムライン"
|
||||
show-reply-target: "リプライ先を表示する"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "新しいバージョンが利用可能です"
|
||||
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
|
||||
settings: "設定"
|
||||
signout: "サインアウト"
|
||||
sound: "サウンド"
|
||||
enable-sounds: "サウンドを有効にする"
|
||||
password: "パスワード"
|
||||
|
||||
@@ -30,6 +30,14 @@ common:
|
||||
2fa: "双重身份验证"
|
||||
customize-home: "自定义主页"
|
||||
featured-notes: "高亮"
|
||||
dark-mode: "黑暗模式"
|
||||
use-shadow: "在UI中使用阴影效果"
|
||||
rounded-corners: "UI界面圆角效果"
|
||||
circle-icons: "使用圆形图标"
|
||||
contrasted-acct: "增加用户名的对比度"
|
||||
signin: "登录"
|
||||
signup: "注册"
|
||||
signout: "退出"
|
||||
got-it: "没问题"
|
||||
customization-tips:
|
||||
title: "自定义提示"
|
||||
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
|
||||
password: "密码"
|
||||
token: "Token (令牌)"
|
||||
signing-in: "正在登录..."
|
||||
signin: "登录"
|
||||
or: "或者"
|
||||
signin-with-twitter: "用 Twitter 登录"
|
||||
signin-with-github: "用 GitHub 登录"
|
||||
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
|
||||
wallpaper: "壁纸"
|
||||
choose-wallpaper: "选择一个背景壁纸"
|
||||
delete-wallpaper: "移除背景壁纸"
|
||||
dark-mode: "黑暗模式"
|
||||
use-shadow: "在UI中使用阴影效果"
|
||||
rounded-corners: "UI界面圆角效果"
|
||||
circle-icons: "使用圆形图标"
|
||||
contrasted-acct: "增加用户名的对比度"
|
||||
post-form-on-timeline: "在时间线顶部显示帖子表单"
|
||||
show-clock-on-header: "在右上角显示时钟"
|
||||
show-reply-target: "显示回复目标"
|
||||
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
|
||||
follow-requests: "关注申请"
|
||||
admin: "管理"
|
||||
settings: "设置"
|
||||
signout: "登出"
|
||||
dark: "切换到黑暗模式 (夜间使用请打开此选项哦~)"
|
||||
desktop/views/components/ui.header.nav.vue:
|
||||
game: "游戏"
|
||||
desktop/views/components/ui.header.notifications.vue:
|
||||
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
|
||||
day: "每天"
|
||||
desktop/views/pages/welcome.vue:
|
||||
about: "更多信息..."
|
||||
gotit: "没问题! "
|
||||
signin: "登录"
|
||||
signup: "注册"
|
||||
signin-button: "正在登录"
|
||||
signup-button: "注册"
|
||||
timeline: "时间线"
|
||||
announcements: "公告"
|
||||
photos: "最近图片"
|
||||
@@ -1503,10 +1498,8 @@ mobile/views/pages/home.vue:
|
||||
messages: "信息"
|
||||
mobile/views/pages/tag.vue:
|
||||
no-posts-found: "没有找到带有主题标签“{q}”的帖子"
|
||||
mobile/views/pages/welcome.vue:
|
||||
signup: "注册"
|
||||
mobile/views/pages/widgets.vue:
|
||||
dashboard: "Dashboard"
|
||||
dashboard: "仪表盘"
|
||||
widgets-hints: "您可以添加/删除/重新排列小部件。 要移动小部件,请拖动“三”。 点击“×”删除小部件。 某些小部件可以通过点击来更改显示。"
|
||||
add-widget: "添加"
|
||||
customization-tips: "定制提示"
|
||||
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "以{}登录"
|
||||
design: "设计与展示"
|
||||
dark-mode: "夜间模式"
|
||||
i-am-under-limited-internet: "我的带宽有限"
|
||||
circle-icons: "使用圆形图标"
|
||||
contrasted-acct: "增加用户名的对比度"
|
||||
timeline: "时间线"
|
||||
show-reply-target: "显示回复目标"
|
||||
show-my-renotes: "显示我的转发"
|
||||
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
|
||||
update-available: "有新版本可用!"
|
||||
update-available-desc: "重新加载页面以应用更新"
|
||||
settings: "设置"
|
||||
signout: "注销"
|
||||
sound: "声音"
|
||||
enable-sounds: "开启声音"
|
||||
password: "密码"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "10.90.0",
|
||||
"version": "10.90.4",
|
||||
"codename": "nighthike",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export default function(me, settings, note) {
|
||||
const isMyNote = note.userId == me.id;
|
||||
const isMyNote = me && (note.userId == me.id);
|
||||
const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null;
|
||||
|
||||
const includesMutedWords = (text: string) =>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<span class="mk-acct">
|
||||
<span class="mk-acct" v-once>
|
||||
<span class="name">@{{ user.username }}</span>
|
||||
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span>
|
||||
<fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick">
|
||||
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick" v-once>
|
||||
<span class="inner" :style="icon"></span>
|
||||
</span>
|
||||
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick">
|
||||
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick" v-once>
|
||||
<span class="inner" :style="icon"></span>
|
||||
</span>
|
||||
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id">
|
||||
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id" v-once>
|
||||
<span class="inner" :style="icon"></span>
|
||||
</router-link>
|
||||
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview">
|
||||
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview" v-once>
|
||||
<span class="inner" :style="icon"></span>
|
||||
</router-link>
|
||||
</template>
|
||||
|
||||
@@ -80,7 +80,7 @@ export default Vue.extend({
|
||||
|
||||
> div
|
||||
background-color var(--text)
|
||||
border-radius var(--round)
|
||||
border-radius 6px
|
||||
color var(--secondary)
|
||||
display inline-block
|
||||
font-size 14px
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<mfm-core v-bind="$attrs" class="havbbuyv"/>
|
||||
<mfm-core v-bind="$attrs" class="havbbuyv" v-once/>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<span>{{ $t('@.2fa') }}</span>
|
||||
<template #prefix><fa icon="gavel"/></template>
|
||||
</ui-input>
|
||||
<ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('signin') }}</ui-button>
|
||||
<ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('@.signin') }}</ui-button>
|
||||
<p v-if="meta && meta.enableTwitterIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p>
|
||||
<p v-if="meta && meta.enableGithubIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p>
|
||||
<p v-if="meta && meta.enableDiscordIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/discord`">{{ $t('signin-with-discord') /* TODO: Make these layouts better */ }}</a></p>
|
||||
|
||||
@@ -150,7 +150,7 @@ export default Vue.extend({
|
||||
password: this.password
|
||||
}).then(res => {
|
||||
localStorage.setItem('i', res.i);
|
||||
location.reload();
|
||||
location.href = '/';
|
||||
});
|
||||
}).catch(() => {
|
||||
alert(this.$t('some-error'));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="ui-card" :class="{ shadow: $store.state.settings.useShadow }">
|
||||
<div class="ui-card" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<header>
|
||||
<slot name="title"></slot>
|
||||
</header>
|
||||
@@ -25,7 +25,9 @@ export default Vue.extend({
|
||||
max-width 850px
|
||||
color var(--faceText)
|
||||
background var(--face)
|
||||
border-radius var(--round)
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div v-if="player.url" class="player" :style="`padding: ${(player.height || 0) / (player.width || 1) * 100}% 0 0`">
|
||||
<iframe :src="player.url" :width="player.width || '100%'" :heigth="player.height || 250" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen />
|
||||
<div v-if="playerEnabled" class="player" :style="`padding: ${(player.height || 0) / (player.width || 1) * 100}% 0 0`">
|
||||
<iframe :src="player.url + (player.url.match(/\?/) ? '&autoplay=1&auto_play=1' : '?autoplay=1&auto_play=1')" :width="player.width || '100%'" :heigth="player.height || 250" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen />
|
||||
</div>
|
||||
<div v-else-if="tweetUrl && detail" class="twitter">
|
||||
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
|
||||
@@ -9,7 +9,9 @@
|
||||
</div>
|
||||
<div v-else class="mk-url-preview">
|
||||
<a :class="{ mini: narrow, compact }" :href="url" target="_blank" :title="url" v-if="!fetching">
|
||||
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url('${thumbnail}')`"></div>
|
||||
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url('${thumbnail}')`">
|
||||
<button v-if="!playerEnabled && player.url" @click.prevent="playerEnabled = true" :title="$t('enable-player')"><fa :icon="['far', 'play-circle']"/></button>
|
||||
</div>
|
||||
<article>
|
||||
<header>
|
||||
<h1 :title="title">{{ title }}</h1>
|
||||
@@ -26,88 +28,11 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import { url as misskeyUrl } from '../../../config';
|
||||
|
||||
// THIS IS THE WHITELIST FOR THE EMBED PLAYER
|
||||
const whiteList = [
|
||||
'afreecatv.com',
|
||||
'aparat.com',
|
||||
'applemusic.com',
|
||||
'amazon.com',
|
||||
'awa.fm',
|
||||
'bandcamp.com',
|
||||
'bbc.co.uk',
|
||||
'beatport.com',
|
||||
'bilibili.com',
|
||||
'boomstream.com',
|
||||
'breakers.tv',
|
||||
'cam4.com',
|
||||
'cavelis.net',
|
||||
'chaturbate.com',
|
||||
'cnn.com',
|
||||
'cybergame.tv',
|
||||
'dailymotion.com',
|
||||
'deezer.com',
|
||||
'djlive.pl',
|
||||
'e-onkyo.com',
|
||||
'eventials.com',
|
||||
'facebook.com',
|
||||
'fc2.com',
|
||||
'gameplank.tv',
|
||||
'goodgame.ru',
|
||||
'google.com',
|
||||
'hardtunes.com',
|
||||
'instagram.com',
|
||||
'johnnylooch.com',
|
||||
'kexp.org',
|
||||
'lahzenegar.com',
|
||||
'liveedu.tv',
|
||||
'livetube.cc',
|
||||
'livestream.com',
|
||||
'meridix.com',
|
||||
'mixcloud.com',
|
||||
'mixer.com',
|
||||
'mobcrush.com',
|
||||
'mylive.in.th',
|
||||
'myspace.com',
|
||||
'netflix.com',
|
||||
'newretrowave.com',
|
||||
'nhk.or.jp',
|
||||
'nicovideo.jp',
|
||||
'nico.ms',
|
||||
'noisetrade.com',
|
||||
'nood.tv',
|
||||
'npr.org',
|
||||
'openrec.tv',
|
||||
'pandora.com',
|
||||
'pandora.tv',
|
||||
'picarto.tv',
|
||||
'pscp.tv',
|
||||
'restream.io',
|
||||
'reverbnation.com',
|
||||
'sermonaudio.com',
|
||||
'smashcast.tv',
|
||||
'songkick.com',
|
||||
'soundcloud.com',
|
||||
'spinninrecords.com',
|
||||
'spotify.com',
|
||||
'stitcher.com',
|
||||
'stream.me',
|
||||
'switchboard.live',
|
||||
'tunein.com',
|
||||
'twitcasting.tv',
|
||||
'twitch.tv',
|
||||
'twitter.com',
|
||||
'vaughnlive.tv',
|
||||
'veoh.com',
|
||||
'vimeo.com',
|
||||
'watchpeoplecode.com',
|
||||
'web.tv',
|
||||
'youtube.com',
|
||||
'youtu.be'
|
||||
];
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('common/views/components/url-preview.vue'),
|
||||
props: {
|
||||
url: {
|
||||
type: String,
|
||||
@@ -147,7 +72,8 @@ export default Vue.extend({
|
||||
height: null
|
||||
},
|
||||
tweetUrl: null,
|
||||
misskeyUrl
|
||||
playerEnabled: false,
|
||||
misskeyUrl,
|
||||
};
|
||||
},
|
||||
|
||||
@@ -188,9 +114,7 @@ export default Vue.extend({
|
||||
this.icon = info.icon;
|
||||
this.sitename = info.sitename;
|
||||
this.fetching = false;
|
||||
if (whiteList.some(x => x == url.hostname || url.hostname.endsWith(`.${x}`))) {
|
||||
this.player = info.player;
|
||||
}
|
||||
this.player = info.player;
|
||||
})
|
||||
});
|
||||
}
|
||||
@@ -230,6 +154,17 @@ export default Vue.extend({
|
||||
height 100%
|
||||
background-position center
|
||||
background-size cover
|
||||
display flex
|
||||
justify-content center
|
||||
align-items center
|
||||
|
||||
> button
|
||||
font-size 3.5em
|
||||
opacity: 0.7
|
||||
|
||||
&:hover
|
||||
font-size 4em
|
||||
opacity 0.9
|
||||
|
||||
& + article
|
||||
left 100px
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<template>
|
||||
<div class="dnpfarvgbnfmyzbdquhhzyxcmstpdqzs" :class="{ naked, narrow, active, isStacked, draghover, dragging, dropready }"
|
||||
:data-mobile="$root.isMobile"
|
||||
<div class="dnpfarvgbnfmyzbdquhhzyxcmstpdqzs" :class="{ naked, narrow, active, isStacked, draghover, dragging, dropready, isMobile: $root.isMobile, shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }"
|
||||
@dragover.prevent.stop="onDragover"
|
||||
@dragleave="onDragleave"
|
||||
@drop.prevent.stop="onDrop"
|
||||
@@ -323,16 +322,13 @@ export default Vue.extend({
|
||||
|
||||
height 100%
|
||||
background var(--face)
|
||||
border-radius var(--round)
|
||||
box-shadow var(--shadow)
|
||||
overflow hidden
|
||||
|
||||
&[data-mobile]
|
||||
border-radius 0
|
||||
box-shadow none
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
> header
|
||||
box-shadow none
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
&.draghover
|
||||
box-shadow 0 0 0 2px var(--primaryAlpha08)
|
||||
@@ -374,6 +370,10 @@ export default Vue.extend({
|
||||
> button
|
||||
color var(--text)
|
||||
|
||||
&.isMobile
|
||||
> header
|
||||
box-shadow none
|
||||
|
||||
> header
|
||||
display flex
|
||||
z-index 2
|
||||
|
||||
@@ -29,7 +29,7 @@ export default Vue.extend({
|
||||
return {
|
||||
faNewspaper,
|
||||
makePromise: cursor => this.$root.api('notes/featured', {
|
||||
limit: 20,
|
||||
limit: 30,
|
||||
}).then(notes => {
|
||||
notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
||||
return notes;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<mk-ui :class="$style.root">
|
||||
<div class="qlvquzbjribqcaozciifydkngcwtyzje" :data-mobile="$root.isMobile" ref="body" :style="style" :class="`${$store.state.device.deckColumnAlign} ${$store.state.device.deckColumnWidth}`" v-hotkey.global="keymap">
|
||||
<div class="qlvquzbjribqcaozciifydkngcwtyzje" ref="body" :style="style" :class="`${$store.state.device.deckColumnAlign} ${$store.state.device.deckColumnWidth}`" v-hotkey.global="keymap">
|
||||
<template v-for="ids in layout">
|
||||
<div v-if="ids.length > 1" class="folder">
|
||||
<template v-for="id, i in ids">
|
||||
@@ -332,15 +332,8 @@ export default Vue.extend({
|
||||
overflow-y hidden
|
||||
-webkit-overflow-scrolling touch
|
||||
|
||||
&[data-mobile]
|
||||
padding 0
|
||||
|
||||
> div
|
||||
margin-right 0
|
||||
|
||||
&.folder
|
||||
> *:not(:last-child)
|
||||
margin-bottom 0
|
||||
@media (max-width 500px)
|
||||
padding 8px 0 8px 8px
|
||||
|
||||
> div
|
||||
margin-right 8px
|
||||
|
||||
@@ -14,6 +14,7 @@ import wTips from './tips.vue';
|
||||
import wNav from './nav.vue';
|
||||
import wHashtags from './hashtags.vue';
|
||||
import wInstance from './instance.vue';
|
||||
import wPostForm from './post-form.vue';
|
||||
|
||||
Vue.component('mkw-analog-clock', wAnalogClock);
|
||||
Vue.component('mkw-nav', wNav);
|
||||
@@ -29,3 +30,4 @@ Vue.component('mkw-rss', wRss);
|
||||
Vue.component('mkw-version', wVersion);
|
||||
Vue.component('mkw-hashtags', wHashtags);
|
||||
Vue.component('mkw-instance', wInstance);
|
||||
Vue.component('mkw-post-form', wPostForm);
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
ref="text"
|
||||
v-autocomplete="{ model: 'text' }"
|
||||
></textarea>
|
||||
<button class="emoji" @click="emoji" ref="emoji">
|
||||
<button class="emoji" @click="emoji" ref="emoji" v-if="!$root.isMobile">
|
||||
<fa :icon="['far', 'laugh']"/>
|
||||
</button>
|
||||
</div>
|
||||
@@ -161,7 +161,7 @@ export default define({
|
||||
},
|
||||
|
||||
async emoji() {
|
||||
const Picker = await import('../components/emoji-picker-dialog.vue').then(m => m.default);
|
||||
const Picker = await import('../../../desktop/views/components/emoji-picker-dialog.vue').then(m => m.default);
|
||||
const button = this.$refs.emoji;
|
||||
const rect = button.getBoundingClientRect();
|
||||
const vm = this.$root.new(Picker, {
|
||||
@@ -186,6 +186,9 @@ export default define({
|
||||
alert('Something happened');
|
||||
}).then(() => {
|
||||
this.posting = false;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.text.focus();
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="mkw-rss--body" :data-mobile="platform == 'mobile'">
|
||||
<p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
|
||||
<div class="feed" v-else>
|
||||
<a v-for="item in items" :href="item.link" target="_blank">{{ item.title }}</a>
|
||||
<a v-for="item in items" :href="item.link" target="_blank" :title="item.title">{{ item.title }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</ui-container>
|
||||
@@ -55,12 +55,18 @@ export default define({
|
||||
});
|
||||
},
|
||||
setting() {
|
||||
const url = window.prompt('URL', this.props.url);
|
||||
if (url && url != '') {
|
||||
this.$root.dialog({
|
||||
title: 'URL',
|
||||
input: {
|
||||
type: 'url',
|
||||
default: this.props.url
|
||||
}
|
||||
}).then(({ canceled, result: url }) => {
|
||||
if (canceled) return;
|
||||
this.props.url = url;
|
||||
this.save();
|
||||
this.fetch();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="mk-calendar" :data-melt="design == 4 || design == 5">
|
||||
<div class="mk-calendar" :data-melt="design == 4 || design == 5" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<template v-if="design == 0 || design == 1">
|
||||
<button @click="prev" :title="$t('prev')"><fa icon="chevron-circle-left"/></button>
|
||||
<p class="title">{{ $t('title', { year, month }) }}</p>
|
||||
@@ -133,10 +133,14 @@ export default Vue.extend({
|
||||
.mk-calendar
|
||||
color var(--calendarDay)
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
overflow hidden
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
&[data-melt]
|
||||
background transparent !important
|
||||
border none !important
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="mk-note-detail" :title="title" tabindex="-1">
|
||||
<div class="mk-note-detail" :title="title" tabindex="-1" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<button
|
||||
class="read-more"
|
||||
v-if="appearNote.reply && appearNote.reply.replyId && conversation.length == 0"
|
||||
@@ -159,8 +159,15 @@ export default Vue.extend({
|
||||
overflow hidden
|
||||
text-align left
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
> .read-more
|
||||
border-radius 6px 6px 0 0
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
> .read-more
|
||||
display block
|
||||
@@ -175,7 +182,6 @@ export default Vue.extend({
|
||||
outline none
|
||||
border none
|
||||
border-bottom solid 1px var(--faceDivider)
|
||||
border-radius var(--round) var(--round) 0 0
|
||||
|
||||
&:hover
|
||||
box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05)
|
||||
|
||||
@@ -39,30 +39,30 @@
|
||||
<mk-url-preview v-for="url in urls" :url="url" :key="url" :compact="compact"/>
|
||||
</div>
|
||||
</div>
|
||||
<footer v-if="appearNote.deletedAt == null">
|
||||
<footer v-if="appearNote.deletedAt == null" class="footer">
|
||||
<span class="app" v-if="appearNote.app && narrow && $store.state.settings.showVia">via <b>{{ appearNote.app.name }}</b></span>
|
||||
<mk-reactions-viewer :note="appearNote" ref="reactionsViewer"/>
|
||||
<button class="replyButton" @click="reply()" :title="$t('reply')">
|
||||
<button class="replyButton button" @click="reply()" :title="$t('reply')">
|
||||
<template v-if="appearNote.reply"><fa icon="reply-all"/></template>
|
||||
<template v-else><fa icon="reply"/></template>
|
||||
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
||||
</button>
|
||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" class="renoteButton" @click="renote()" :title="$t('renote')">
|
||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" class="renoteButton button" @click="renote()" :title="$t('renote')">
|
||||
<fa icon="retweet"/>
|
||||
<p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
|
||||
</button>
|
||||
<button v-else class="inhibitedButton">
|
||||
<button v-else class="inhibitedButton button">
|
||||
<fa icon="ban"/>
|
||||
</button>
|
||||
<button v-if="!isMyNote && appearNote.myReaction == null" class="reactionButton" @click="react()" ref="reactButton" :title="$t('add-reaction')">
|
||||
<button v-if="!isMyNote && appearNote.myReaction == null" class="reactionButton button" @click="react()" ref="reactButton" :title="$t('add-reaction')">
|
||||
<fa icon="plus"/>
|
||||
<p class="count" v-if="Object.values(appearNote.reactionCounts).some(x => x)">{{ Object.values(appearNote.reactionCounts).reduce((a, c) => a + c, 0) }}</p>
|
||||
</button>
|
||||
<button v-if="!isMyNote && appearNote.myReaction != null" class="reactionButton reacted" @click="undoReact(appearNote)" ref="reactButton" :title="$t('undo-reaction')">
|
||||
<button v-if="!isMyNote && appearNote.myReaction != null" class="reactionButton reacted button" @click="undoReact(appearNote)" ref="reactButton" :title="$t('undo-reaction')">
|
||||
<fa icon="minus"/>
|
||||
<p class="count" v-if="Object.values(appearNote.reactionCounts).some(x => x)">{{ Object.values(appearNote.reactionCounts).reduce((a, c) => a + c, 0) }}</p>
|
||||
</button>
|
||||
<button @click="menu()" ref="menuButton">
|
||||
<button @click="menu()" ref="menuButton" class="button">
|
||||
<fa icon="ellipsis-h"/>
|
||||
</button>
|
||||
</footer>
|
||||
@@ -274,7 +274,7 @@ export default Vue.extend({
|
||||
border dashed var(--lineWidth) var(--quoteBorder)
|
||||
border-radius 8px
|
||||
|
||||
> footer
|
||||
> .footer
|
||||
> .app
|
||||
display block
|
||||
margin-top 0.5em
|
||||
@@ -282,7 +282,7 @@ export default Vue.extend({
|
||||
color var(--noteHeaderInfo)
|
||||
font-size 0.8em
|
||||
|
||||
> button
|
||||
> .button
|
||||
margin 0 28px 0 0
|
||||
padding 0 8px
|
||||
line-height 32px
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="mk-notes">
|
||||
<div class="mk-notes" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<slot name="header"></slot>
|
||||
|
||||
<div class="newer-indicator" :style="{ top: $store.state.uiHeaderHeight + 'px' }" v-show="queue.length > 0"></div>
|
||||
@@ -191,10 +191,14 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
.mk-notes
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
overflow hidden
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
.transition
|
||||
.mk-notes-enter
|
||||
.mk-notes-leave-to
|
||||
|
||||
@@ -87,10 +87,10 @@
|
||||
<ui-radio v-model="navbar" value="right">{{ $t('navbar-position-right') }}</ui-radio>
|
||||
</section>
|
||||
<section>
|
||||
<ui-switch v-model="darkmode">{{ $t('dark-mode') }}</ui-switch>
|
||||
<ui-switch v-model="useShadow">{{ $t('use-shadow') }}</ui-switch>
|
||||
<ui-switch v-model="roundedCorners">{{ $t('rounded-corners') }}</ui-switch>
|
||||
<ui-switch v-model="circleIcons">{{ $t('circle-icons') }}</ui-switch>
|
||||
<ui-switch v-model="darkmode">{{ $t('@.dark-mode') }}</ui-switch>
|
||||
<ui-switch v-model="useShadow">{{ $t('@.use-shadow') }}</ui-switch>
|
||||
<ui-switch v-model="roundedCorners">{{ $t('@.rounded-corners') }}</ui-switch>
|
||||
<ui-switch v-model="circleIcons">{{ $t('@.circle-icons') }}</ui-switch>
|
||||
<section>
|
||||
<header>{{ $t('@.line-width') }}</header>
|
||||
<ui-radio v-model="lineWidth" :value="0.5">{{ $t('@.line-width-thin') }}</ui-radio>
|
||||
@@ -98,7 +98,7 @@
|
||||
<ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio>
|
||||
</section>
|
||||
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }}</ui-switch>
|
||||
<ui-switch v-model="contrastedAcct">{{ $t('contrasted-acct') }}</ui-switch>
|
||||
<ui-switch v-model="contrastedAcct">{{ $t('@.contrasted-acct') }}</ui-switch>
|
||||
<ui-switch v-model="showFullAcct">{{ $t('@.show-full-acct') }}</ui-switch>
|
||||
<ui-switch v-model="showVia">{{ $t('@.show-via') }}</ui-switch>
|
||||
<ui-switch v-model="useOsDefaultEmojis">{{ $t('@.use-os-default-emojis') }}</ui-switch>
|
||||
@@ -387,13 +387,13 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
useShadow: {
|
||||
get() { return this.$store.state.settings.useShadow; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'useShadow', value }); }
|
||||
get() { return this.$store.state.device.useShadow; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'useShadow', value }); }
|
||||
},
|
||||
|
||||
roundedCorners: {
|
||||
get() { return this.$store.state.settings.roundedCorners; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'roundedCorners', value }); }
|
||||
get() { return this.$store.state.device.roundedCorners; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'roundedCorners', value }); }
|
||||
},
|
||||
|
||||
lineWidth: {
|
||||
@@ -463,17 +463,26 @@ export default Vue.extend({
|
||||
|
||||
circleIcons: {
|
||||
get() { return this.$store.state.settings.circleIcons; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); }
|
||||
set(value) {
|
||||
this.$store.dispatch('settings/set', { key: 'circleIcons', value });
|
||||
this.reload();
|
||||
}
|
||||
},
|
||||
|
||||
contrastedAcct: {
|
||||
get() { return this.$store.state.settings.contrastedAcct; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'contrastedAcct', value }); }
|
||||
set(value) {
|
||||
this.$store.dispatch('settings/set', { key: 'contrastedAcct', value });
|
||||
this.reload();
|
||||
}
|
||||
},
|
||||
|
||||
showFullAcct: {
|
||||
get() { return this.$store.state.settings.showFullAcct; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'showFullAcct', value }); }
|
||||
set(value) {
|
||||
this.$store.dispatch('settings/set', { key: 'showFullAcct', value });
|
||||
this.reload();
|
||||
}
|
||||
},
|
||||
|
||||
showVia: {
|
||||
@@ -517,6 +526,17 @@ export default Vue.extend({
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
reload() {
|
||||
this.$root.dialog({
|
||||
type: 'warning',
|
||||
text: this.$t('@.reload-to-apply-the-setting'),
|
||||
showCancelButton: true
|
||||
}).then(({ canceled }) => {
|
||||
if (!canceled) {
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
},
|
||||
customizeHome() {
|
||||
location.href = '/?customize';
|
||||
},
|
||||
@@ -583,9 +603,6 @@ export default Vue.extend({
|
||||
z-index 1
|
||||
font-size 15px
|
||||
|
||||
&.inWindow
|
||||
box-shadow var(--shadowRight)
|
||||
|
||||
> p
|
||||
display block
|
||||
padding 10px 16px
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="kedshtep" :class="{ naked, inNakedDeckColumn }">
|
||||
<div class="kedshtep" :class="{ naked, inNakedDeckColumn, shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<header v-if="showHeader">
|
||||
<div class="title"><slot name="header"></slot></div>
|
||||
<slot name="func"></slot>
|
||||
@@ -60,8 +60,12 @@ export default Vue.extend({
|
||||
|
||||
&:not(.inNakedDeckColumn)
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
& + .kedshtep
|
||||
margin-top 16px
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<li @click="signout">
|
||||
<p class="signout">
|
||||
<i><fa icon="power-off"/></i>
|
||||
<span>{{ $t('signout') }}</span>
|
||||
<span>{{ $t('@.signout') }}</span>
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -61,7 +61,7 @@ export default Vue.extend({
|
||||
computed: {
|
||||
style(): any {
|
||||
return {
|
||||
'box-shadow': this.$store.state.settings.useShadow ? '0 0px 8px rgba(0, 0, 0, 0.2)' : 'none'
|
||||
'box-shadow': this.$store.state.device.useShadow ? '0 0px 8px rgba(0, 0, 0, 0.2)' : 'none'
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="header" :class="navbar">
|
||||
<div class="header" :class="navbar" :data-shadow="$store.state.device.useShadow">
|
||||
<div class="body">
|
||||
<div class="post">
|
||||
<button @click="post" :title="$t('title')"><fa icon="pencil-alt"/></button>
|
||||
@@ -62,7 +62,7 @@
|
||||
</div>
|
||||
|
||||
<transition :name="`slide-${navbar}`">
|
||||
<div class="notifications" v-if="showNotifications" ref="notifications" :class="navbar">
|
||||
<div class="notifications" v-if="showNotifications" ref="notifications" :class="navbar" :data-shadow="$store.state.device.useShadow">
|
||||
<mk-notifications/>
|
||||
</div>
|
||||
</transition>
|
||||
@@ -226,11 +226,15 @@ export default Vue.extend({
|
||||
|
||||
&.left
|
||||
left 0
|
||||
box-shadow var(--shadowRight)
|
||||
|
||||
&[data-shadow]
|
||||
box-shadow 4px 0 4px rgba(0, 0, 0, 0.1)
|
||||
|
||||
&.right
|
||||
right 0
|
||||
box-shadow var(--shadowLeft)
|
||||
|
||||
&[data-shadow]
|
||||
box-shadow -4px 0 4px rgba(0, 0, 0, 0.1)
|
||||
|
||||
> .body
|
||||
position fixed
|
||||
@@ -302,11 +306,15 @@ export default Vue.extend({
|
||||
|
||||
&.left
|
||||
left $width
|
||||
box-shadow var(--shadowRight)
|
||||
|
||||
&[data-shadow]
|
||||
box-shadow 4px 0 4px rgba(0, 0, 0, 0.1)
|
||||
|
||||
&.right
|
||||
right $width
|
||||
box-shadow var(--shadowLeft)
|
||||
|
||||
&[data-shadow]
|
||||
box-shadow -4px 0 4px rgba(0, 0, 0, 0.1)
|
||||
|
||||
.nav
|
||||
> *
|
||||
|
||||
@@ -28,7 +28,7 @@ export default Vue.extend({
|
||||
this.fetching = true;
|
||||
|
||||
this.$root.api('notes/featured', {
|
||||
limit: 20
|
||||
limit: 30
|
||||
}).then(notes => {
|
||||
notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
||||
this.notes = notes;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<option value="users">{{ $t('@.widgets.users') }}</option>
|
||||
<option value="polls">{{ $t('@.widgets.polls') }}</option>
|
||||
<option value="post-form">{{ $t('@.widgets.post-form') }}</option>
|
||||
<option value="messaging">{{ $t('@.widgets.messaging') }}</option>
|
||||
<option value="messaging">{{ $t('@.messaging') }}</option>
|
||||
<option value="memo">{{ $t('@.widgets.memo') }}</option>
|
||||
<option value="hashtags">{{ $t('@.widgets.hashtags') }}</option>
|
||||
<option value="posts-monitor">{{ $t('@.widgets.posts-monitor') }}</option>
|
||||
@@ -109,6 +109,10 @@ export default Vue.extend({
|
||||
name: 'broadcast',
|
||||
place: 'right',
|
||||
data: {}
|
||||
}, {
|
||||
name: 'hashtags',
|
||||
place: 'right',
|
||||
data: {}
|
||||
}];
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="pwbzawku">
|
||||
<mk-post-form class="form" v-if="$store.state.settings.showPostFormOnTopOfTl"/>
|
||||
<mk-post-form class="form" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }" v-if="$store.state.settings.showPostFormOnTopOfTl"/>
|
||||
<div class="main">
|
||||
<component :is="src == 'list' ? 'mk-user-list-timeline' : 'x-core'" ref="tl" v-bind="options">
|
||||
<header class="zahtxcqi">
|
||||
@@ -193,8 +193,12 @@ export default Vue.extend({
|
||||
.pwbzawku
|
||||
> .form
|
||||
margin-bottom 16px
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
.zahtxcqi
|
||||
padding 0 8px
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<template>
|
||||
<div class="omechnps" v-if="!fetching">
|
||||
<div class="is-suspended" v-if="user.isSuspended"><fa icon="exclamation-triangle"/> {{ $t('@.user-suspended') }}</div>
|
||||
<div class="is-remote" v-if="user.host != null"><fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url || user.uri" target="_blank">{{ $t('@.view-on-remote') }}</a></div>
|
||||
<div class="is-suspended" v-if="user.isSuspended" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<fa icon="exclamation-triangle"/> {{ $t('@.user-suspended') }}
|
||||
</div>
|
||||
<div class="is-remote" v-if="user.host != null" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url || user.uri" target="_blank">{{ $t('@.view-on-remote') }}</a>
|
||||
</div>
|
||||
<div class="main">
|
||||
<x-header class="header" :user="user"/>
|
||||
<router-view :user="user"></router-view>
|
||||
@@ -61,8 +65,12 @@ export default Vue.extend({
|
||||
margin-bottom 16px
|
||||
padding 14px 16px
|
||||
font-size 14px
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
&.is-suspended
|
||||
color var(--suspendedInfoFg)
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
<template>
|
||||
<div class="vahgrswmbzfdlmomxnqftuueyvwaafth">
|
||||
<p class="title"><fa icon="users"/>{{ $t('title') }}</p>
|
||||
<p class="initializing" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('loading') }}<mk-ellipsis/></p>
|
||||
<div v-if="!fetching && users.length > 0">
|
||||
<router-link v-for="user in users" :to="user | userPage" :key="user.id">
|
||||
<img :src="user.avatarUrl" :alt="user | userName" v-user-preview="user.id"/>
|
||||
</router-link>
|
||||
</div>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">{{ $t('no-users') }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('desktop/views/pages/user/user.followers-you-know.vue'),
|
||||
props: ['user'],
|
||||
data() {
|
||||
return {
|
||||
users: [],
|
||||
fetching: true
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$root.api('users/followers', {
|
||||
userId: this.user.id,
|
||||
iknow: true,
|
||||
limit: 16
|
||||
}).then(x => {
|
||||
this.users = x.users;
|
||||
this.fetching = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.vahgrswmbzfdlmomxnqftuueyvwaafth
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
|
||||
> .title
|
||||
z-index 1
|
||||
margin 0
|
||||
padding 0 16px
|
||||
line-height 42px
|
||||
font-size 0.9em
|
||||
font-weight bold
|
||||
color var(--faceHeaderText)
|
||||
box-shadow 0 1px rgba(#000, 0.07)
|
||||
|
||||
> i
|
||||
margin-right 4px
|
||||
|
||||
> div
|
||||
padding 8px
|
||||
|
||||
> a
|
||||
display inline-block
|
||||
margin 4px
|
||||
|
||||
> img
|
||||
display inline-block
|
||||
text-align center
|
||||
width 48px
|
||||
height 48px
|
||||
vertical-align bottom
|
||||
border-radius 100%
|
||||
|
||||
> .initializing
|
||||
> .empty
|
||||
margin 0
|
||||
padding 16px
|
||||
text-align center
|
||||
color var(--text)
|
||||
|
||||
> i
|
||||
margin-right 4px
|
||||
|
||||
</style>
|
||||
@@ -1,112 +0,0 @@
|
||||
<template>
|
||||
<div class="hozptpaliadatkehcmcayizwzwwctpbc">
|
||||
<p class="title"><fa icon="users"/>{{ $t('title') }}</p>
|
||||
<p class="initializing" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('loading') }}<mk-ellipsis/></p>
|
||||
<template v-if="!fetching && users.length != 0">
|
||||
<div class="user" v-for="friend in users">
|
||||
<mk-avatar class="avatar" :user="friend"/>
|
||||
<div class="body">
|
||||
<router-link class="name" :to="friend | userPage" v-user-preview="friend.id"><mk-user-name :user="friend"/></router-link>
|
||||
<p class="username">@{{ friend | acct }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<p class="empty" v-if="!fetching && users.length == 0">{{ $t('no-users') }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('desktop/views/pages/user/user.friends.vue'),
|
||||
props: ['user'],
|
||||
data() {
|
||||
return {
|
||||
users: [],
|
||||
fetching: true
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$root.api('users/get_frequently_replied_users', {
|
||||
userId: this.user.id,
|
||||
limit: 4
|
||||
}).then(docs => {
|
||||
this.users = docs.map(doc => doc.user);
|
||||
this.fetching = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.hozptpaliadatkehcmcayizwzwwctpbc
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
overflow hidden
|
||||
|
||||
> .title
|
||||
z-index 1
|
||||
margin 0
|
||||
padding 0 16px
|
||||
line-height 42px
|
||||
font-size 0.9em
|
||||
font-weight bold
|
||||
background var(--faceHeader)
|
||||
color var(--faceHeaderText)
|
||||
box-shadow 0 1px rgba(#000, 0.07)
|
||||
|
||||
> i
|
||||
margin-right 4px
|
||||
|
||||
> .initializing
|
||||
> .empty
|
||||
margin 0
|
||||
padding 16px
|
||||
text-align center
|
||||
color var(--text)
|
||||
|
||||
> i
|
||||
margin-right 4px
|
||||
|
||||
> .user
|
||||
padding 16px
|
||||
border-bottom solid 1px var(--faceDivider)
|
||||
|
||||
&:last-child
|
||||
border-bottom none
|
||||
|
||||
&:after
|
||||
content ""
|
||||
display block
|
||||
clear both
|
||||
|
||||
> .avatar
|
||||
display block
|
||||
float left
|
||||
margin 0 12px 0 0
|
||||
width 42px
|
||||
height 42px
|
||||
border-radius 8px
|
||||
|
||||
> .body
|
||||
float left
|
||||
width calc(100% - 54px)
|
||||
|
||||
> .name
|
||||
margin 0
|
||||
font-size 16px
|
||||
line-height 24px
|
||||
color var(--text)
|
||||
|
||||
> .username
|
||||
display block
|
||||
margin 0
|
||||
font-size 15px
|
||||
line-height 16px
|
||||
color var(--text)
|
||||
opacity 0.7
|
||||
|
||||
</style>
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="header">
|
||||
<div class="header" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<div class="banner-container" :style="style">
|
||||
<div class="banner" ref="banner" :style="style" @click="onBannerClick"></div>
|
||||
<div class="fade"></div>
|
||||
@@ -126,10 +126,14 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
.header
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
border-radius var(--round)
|
||||
overflow hidden
|
||||
|
||||
&.round
|
||||
border-radius 6px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
|
||||
|
||||
> .banner-container
|
||||
height 250px
|
||||
overflow hidden
|
||||
|
||||
@@ -30,12 +30,12 @@
|
||||
</div>
|
||||
|
||||
<p class="sign">
|
||||
<span class="signup" @click="signup">{{ $t('signup') }}</span>
|
||||
<span class="signup" @click="signup">{{ $t('@.signup') }}</span>
|
||||
<span class="divider">|</span>
|
||||
<span class="signin" @click="signin">{{ $t('signin') }}</span>
|
||||
<span class="signin" @click="signin">{{ $t('@.signin') }}</span>
|
||||
</p>
|
||||
|
||||
<img :src="meta.mascotImageUrl" alt="" title="藍" class="char">
|
||||
<img v-if="meta" :src="meta.mascotImageUrl" alt="" title="藍" class="char">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -135,12 +135,12 @@
|
||||
</modal>
|
||||
|
||||
<modal name="signup" class="modal" width="450px" height="auto" scrollable>
|
||||
<header class="formHeader">{{ $t('signup') }}</header>
|
||||
<header class="formHeader">{{ $t('@.signup') }}</header>
|
||||
<mk-signup class="form"/>
|
||||
</modal>
|
||||
|
||||
<modal name="signin" class="modal" width="450px" height="auto" scrollable>
|
||||
<header class="formHeader">{{ $t('signin') }}</header>
|
||||
<header class="formHeader">{{ $t('@.signin') }}</header>
|
||||
<mk-signin class="form"/>
|
||||
</modal>
|
||||
</div>
|
||||
@@ -344,8 +344,6 @@ export default Vue.extend({
|
||||
.block
|
||||
color var(--text)
|
||||
background var(--face)
|
||||
box-shadow var(--shadow)
|
||||
//border-radius 8px
|
||||
overflow auto
|
||||
|
||||
> header
|
||||
|
||||
@@ -6,7 +6,6 @@ import wActivity from './activity.vue';
|
||||
import wTrends from './trends.vue';
|
||||
import wUsers from './users.vue';
|
||||
import wPolls from './polls.vue';
|
||||
import wPostForm from './post-form.vue';
|
||||
import wMessaging from './messaging.vue';
|
||||
import wProfile from './profile.vue';
|
||||
import wCustomize from './customize.vue';
|
||||
@@ -17,7 +16,6 @@ Vue.component('mkw-activity', wActivity);
|
||||
Vue.component('mkw-trends', wTrends);
|
||||
Vue.component('mkw-users', wUsers);
|
||||
Vue.component('mkw-polls', wPolls);
|
||||
Vue.component('mkw-post-form', wPostForm);
|
||||
Vue.component('mkw-messaging', wMessaging);
|
||||
Vue.component('mkw-profile', wProfile);
|
||||
Vue.component('mkw-customize', wCustomize);
|
||||
|
||||
@@ -401,34 +401,6 @@ export default (callback: (launch: (router: VueRouter) => [Vue, MiOS], os: MiOS)
|
||||
console.log(`Cannot reapply theme. ${e}`);
|
||||
}
|
||||
|
||||
//#region shadow
|
||||
const shadow = '0 3px 8px rgba(0, 0, 0, 0.2)';
|
||||
const shadowRight = '4px 0 4px rgba(0, 0, 0, 0.1)';
|
||||
const shadowLeft = '-4px 0 4px rgba(0, 0, 0, 0.1)';
|
||||
if (os.store.state.settings.useShadow) {
|
||||
document.documentElement.style.setProperty('--shadow', shadow);
|
||||
document.documentElement.style.setProperty('--shadowRight', shadowRight);
|
||||
document.documentElement.style.setProperty('--shadowLeft', shadowLeft);
|
||||
}
|
||||
os.store.watch(s => {
|
||||
return s.settings.useShadow;
|
||||
}, v => {
|
||||
document.documentElement.style.setProperty('--shadow', v ? shadow : 'none');
|
||||
document.documentElement.style.setProperty('--shadowRight', v ? shadowRight : 'none');
|
||||
document.documentElement.style.setProperty('--shadowLeft', v ? shadowLeft : 'none');
|
||||
});
|
||||
//#endregion
|
||||
|
||||
//#region rounded corners
|
||||
const round = '6px';
|
||||
if (os.store.state.settings.roundedCorners) document.documentElement.style.setProperty('--round', round);
|
||||
os.store.watch(s => {
|
||||
return s.settings.roundedCorners;
|
||||
}, v => {
|
||||
document.documentElement.style.setProperty('--round', v ? round : '0');
|
||||
});
|
||||
//#endregion
|
||||
|
||||
//#region line width
|
||||
document.documentElement.style.setProperty('--lineWidth', `${os.store.state.device.lineWidth}px`);
|
||||
os.store.watch(s => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="mk-note-detail" tabindex="-1">
|
||||
<div class="mk-note-detail" tabindex="-1" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<button
|
||||
class="more"
|
||||
v-if="appearNote.reply && appearNote.reply.replyId && conversation.length == 0"
|
||||
@@ -164,11 +164,15 @@ export default Vue.extend({
|
||||
width 100%
|
||||
text-align left
|
||||
background var(--face)
|
||||
border-radius 8px
|
||||
box-shadow 0 4px 16px rgba(#000, 0.1)
|
||||
|
||||
@media (min-width 500px)
|
||||
box-shadow 0 8px 32px rgba(#000, 0.1)
|
||||
&.round
|
||||
border-radius 8px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 4px 16px rgba(#000, 0.1)
|
||||
|
||||
@media (min-width 500px)
|
||||
box-shadow 0 8px 32px rgba(#000, 0.1)
|
||||
|
||||
> .fetching
|
||||
padding 64px 0
|
||||
@@ -180,7 +184,7 @@ export default Vue.extend({
|
||||
width 100%
|
||||
font-size 1em
|
||||
text-align center
|
||||
color #999
|
||||
color var(--text)
|
||||
cursor pointer
|
||||
background var(--subNoteBg)
|
||||
outline none
|
||||
@@ -289,7 +293,7 @@ export default Vue.extend({
|
||||
> .location
|
||||
margin 4px 0
|
||||
font-size 12px
|
||||
color #ccc
|
||||
color var(--text)
|
||||
|
||||
> .map
|
||||
width 100%
|
||||
|
||||
@@ -36,26 +36,26 @@
|
||||
</div>
|
||||
<span class="app" v-if="appearNote.app && $store.state.settings.showVia">via <b>{{ appearNote.app.name }}</b></span>
|
||||
</div>
|
||||
<footer v-if="appearNote.deletedAt == null">
|
||||
<footer v-if="appearNote.deletedAt == null" class="footer">
|
||||
<mk-reactions-viewer :note="appearNote" ref="reactionsViewer"/>
|
||||
<button @click="reply()">
|
||||
<button @click="reply()" class="button">
|
||||
<template v-if="appearNote.reply"><fa icon="reply-all"/></template>
|
||||
<template v-else><fa icon="reply"/></template>
|
||||
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
||||
</button>
|
||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" @click="renote()" title="Renote">
|
||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" @click="renote()" title="Renote" class="button">
|
||||
<fa icon="retweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
|
||||
</button>
|
||||
<button v-else>
|
||||
<button v-else class="button">
|
||||
<fa icon="ban"/>
|
||||
</button>
|
||||
<button v-if="!isMyNote && appearNote.myReaction == null" class="reactionButton" @click="react()" ref="reactButton">
|
||||
<button v-if="!isMyNote && appearNote.myReaction == null" class="button" @click="react()" ref="reactButton">
|
||||
<fa icon="plus"/>
|
||||
</button>
|
||||
<button v-if="!isMyNote && appearNote.myReaction != null" class="reactionButton reacted" @click="undoReact(appearNote)" ref="reactButton">
|
||||
<button v-if="!isMyNote && appearNote.myReaction != null" class="button reacted" @click="undoReact(appearNote)" ref="reactButton">
|
||||
<fa icon="minus"/>
|
||||
</button>
|
||||
<button class="menu" @click="menu()" ref="menuButton">
|
||||
<button class="button" @click="menu()" ref="menuButton">
|
||||
<fa icon="ellipsis-h"/>
|
||||
</button>
|
||||
</footer>
|
||||
@@ -107,20 +107,6 @@ export default Vue.extend({
|
||||
font-size 13px
|
||||
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||
|
||||
&:focus
|
||||
z-index 1
|
||||
|
||||
&:after
|
||||
content ""
|
||||
pointer-events none
|
||||
position absolute
|
||||
top 2px
|
||||
right 2px
|
||||
bottom 2px
|
||||
left 2px
|
||||
border 2px solid var(--primaryAlpha03)
|
||||
border-radius 4px
|
||||
|
||||
&:last-of-type
|
||||
border-bottom none
|
||||
|
||||
@@ -251,8 +237,8 @@ export default Vue.extend({
|
||||
font-size 12px
|
||||
color #ccc
|
||||
|
||||
> footer
|
||||
> button
|
||||
> .footer
|
||||
> .button
|
||||
margin 0
|
||||
padding 8px
|
||||
background transparent
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="ivaojijs">
|
||||
<div class="ivaojijs" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<div class="empty" v-if="notes.length == 0 && !fetching && inited">{{ $t('@.no-notes') }}</div>
|
||||
|
||||
<mk-error v-if="!fetching && !inited" @retry="init()"/>
|
||||
@@ -191,11 +191,15 @@ export default Vue.extend({
|
||||
.ivaojijs
|
||||
overflow hidden
|
||||
background var(--face)
|
||||
border-radius 8px
|
||||
box-shadow 0 4px 16px rgba(#000, 0.1)
|
||||
|
||||
@media (min-width 500px)
|
||||
box-shadow 0 8px 32px rgba(#000, 0.1)
|
||||
&.round
|
||||
border-radius 8px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 4px 16px rgba(#000, 0.1)
|
||||
|
||||
@media (min-width 500px)
|
||||
box-shadow 0 8px 32px rgba(#000, 0.1)
|
||||
|
||||
> .empty
|
||||
padding 16px
|
||||
@@ -239,13 +243,7 @@ export default Vue.extend({
|
||||
padding 32px
|
||||
max-width 400px
|
||||
text-align center
|
||||
color #999
|
||||
|
||||
> [data-icon]
|
||||
display block
|
||||
margin-bottom 16px
|
||||
font-size 3em
|
||||
color #ccc
|
||||
color var(--text)
|
||||
|
||||
> footer
|
||||
text-align center
|
||||
@@ -258,7 +256,7 @@ export default Vue.extend({
|
||||
margin 0
|
||||
padding 16px
|
||||
width 100%
|
||||
color #ccc
|
||||
color var(--text)
|
||||
|
||||
@media (min-width 500px)
|
||||
padding 20px
|
||||
|
||||
@@ -61,7 +61,7 @@ export default Vue.extend({
|
||||
|
||||
this.connection.on('notification', this.onNotification);
|
||||
|
||||
const max = 10;
|
||||
const max = 15;
|
||||
|
||||
this.$root.api('i/notifications', {
|
||||
limit: max + 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="ukygtjoj" :class="{ naked, inDeck, inNakedDeckColumn, hideHeader: !showHeader }">
|
||||
<div class="ukygtjoj" :class="{ naked, inNakedDeckColumn, hideHeader: !showHeader, shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
|
||||
<header v-if="showHeader">
|
||||
<div class="title"><slot name="header"></slot></div>
|
||||
<slot name="func"></slot>
|
||||
@@ -36,9 +36,6 @@ export default Vue.extend({
|
||||
},
|
||||
},
|
||||
inject: {
|
||||
inDeck: {
|
||||
default: false
|
||||
},
|
||||
inNakedDeckColumn: {
|
||||
default: false
|
||||
}
|
||||
@@ -60,13 +57,14 @@ export default Vue.extend({
|
||||
.ukygtjoj
|
||||
overflow hidden
|
||||
|
||||
&.inDeck
|
||||
box-shadow none !important
|
||||
|
||||
&:not(.inNakedDeckColumn)
|
||||
background var(--face)
|
||||
border-radius 8px
|
||||
box-shadow 0 4px 16px rgba(#000, 0.1)
|
||||
|
||||
&.round
|
||||
border-radius 8px
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 4px 16px rgba(#000, 0.1)
|
||||
|
||||
& + .ukygtjoj
|
||||
margin-top 16px
|
||||
@@ -86,7 +84,6 @@ export default Vue.extend({
|
||||
font-weight normal
|
||||
color var(--faceHeaderText)
|
||||
background var(--faceHeader)
|
||||
border-radius 8px 8px 0 0
|
||||
|
||||
> [data-icon]
|
||||
margin-right 6px
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="header" ref="root">
|
||||
<div class="header" ref="root" :class="{ shadow: $store.state.device.useShadow }">
|
||||
<p class="warn" v-if="env != 'production'">{{ $t('@.do-not-use-in-production') }} <a href="/assets/flush.html?force">Flush</a></p>
|
||||
<div class="main" ref="main">
|
||||
<div class="backdrop"></div>
|
||||
@@ -47,7 +47,9 @@ export default Vue.extend({
|
||||
z-index 1024
|
||||
width calc(100% + 16px)
|
||||
padding 0 8px
|
||||
box-shadow 0 0px 8px rgba(0, 0, 0, 0.25)
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 0px 8px rgba(0, 0, 0, 0.25)
|
||||
|
||||
&, *
|
||||
user-select none
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<li v-if="$store.getters.isSignedIn && ($store.state.i.isAdmin || $store.state.i.isModerator)"><a href="/admin"><i><fa icon="terminal" fixed-width/></i><span>{{ $t('admin') }}</span><i><fa icon="angle-right"/></i></a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li @click="toggleDeckMode"><p><i><fa :icon="$store.state.device.inDeckMode ? faHome : faColumns"/></i><span>{{ $store.state.device.inDeckMode ? $t('@.home') : $t('@.deck') }}</span></p></li>
|
||||
<li @click="toggleDeckMode"><p><i><fa :icon="$store.state.device.inDeckMode ? faHome : faColumns" fixed-width/></i><span>{{ $store.state.device.inDeckMode ? $t('@.home') : $t('@.deck') }}</span></p></li>
|
||||
<li @click="dark"><p><i><fa :icon="$store.state.device.darkmode ? faSun : faMoon" fixed-width/></i><span>{{ $store.state.device.darkmode ? $t('@.turn-off-darkmode') : $t('@.turn-on-darkmode') }}</span></p></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -50,7 +50,8 @@
|
||||
</div>
|
||||
<div class="notifications" v-if="showNotifications">
|
||||
<header>
|
||||
<button @click="$parent.isDrawerOpening = false"><fa icon="times"/></button>
|
||||
<button @click="showNotifications = false"><fa icon="times"/></button>
|
||||
<i v-if="hasUnreadNotification" class="circle"><fa icon="circle"/></i>
|
||||
</header>
|
||||
<mk-notifications/>
|
||||
</div>
|
||||
@@ -207,7 +208,7 @@ export default Vue.extend({
|
||||
font-size 15px
|
||||
|
||||
&.notifications
|
||||
width 340px
|
||||
width 330px
|
||||
|
||||
> .notifications
|
||||
padding-top 42px
|
||||
@@ -217,7 +218,7 @@ export default Vue.extend({
|
||||
top 0
|
||||
left 0
|
||||
z-index 1000
|
||||
width 340px
|
||||
width 330px
|
||||
line-height 42px
|
||||
background var(--secondary)
|
||||
|
||||
@@ -228,6 +229,13 @@ export default Vue.extend({
|
||||
line-height 42px
|
||||
color var(--text)
|
||||
|
||||
> i
|
||||
position absolute
|
||||
top 0
|
||||
right 16px
|
||||
font-size 12px
|
||||
color var(--notificationIndicator)
|
||||
|
||||
> .nav
|
||||
|
||||
> .me
|
||||
|
||||
@@ -124,7 +124,7 @@ export default Vue.extend({
|
||||
position absolute
|
||||
top 0
|
||||
left 0
|
||||
color var(--primary)
|
||||
color var(--notificationIndicator)
|
||||
font-size 16px
|
||||
|
||||
&.post
|
||||
|
||||
@@ -36,7 +36,7 @@ export default Vue.extend({
|
||||
this.fetching = true;
|
||||
|
||||
this.$root.api('notes/featured', {
|
||||
limit: 20
|
||||
limit: 30
|
||||
}).then(notes => {
|
||||
notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
||||
this.notes = notes;
|
||||
|
||||
@@ -14,16 +14,18 @@
|
||||
<template #title><fa icon="poll-h"/> {{ $t('design') }}</template>
|
||||
|
||||
<section>
|
||||
<ui-switch v-model="darkmode">{{ $t('dark-mode') }}</ui-switch>
|
||||
<ui-switch v-model="circleIcons">{{ $t('circle-icons') }}</ui-switch>
|
||||
<ui-switch v-model="darkmode">{{ $t('@.dark-mode') }}</ui-switch>
|
||||
<ui-switch v-model="useShadow">{{ $t('@.use-shadow') }}</ui-switch>
|
||||
<ui-switch v-model="roundedCorners">{{ $t('@.rounded-corners') }}</ui-switch>
|
||||
<ui-switch v-model="circleIcons">{{ $t('@.circle-icons') }}</ui-switch>
|
||||
<section>
|
||||
<header>{{ $t('@.line-width') }}</header>
|
||||
<ui-radio v-model="lineWidth" :value="0.5">{{ $t('@.line-width-thin') }}</ui-radio>
|
||||
<ui-radio v-model="lineWidth" :value="1">{{ $t('@.line-width-normal') }}</ui-radio>
|
||||
<ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio>
|
||||
</section>
|
||||
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }} ({{ $t('@.this-setting-is-this-device-only') }})</ui-switch>
|
||||
<ui-switch v-model="contrastedAcct">{{ $t('contrasted-acct') }}</ui-switch>
|
||||
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }}</ui-switch>
|
||||
<ui-switch v-model="contrastedAcct">{{ $t('@.contrasted-acct') }}</ui-switch>
|
||||
<ui-switch v-model="showFullAcct">{{ $t('@.show-full-acct') }}</ui-switch>
|
||||
<ui-switch v-model="showVia">{{ $t('@.show-via') }}</ui-switch>
|
||||
<ui-switch v-model="useOsDefaultEmojis">{{ $t('@.use-os-default-emojis') }}</ui-switch>
|
||||
@@ -155,7 +157,7 @@
|
||||
</ui-card>
|
||||
</div>
|
||||
|
||||
<div class="signout" @click="signout">{{ $t('signout') }}</div>
|
||||
<div class="signout" @click="signout">{{ $t('@.signout') }}</div>
|
||||
|
||||
<footer>
|
||||
<small>ver {{ version }} ({{ codename }})</small>
|
||||
@@ -214,6 +216,16 @@ export default Vue.extend({
|
||||
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
|
||||
},
|
||||
|
||||
useShadow: {
|
||||
get() { return this.$store.state.device.useShadow; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'useShadow', value }); }
|
||||
},
|
||||
|
||||
roundedCorners: {
|
||||
get() { return this.$store.state.device.roundedCorners; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'roundedCorners', value }); }
|
||||
},
|
||||
|
||||
useOsDefaultEmojis: {
|
||||
get() { return this.$store.state.device.useOsDefaultEmojis; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'useOsDefaultEmojis', value }); }
|
||||
@@ -296,7 +308,10 @@ export default Vue.extend({
|
||||
|
||||
circleIcons: {
|
||||
get() { return this.$store.state.settings.circleIcons; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); }
|
||||
set(value) {
|
||||
this.$store.dispatch('settings/set', { key: 'circleIcons', value });
|
||||
this.reload();
|
||||
}
|
||||
},
|
||||
|
||||
lineWidth: {
|
||||
@@ -306,12 +321,18 @@ export default Vue.extend({
|
||||
|
||||
contrastedAcct: {
|
||||
get() { return this.$store.state.settings.contrastedAcct; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'contrastedAcct', value }); }
|
||||
set(value) {
|
||||
this.$store.dispatch('settings/set', { key: 'contrastedAcct', value });
|
||||
this.reload();
|
||||
}
|
||||
},
|
||||
|
||||
showFullAcct: {
|
||||
get() { return this.$store.state.settings.showFullAcct; },
|
||||
set(value) { this.$store.dispatch('settings/set', { key: 'showFullAcct', value }); }
|
||||
set(value) {
|
||||
this.$store.dispatch('settings/set', { key: 'showFullAcct', value });
|
||||
this.reload();
|
||||
}
|
||||
},
|
||||
|
||||
showVia: {
|
||||
@@ -384,6 +405,18 @@ export default Vue.extend({
|
||||
this.$root.signout();
|
||||
},
|
||||
|
||||
reload() {
|
||||
this.$root.dialog({
|
||||
type: 'warning',
|
||||
text: this.$t('@.reload-to-apply-the-setting'),
|
||||
showCancelButton: true
|
||||
}).then(({ canceled }) => {
|
||||
if (!canceled) {
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
checkForUpdate() {
|
||||
this.checkingForUpdate = true;
|
||||
checkForUpdate(this.$root, true, true).then(newer => {
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
export default Vue.extend({
|
||||
i18n: i18n('mobile/views/pages/signup.vue'),});
|
||||
i18n: i18n('mobile/views/pages/signup.vue')
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@@ -23,6 +24,6 @@ export default Vue.extend({
|
||||
padding 8px 0 0 0
|
||||
font-size 1.5em
|
||||
font-weight bold
|
||||
color #444
|
||||
color var(--text)
|
||||
|
||||
</style>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<nav v-if="$route.name == 'user'">
|
||||
<nav v-if="$route.name == 'user'" :class="{ shadow: $store.state.device.useShadow }">
|
||||
<div class="nav-container">
|
||||
<a :data-active="page == 'home'" @click="page = 'home'"><fa icon="home"/> {{ $t('overview') }}</a>
|
||||
<a :data-active="page == 'notes'" @click="page = 'notes'"><fa :icon="['far', 'comment-alt']"/> {{ $t('timeline') }}</a>
|
||||
@@ -315,10 +315,12 @@ export default Vue.extend({
|
||||
position -webkit-sticky
|
||||
position sticky
|
||||
top 47px
|
||||
box-shadow 0 4px 4px var(--mobileUserPageHeaderShadow)
|
||||
background-color $bg
|
||||
z-index 2
|
||||
|
||||
&.shadow
|
||||
box-shadow 0 4px 4px var(--mobileUserPageHeaderShadow)
|
||||
|
||||
> .nav-container
|
||||
display flex
|
||||
justify-content center
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
<div class="about">
|
||||
<h2>{{ name }}</h2>
|
||||
<p v-html="description || this.$t('@.about')"></p>
|
||||
<router-link class="signup" to="/signup">{{ $t('signup') }}</router-link>
|
||||
<router-link class="signup" to="/signup">{{ $t('@.signup') }}</router-link>
|
||||
</div>
|
||||
<div class="signin">
|
||||
<a href="/signin" @click.prevent="signin()">{{ $t('signin') }}</a>
|
||||
<a href="/signin" @click.prevent="signin()">{{ $t('@.signin') }}</a>
|
||||
</div>
|
||||
<div class="tl">
|
||||
<mk-welcome-timeline/>
|
||||
|
||||
@@ -17,8 +17,6 @@ const defaultSettings = {
|
||||
showPostFormOnTopOfTl: false,
|
||||
suggestRecentHashtags: true,
|
||||
showClockOnHeader: true,
|
||||
useShadow: true,
|
||||
roundedCorners: false,
|
||||
circleIcons: true,
|
||||
contrastedAcct: true,
|
||||
showFullAcct: false,
|
||||
@@ -48,9 +46,11 @@ const defaultDeviceSettings = {
|
||||
deckMode: false,
|
||||
deckColumnAlign: 'center',
|
||||
deckColumnWidth: 'normal',
|
||||
useShadow: false,
|
||||
roundedCorners: true,
|
||||
reduceMotion: false,
|
||||
autoPopout: false,
|
||||
darkmode: false,
|
||||
darkmode: true,
|
||||
darkTheme: 'dark',
|
||||
lightTheme: 'light',
|
||||
lineWidth: 1,
|
||||
|
||||
@@ -36,7 +36,14 @@ export const meta = {
|
||||
default: null as any,
|
||||
transform: transform,
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'DriveFolder',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default define(meta, async (ps, user) => {
|
||||
|
||||
@@ -23,7 +23,14 @@ export const meta = {
|
||||
'ja-JP': 'フォルダID'
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'DriveFolder',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default define(meta, async (ps, user) => {
|
||||
|
||||
@@ -29,6 +29,10 @@ export const meta = {
|
||||
}
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'DriveFolder',
|
||||
},
|
||||
|
||||
errors: {
|
||||
noSuchFolder: {
|
||||
message: 'No such folder.',
|
||||
|
||||
@@ -44,7 +44,14 @@ export const meta = {
|
||||
'-attachedRemoteUsers',
|
||||
]),
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'Hashtag'
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
const sort: any = {
|
||||
|
||||
@@ -35,7 +35,14 @@ export const meta = {
|
||||
'ja-JP': 'オフセット'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'string'
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export default define(meta, async (ps) => {
|
||||
|
||||
@@ -44,7 +44,14 @@ export const meta = {
|
||||
]),
|
||||
default: 'local'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'User'
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
const sort: any = {
|
||||
|
||||
@@ -29,7 +29,6 @@ export default define(meta, async (ps, user) => {
|
||||
await User.update({ _id: user._id }, {
|
||||
$set: {
|
||||
isDeleted: true,
|
||||
token: null,
|
||||
name: null,
|
||||
description: null,
|
||||
pinnedNoteIds: [],
|
||||
|
||||
@@ -33,7 +33,7 @@ export const meta = {
|
||||
};
|
||||
|
||||
export default define(meta, async (ps, user) => {
|
||||
const day = 1000 * 60 * 60 * 24 * 2;
|
||||
const day = 1000 * 60 * 60 * 24 * 3; // 3日前まで
|
||||
|
||||
const hideUserIds = await getHideUserIds(user);
|
||||
|
||||
|
||||
@@ -46,6 +46,13 @@ export const meta = {
|
||||
},
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'Reaction'
|
||||
}
|
||||
},
|
||||
|
||||
errors: {
|
||||
noSuchNote: {
|
||||
message: 'No such note.',
|
||||
|
||||
@@ -278,6 +278,46 @@ export const schemas = {
|
||||
required: ['id', 'createdAt', 'name', 'type', 'datasize', 'md5']
|
||||
},
|
||||
|
||||
DriveFolder: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'string',
|
||||
format: 'id',
|
||||
description: 'The unique identifier for this Drive folder.',
|
||||
example: 'xxxxxxxxxxxxxxxxxxxxxxxx',
|
||||
},
|
||||
createdAt: {
|
||||
type: 'string',
|
||||
format: 'date-time',
|
||||
description: 'The date that the Drive folder was created.'
|
||||
},
|
||||
name: {
|
||||
type: 'string',
|
||||
description: 'The folder name.',
|
||||
},
|
||||
foldersCount: {
|
||||
type: 'number',
|
||||
description: 'The count of child folders.',
|
||||
},
|
||||
filesCount: {
|
||||
type: 'number',
|
||||
description: 'The count of child files.',
|
||||
},
|
||||
parentId: {
|
||||
type: 'string',
|
||||
format: 'id',
|
||||
nullable: true,
|
||||
description: 'The parent folder ID of this folder.',
|
||||
example: 'xxxxxxxxxxxxxxxxxxxxxxxx',
|
||||
},
|
||||
parent: {
|
||||
$ref: '#/components/schemas/DriveFolder'
|
||||
},
|
||||
},
|
||||
required: ['id', 'createdAt', 'name']
|
||||
},
|
||||
|
||||
Muting: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -321,4 +361,86 @@ export const schemas = {
|
||||
},
|
||||
required: ['id', 'createdAt', 'blockee']
|
||||
},
|
||||
|
||||
Reaction: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'string',
|
||||
format: 'id',
|
||||
description: 'The unique identifier for this reaction.',
|
||||
example: 'xxxxxxxxxxxxxxxxxxxxxxxx',
|
||||
},
|
||||
createdAt: {
|
||||
type: 'string',
|
||||
format: 'date-time',
|
||||
description: 'The date that the reaction was created.'
|
||||
},
|
||||
user: {
|
||||
$ref: '#/components/schemas/User',
|
||||
description: 'User who performed this reaction.'
|
||||
},
|
||||
type: {
|
||||
type: 'string',
|
||||
enum: [
|
||||
'like',
|
||||
'love',
|
||||
'laugh',
|
||||
'hmm',
|
||||
'surprise',
|
||||
'congrats',
|
||||
'angry',
|
||||
'confused',
|
||||
'rip',
|
||||
'pudding'
|
||||
],
|
||||
description: 'The reaction type.'
|
||||
},
|
||||
},
|
||||
required: ['id', 'createdAt', 'user', 'type']
|
||||
},
|
||||
|
||||
Hashtag: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
tag: {
|
||||
type: 'string',
|
||||
description: 'The hashtag name. No # prefixed.',
|
||||
example: 'misskey',
|
||||
},
|
||||
mentionedUsersCount: {
|
||||
type: 'number',
|
||||
description: 'Number of all users using this hashtag.'
|
||||
},
|
||||
mentionedLocalUsersCount: {
|
||||
type: 'number',
|
||||
description: 'Number of local users using this hashtag.'
|
||||
},
|
||||
mentionedRemoteUsersCount: {
|
||||
type: 'number',
|
||||
description: 'Number of remote users using this hashtag.'
|
||||
},
|
||||
attachedUsersCount: {
|
||||
type: 'number',
|
||||
description: 'Number of all users who attached this hashtag to profile.'
|
||||
},
|
||||
attachedLocalUsersCount: {
|
||||
type: 'number',
|
||||
description: 'Number of local users who attached this hashtag to profile.'
|
||||
},
|
||||
attachedRemoteUsersCount: {
|
||||
type: 'number',
|
||||
description: 'Number of remote users who attached this hashtag to profile.'
|
||||
},
|
||||
},
|
||||
required: [
|
||||
'tag',
|
||||
'mentionedUsersCount',
|
||||
'mentionedLocalUsersCount',
|
||||
'mentionedRemoteUsersCount',
|
||||
'attachedUsersCount',
|
||||
'attachedLocalUsersCount',
|
||||
'attachedRemoteUsersCount',
|
||||
]
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2,10 +2,15 @@ import * as Koa from 'koa';
|
||||
import * as request from 'request-promise-native';
|
||||
import summaly from 'summaly';
|
||||
import fetchMeta from '../../misc/fetch-meta';
|
||||
import Logger from '../../misc/logger';
|
||||
|
||||
const logger = new Logger('url-preview');
|
||||
|
||||
module.exports = async (ctx: Koa.BaseContext) => {
|
||||
const meta = await fetchMeta();
|
||||
|
||||
logger.info(`Getting preview of ${ctx.query.url} ...`);
|
||||
|
||||
try {
|
||||
const summary = meta.summalyProxy ? await request.get({
|
||||
url: meta.summalyProxy,
|
||||
@@ -17,6 +22,8 @@ module.exports = async (ctx: Koa.BaseContext) => {
|
||||
followRedirects: false
|
||||
});
|
||||
|
||||
logger.succ(`Got preview of ${ctx.query.url}: ${summary.title}`);
|
||||
|
||||
summary.icon = wrap(summary.icon);
|
||||
summary.thumbnail = wrap(summary.thumbnail);
|
||||
|
||||
@@ -25,6 +32,7 @@ module.exports = async (ctx: Koa.BaseContext) => {
|
||||
|
||||
ctx.body = summary;
|
||||
} catch (e) {
|
||||
logger.error(`Failed to get preview of ${ctx.query.url}: ${e}`);
|
||||
ctx.status = 200;
|
||||
ctx.set('Cache-Control', 'max-age=86400, immutable');
|
||||
ctx.body = '{}';
|
||||
|
||||
Reference in New Issue
Block a user