Compare commits

...

100 Commits

Author SHA1 Message Date
4ea60d36e5 12.37.0 2020-05-10 19:31:23 +09:00
95111ef8a1 New Crowdin translations (#6312)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Chinese Traditional)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (German)
2020-05-10 19:22:33 +09:00
145389768d pub-relay (#6341)
* pub-relay

* relay actorをApplicationにする

* Disable koa-compress

* Homeはリレーに送らない

* Disable debug

* UI

* cleanupなど
2020-05-10 18:42:31 +09:00
be183206e6 fix(server): Remove koa-compress 2020-05-10 17:41:16 +09:00
8b853b7970 fix(client): Fix reply style 2020-05-10 17:37:11 +09:00
5450b78f71 chore(lint): Add missing semicolon 2020-05-10 17:34:22 +09:00
a3283c71ef chore(lint): Add missing semicolons 2020-05-10 17:25:16 +09:00
7231f5ff0b chore(client): 🎨 2020-05-10 17:19:53 +09:00
38a68ea946 fix(client): Fix poll vote notification
Fix #5998
2020-05-10 17:19:41 +09:00
bf9486edc2 refactor(client): Use unique class name 2020-05-10 17:12:19 +09:00
aadfafaef9 fix(client): Fix style of poll viewer 2020-05-10 17:06:53 +09:00
c102978dd5 refactor(client): Use unique class name 2020-05-10 17:06:20 +09:00
9784ade84f fix(client): Do not expand each notes in my/messages 2020-05-10 16:52:05 +09:00
677f06961a fix(client): Do not expand each notes in my/mentions
Related #6336
2020-05-10 16:51:11 +09:00
57c3ea3dbe chore(lint): Add missing semicolon 2020-05-10 16:31:00 +09:00
c01210d4fe chore(lint): Add semicolon rule 2020-05-10 16:30:33 +09:00
64bbfed432 feat(client): Implement threaded replies
Resolve #2113
Resolve #5819
2020-05-10 16:22:39 +09:00
a482d9b078 refactor(client): Clean up component 2020-05-10 16:05:01 +09:00
08456dbb89 refactor(client): Use === 2020-05-10 15:36:42 +09:00
ea662b5c49 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-05-10 15:20:25 +09:00
58a8fff895 refactor(server): Improve readability 2020-05-10 15:20:21 +09:00
bb302a90a6 Fix #6337 (#6338) 2020-05-10 08:10:41 +09:00
99e34e9ee2 Fix inbox bug (#6334) 2020-05-09 17:08:54 +09:00
f1417c6bb1 chore(lint): Update rule 2020-05-09 16:19:09 +09:00
729db347a2 refactor(client): Remove deprecated property 2020-05-09 16:05:31 +09:00
f2465ca11f fix(client): Fix bug that cannot set custom texture 2020-05-09 15:55:00 +09:00
0294061c00 feat(client): Reimplement Misskey Rooms 2020-05-09 15:47:20 +09:00
71e5892308 refactor(client): Use getters to avoid watch vuex 2020-05-09 15:22:50 +09:00
a1597047b4 chore: Update deps 🚀 2020-05-09 08:44:45 +09:00
d6a8889d84 Receive Flag (#6331) 2020-05-09 08:25:23 +09:00
070f1f3c6e APリファクタとLD-Signatureの検証に対応 (#6300)
* DbResolver

* inbox types

* 認証順を変更

* User/Keyあたりをまとめる

* LD-Signatue

* Validate contexts url

* LD-Signature DocumentLoaderにProxyとTimeout
2020-05-09 08:21:42 +09:00
234294d564 WebAuthnでログインできないのを修正 (#6327)
Resolve #6319
2020-05-09 08:20:22 +09:00
d1be8b43f6 brotli圧縮の無効化など Resolve #6325 (#6326)
* disable brotli

* disable compress between nginx and app
2020-05-09 08:18:21 +09:00
0ed94ee52e chore: Use actions/checkout@v2 (#6328) 2020-05-08 17:46:58 +09:00
f07564a452 docker buildでyarn.lockを考慮してなかったのを修正 (#6330) 2020-05-08 17:45:59 +09:00
37419886a1 Merge pull request #6316 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-05-08 06:42:00 +09:00
b9f0a9ed88 Update README.md [AUTOGEN] 2020-05-08 03:00:08 +09:00
d0f68bb5d1 chore: Use node 14.2 2020-05-07 08:45:52 +09:00
11a350a114 chore: Update typescript to 3.9 2020-05-07 08:45:41 +09:00
778ac79c44 Fix using Buffer on window scope (#6324)
* Update 2fa.vue

* Import 'core-js/es/typed-array/from'

* Bye polyfill
2020-05-06 18:59:58 +09:00
766c00c305 fix(client): Add missing icon 2020-05-06 14:46:45 +09:00
97cdfa662e fix(client): Fix default reaction setting 2020-05-06 14:43:25 +09:00
4a08d5295e feat(client): Make possible to customize sidebar
Resolve #6285
2020-05-06 11:41:44 +09:00
b77788b947 refactor(client): Reorder property 2020-05-06 09:40:49 +09:00
729116c9e5 refactor(client): Export default reaction setting and use it 2020-05-06 09:40:07 +09:00
d57d55a226 chore: Update deps 🚀 2020-05-06 08:17:38 +09:00
4cccdb8a98 Merge pull request #6303 from syuilo/features/hcaptcha
Add support for hCaptcha
2020-05-05 10:22:49 +09:00
54045f95ca chore: Update dependencies 🚀 2020-05-04 12:56:02 +09:00
ee6c7cbc59 Merge pull request #6314 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-05-02 14:28:48 +09:00
00508dc778 Update README.md [AUTOGEN] 2020-05-02 13:00:09 +09:00
a3ff1bfda7 Update hcaptcha.d.ts 2020-05-02 10:51:12 +09:00
f57888eb4b Update src/@types/hcaptcha.d.ts 2020-05-02 10:50:29 +09:00
b2c703c173 Update src/server/api/private/signup.ts 2020-05-02 10:31:37 +09:00
9053b9635e refactor 2020-05-02 10:28:45 +09:00
b5e87a46b0 アップロードプログレスバーが動かないのを修正 Fix #6306 (#6307) 2020-05-02 10:00:43 +09:00
ddbdb94ba6 Merge pull request #6311 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-05-02 06:51:18 +09:00
304e3d58ea Update README.md [AUTOGEN] 2020-05-02 06:00:13 +09:00
ca6a70e555 Update signup.vue 2020-04-29 09:54:21 +09:00
9a611b24f3 Fix bug 2020-04-29 09:35:37 +09:00
77adf26236 Factorize *captcha component 2020-04-29 09:15:18 +09:00
805472482e Refactor code 2020-04-29 06:09:17 +09:00
01411327b8 Add *captcha settings guide 2020-04-29 06:04:05 +09:00
9daa900793 Refactor codes 2020-04-29 05:30:58 +09:00
b862c055ae Fix bug 2020-04-28 14:55:12 +09:00
7860839220 Add support for hCaptcha 2020-04-28 14:29:33 +09:00
e17e8bbb6f Merge pull request #6302 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-04-28 10:52:48 +09:00
136d0683b0 Update README.md [AUTOGEN] 2020-04-28 10:49:08 +09:00
0eded8f5a9 Update mfm.ts
Fix typo
2020-04-26 14:58:36 +09:00
f62eb0fee9 Update mfm.ts
Fix missed file name change
2020-04-26 14:55:04 +09:00
077bf11e45 Update CHANGELOG.md 2020-04-26 14:51:12 +09:00
ebdbd6a84a enhance(server): Resolve #6286 2020-04-26 11:54:51 +09:00
69975c2fdd chore: Use kebab-case for file names 2020-04-26 11:48:09 +09:00
9aac6a65c6 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2020-04-26 11:46:58 +09:00
7d7c206f24 fix(server): Fix #6284 2020-04-26 11:46:47 +09:00
15690d853c New translations ja-JP.yml (German) (#6299) 2020-04-26 11:40:08 +09:00
14ddca3875 feat(server): Improve boot process 2020-04-26 11:39:15 +09:00
a8b4df6eae feat(server): Log postgresql version when boot 2020-04-26 11:24:31 +09:00
0683fa6b97 chore(server): Add TODO 2020-04-26 11:19:57 +09:00
808c680184 chore(docker): Use node 14 2020-04-26 11:15:53 +09:00
2bb0a61a89 chore(docker): Use postgresql 12 2020-04-26 11:13:02 +09:00
dfa129febf New translations ja-JP.yml (French) (#6295) 2020-04-26 10:36:45 +09:00
3b49d233f8 nginxサンプルでTLSv1.2以外をdropなど (#6298) 2020-04-26 10:36:25 +09:00
f08d7df419 Update dependencies 🚀 (#6297)
* chore: Update dependencies 🚀

Make everything is up-to-date

* chore: Update dependencies 🚀

Good Bye, core-js@2 !

* packaging

* Fix test

* fix build

* fix test

* use default reporter

* fix mocha is keep running after test

* Revert back is-promise 

https://github.com/then/is-promise/issues/12

* Refresh
2020-04-26 10:35:47 +09:00
cd94d79cbb Supports Node v14 (#6294)
* Add Node v13, v14 CI

* pg v8.0.3
2020-04-24 23:48:50 +09:00
2314133112 12.36.1 2020-04-23 18:25:51 +09:00
06a47a7bd3 New translations ja-JP.yml (Chinese Simplified) (#6292) 2020-04-23 18:24:50 +09:00
05a785ebd0 chore: Update dep 2020-04-23 18:23:54 +09:00
2ee5835186 fix(client): Fix a bug that if block of pages not working 2020-04-23 08:57:10 +09:00
19e1abe110 12.36.0 2020-04-22 21:43:54 +09:00
d19441f3ae fix(client): Fix lint 2020-04-22 19:51:09 +09:00
6e3ee05cb6 refactor(client): 2020-04-22 19:36:28 +09:00
51476ad06f New Crowdin translations (#6281)
* New translations ja-JP.yml (German)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Spanish)
2020-04-22 10:10:43 +09:00
1f998168e2 feat(client): Implement default upload folder setting
Resolve #5985
2020-04-22 00:34:56 +09:00
e72011f1da chore: Update deps 2020-04-22 00:08:29 +09:00
0df3e22e51 Fix #6289 2020-04-21 20:26:54 +09:00
5a9530ccd4 Fix #6229 2020-04-21 20:16:37 +09:00
0a4d119d86 fix(lint): Use const 2020-04-20 21:36:58 +09:00
2ee0e07bb6 refactor(client): 2020-04-20 21:35:27 +09:00
533c9a4fe1 Merge pull request #6282 from syuilo/patch/autogen/v11
[AUTOMATED] Update README.md
2020-04-20 01:02:14 +09:00
30c000116f Update README.md [AUTOGEN] 2020-04-19 20:51:06 +09:00
301 changed files with 5796 additions and 2605 deletions

13
.babelrc Normal file
View File

@ -0,0 +1,13 @@
{
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs": {
"version": 3,
"proposals": true
}
}
]
]
}

View File

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: Pull previous build result (for cache)
run: docker pull misskey/misskey:latest
- name: Build docker container

View File

@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
node-version: [11.10.x, 12.x]
node-version: [11.10.x, 12.x, 13.x, 14.x]
services:
postgres:
@ -28,7 +28,7 @@ jobs:
- 6379:6379
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:

View File

@ -1,4 +1,7 @@
{
"extension": ["ts","js","cjs","mjs"],
"require": "ts-node/register",
"slow": 1000,
"timeout": 30000,
"slow": 1000
"exit": true
}

View File

@ -1,6 +1,57 @@
ChangeLog
=========
12.37.0 (2020/5/10)
-------------------
### ✨Improvements
* Node.js v14をサポート [#6294](https://github.com/syuilo/misskey/pull/6294)
* 依存パッケージを最新に [#6297](https://github.com/syuilo/misskey/pull/6297)
* nginxサンプルのSSL/TLS設定の変更 [#6298](https://github.com/syuilo/misskey/pull/6298)
* DockerイメージでPostgreSQL v12・Node.js v14を使用するように [2bb0a61](https://github.com/syuilo/misskey/commit/2bb0a61a891445df4d78bfc0d4a64551ac9b7a39), [808c680](https://github.com/syuilo/misskey/commit/808c6801843b9e10fa575f5f7fbd3a4a3a80252a)
* hCaptchaサポート
* サイドバーカスタマイズ機能
* LD-Signatureの検証に対応 [#6300](https://github.com/syuilo/misskey/pull/6300)
* リモートからの通報の受信に対応 [#6331](https://github.com/syuilo/misskey/pull/6331)
* Misskey Rooms復活
* ノートへの返信を再帰的に表示するように(threaded replies)
* pub-relay [#6341](https://github.com/syuilo/misskey/pull/6341)
### 🐛Fixes
* CatだとMFMでURLプレビューを隠しても表示される問題を修正 [7d7c206](https://github.com/syuilo/misskey/commit/7d7c206f245387d32283fbb4e82bd9d526427936)
* アップロードプログレスバーが動かないのを修正 [#6307](https://github.com/syuilo/misskey/pull/6307)
* WebAuthnでログインできないのを修正 [#6327](https://github.com/syuilo/misskey/pull/6327)
* あなた宛て/メッセージで個々のノートが展開されるのを修正
* アンケートへの投票通知が正しく表示されない問題を修正
12.36.1 (2020/4/23)
-------------------
### 🐛Fixes
* Pagesのifブロックが機能しない [2ee5835](https://github.com/syuilo/misskey/commit/2ee583518608333312caa4c4303a74835b087069)
* AiScriptのアップデート
12.36.0 (2020/4/22)
-------------------
### ✨Improvements
* ドライブの画面を広く [1f99816](https://github.com/syuilo/misskey/commit/1f998168e2f6ff94d0119fe5f95ad03b47d19d60)
* ドライブのデフォルトのアップロード先フォルダを設定できるように [1f99816](https://github.com/syuilo/misskey/commit/1f998168e2f6ff94d0119fe5f95ad03b47d19d60)
* AiScriptのアップデート
* Webpackを5に [e72011f](https://github.com/syuilo/misskey/commit/e72011f1dafc11ea70dd60b653d25b0e48832cce)
### 🐛Fixes
* WebUIでアンテナを保存するとexcludeKeywordsに空文字列が入るせいで動かない [5a9530c](https://github.com/syuilo/misskey/commit/5a9530ccd4249cf37d50769015adbffba34014ab)
* 管理画面のカスタム絵文字でカテゴリが空だと更新できない [0df3e22](https://github.com/syuilo/misskey/commit/0df3e22e519d854c88ae8f5eabdc8eee4b18aeed)
12.35.2 (2020/4/19)
-------------------
### ✨Improvements
* Pagesの環境変数を調整 [0a1b83c](https://github.com/syuilo/misskey/commit/0a1b83c70fc546d7514176a220e1381ecc0b13ec)
* Pagesのチャートを調整 [f704e7a](https://github.com/syuilo/misskey/commit/f704e7a6025cb3f8ec7e474df70de1b171722bde)
* AiScriptのアップデート
* デザインの調整
### 🐛Fixes
* 画像のみのノートができない問題を修正 [8cefcaa](https://github.com/syuilo/misskey/commit/8cefcaa55f86e03f3965c5cb419787778681c269)
12.35.1 (2020/4/19)
-------------------
### 🐛Fixes

View File

@ -13,3 +13,7 @@ https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md
Emoji keywords for Unicode 11 and below by Mu-An Chiou
License: MIT
https://github.com/muan/emojilib/blob/master/LICENSE
RsaSignature2017 implementation by Transmute Industries Inc
License: MIT
https://github.com/transmute-industries/RsaSignature2017/blob/master/LICENSE

View File

@ -1,4 +1,4 @@
FROM node:12.11.1-alpine AS base
FROM node:14.2.0-alpine AS base
ENV NODE_ENV=production
@ -22,7 +22,7 @@ RUN apk add --no-cache \
python \
zlib-dev
COPY package.json ./
COPY package.json yarn.lock ./
RUN yarn install
COPY . ./
RUN yarn build

View File

@ -115,7 +115,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/605366/c9dc408fdcbf412fb183ca5b06235f8d/1.jpeg?token-time=2145916800&token-hash=oaqsjLqOFjWN5I9hm2epOaTXaEtKwQUy5OW-EpAz6-g%3D" alt="Jon Leibowitz" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19045173/cb91c0f345c24d4ebfd05f19906d5e26/1.png?token-time=2145916800&token-hash=o_zKBytJs_AxHwSYw_5R8eD0eSJe3RoTR3kR3Q0syN0%3D" alt="kiritan " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24430516/b1964ac5b9f746d2a12ff53dbc9aa40a/1.jpg?token-time=2145916800&token-hash=bmEiMGYpp3bS7hCCbymjGGsHBZM3AXuBOFO3Kro37PU%3D" alt="Eduardo Quiros" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/14215107/1cbe1912c26143919fa0faca16f12ce1/3.png?token-time=2145916800&token-hash=Zq1TCK2tdY7xudEm_aV70bc_wxmol6pNj3ZWbpFUNbI%3D" alt="Nesakko " width="100"></td>
</tr><tr>
<td><a href="https://www.patreon.com/user?u=20832595">Roujo </a></td>
<td><a href="https://www.patreon.com/user?u=27956229">Oliver Maximilian Seidel</a></td>
@ -123,7 +122,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/jonleibowitz">Jon Leibowitz</a></td>
<td><a href="https://www.patreon.com/user?u=19045173">kiritan </a></td>
<td><a href="https://www.patreon.com/user?u=24430516">Eduardo Quiros</a></td>
<td><a href="https://www.patreon.com/Nesakko">Nesakko </a></td>
</tr></table>
<table><tr>
<td><img src="https://c8.patreon.com/2/200/776209" alt="Denshi " width="100"></td>
@ -152,7 +150,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/28779508/3cd4cb7f017f4ee0864341e3464d42f9/1.png?token-time=2145916800&token-hash=eGQtR15be44kgvh8fw2Jx8Db4Bv15YBp2ldxh0EKRxA%3D" alt="S Y" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/16542964" alt="Takumi Sugita" width="100"></td>
<td><img src="https://c8.patreon.com/2/200/17866454" alt="sikyosyounin " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3.png?token-time=2145916800&token-hash=KjfQL8nf3AIf6WqzLshBYAyX44piAqOAZiYXgZS_H6A%3D" alt="YUKIMOCHI " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3.png?token-time=2145916800&token-hash=KjfQL8nf3AIf6WqzLshBYAyX44piAqOAZiYXgZS_H6A%3D" alt="YUKIMOCHI" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26340354/08834cf767b3449e93098ef73a434e2f/2.png?token-time=2145916800&token-hash=nyM8DnKRL8hR47HQ619mUzsqVRpkWZjgtgBU9RY15Uc%3D" alt="totokoro " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19356899/496b4681d33b4520bd7688e0fd19c04d/2.jpeg?token-time=2145916800&token-hash=_sTj3dUBOhn9qwiJ7F19Qd-yWWfUqJC_0jG1h0agEqQ%3D" alt="sheeta.s " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5827393/59893c191dda408f9cabd0f20a3a5627/1.jpeg?token-time=2145916800&token-hash=i9N05vOph-eP1LTLb9_npATjYOpntL0ZsHNaZFSsPmE%3D" alt="motcha " width="100"></td>
@ -162,7 +160,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/user?u=28779508">S Y</a></td>
<td><a href="https://www.patreon.com/user?u=16542964">Takumi Sugita</a></td>
<td><a href="https://www.patreon.com/user?u=17866454">sikyosyounin </a></td>
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI </a></td>
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
<td><a href="https://www.patreon.com/user?u=26340354">totokoro </a></td>
<td><a href="https://www.patreon.com/user?u=19356899">sheeta.s </a></td>
<td><a href="https://www.patreon.com/user?u=5827393">motcha </a></td>
@ -176,6 +174,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9109588/e3cffc48d20a4e43afe04123e696781d/3.png?token-time=2145916800&token-hash=T_VIUA0IFIbleZv4pIjiszZGnQonwn34sLCYFIhakBo%3D" alt="nafuchoco " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/16900731/619ab87cc08448439222631ebb26802f/1.gif?token-time=2145916800&token-hash=o27K7M02s1z-LkDUEO5Oa7cu-GviRXeOXxryi4o_6VU%3D" alt="Atsuko Tominaga" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4389829/9f709180ac714651a70f74a82f3ffdb9/3.png?token-time=2145916800&token-hash=FTm3WVom4dJ9NwWMU4OpCL_8Yc13WiwEbKrDPyTZTPs%3D" alt="natalie " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26144593/9514b10a5c1b42a3af58621aee213d1d/1.png?token-time=2145916800&token-hash=v1PYRsjzu4c_mndN4Hvi_dlispZJsuGRCQeNS82pUSM%3D" alt="EBISUME" width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5923936/2a743cbfbff946c2af3f09026047c0da/2.png?token-time=2145916800&token-hash=h6yphW1qnM0n_NOWaf8qtszMRLXEwIxfk5beu4RxdT0%3D" alt="noellabo " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/2384390/5681180e1efb46a8b28e0e8d4c8b9037/1.jpg?token-time=2145916800&token-hash=SJcMy-Q1BcS940-LFUVOMfR7-5SgrzsEQGhYb3yowFk%3D" alt="CG " width="100"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18072312/98e894d960314fa7bc236a72a39488fe/1.jpg?token-time=2145916800&token-hash=7bkMqTwHPRsJPGAq42PYdDXDZBVGLqdgr1ZmBxX8GFQ%3D" alt="Hekovic " width="100"></td>
@ -187,6 +186,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/nijimiss">nafuchoco </a></td>
<td><a href="https://www.patreon.com/user?u=16900731">Atsuko Tominaga</a></td>
<td><a href="https://www.patreon.com/user?u=4389829">natalie </a></td>
<td><a href="https://www.patreon.com/user?u=26144593">EBISUME</a></td>
<td><a href="https://www.patreon.com/noellabo">noellabo </a></td>
<td><a href="https://www.patreon.com/Corset">CG </a></td>
<td><a href="https://www.patreon.com/hekovic">Hekovic </a></td>
@ -204,7 +204,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md).
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
</tr></table>
**Last updated:** Fri, 03 Apr 2020 11:52:08 UTC
**Last updated:** Thu, 07 May 2020 18:00:08 UTC
<!-- PATREON_END -->
[backer-url]: #backers

View File

@ -24,7 +24,7 @@ services:
db:
restart: always
image: postgres:11.2-alpine
image: postgres:12.2-alpine
networks:
- internal_network
env_file:

View File

@ -39,8 +39,8 @@ server {
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# SSL protocol settings
ssl_protocols TLSv1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
ssl_prefer_server_ciphers on;
# Change to your upload limit
@ -53,6 +53,7 @@ server {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Accept-Encoding "";
proxy_http_version 1.1;
proxy_redirect off;

View File

@ -5,7 +5,6 @@
import * as fs from 'fs';
import * as gulp from 'gulp';
import * as ts from 'gulp-typescript';
import * as mocha from 'gulp-mocha';
import * as rimraf from 'rimraf';
import * as rename from 'gulp-rename';
const cleanCSS = require('gulp-clean-css');
@ -39,7 +38,11 @@ gulp.task('build:copy:locales', cb => {
cb();
});
gulp.task('build:copy', gulp.parallel('build:copy:views', 'build:copy:locales', () =>
gulp.task('build:copy:fonts', () =>
gulp.src('./node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/client/assets/fonts/'))
);
gulp.task('build:copy', gulp.parallel('build:copy:views', 'build:copy:locales', 'build:copy:fonts', () =>
gulp.src([
'./src/emojilist.json',
'./src/server/web/views/**/*',
@ -93,14 +96,4 @@ gulp.task('build', gulp.parallel(
'build:client',
));
gulp.task('mocha', () =>
gulp.src('./test/**/*.ts')
.pipe(mocha({
exit: true,
require: 'ts-node/register'
} as any))
);
gulp.task('test', gulp.task('mocha'));
gulp.task('default', gulp.task('build'));

View File

@ -27,7 +27,7 @@ uploading: "Upload läuft"
save: "Speichern"
users: "Benutzer"
addUser: "Benutzer hinzufügen"
favorite: "Favorit"
favorite: "Zu Favoriten hinzufügen"
favorites: "Favoriten"
unfavorite: "Aus Favoriten entfernen"
pin: "Anheften"
@ -37,7 +37,7 @@ copyLink: "Link kopieren"
delete: "Löschen"
deleteAndEdit: "Löschen und Bearbeiten"
deleteAndEditConfirm: "Möchtest du diese Notiz wirklich löschen und bearbeiten? Alle Reaktionen, Renotes und Antworten dieser Notiz werden verloren gehen."
addToList: "Zur Liste hinzufügen"
addToList: "Zu Liste hinzufügen"
sendMessage: "Nachricht senden"
copyUsername: "Benutzernamen kopieren"
reply: "Antworten"
@ -51,7 +51,7 @@ importAndExport: "Importieren und Exportieren"
import: "Importieren"
export: "Exportieren"
files: "Dateien"
download: "Download"
download: "Herunterladen"
driveFileDeleteConfirm: "Möchtest du die Datei \"{name}\" löschen? Die zugehörige Notiz wird ebenso verschwinden."
unfollowConfirm: "Möchtest du {name} nicht mehr folgen?"
exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch nehmen. Sobald der Export abgeschlossen ist, wird er deiner Drive hinzugefügt."
@ -60,8 +60,8 @@ lists: "Listen"
noLists: "Du hast keine Listen"
note: "Notiz"
notes: "Notizen"
following: "Folgen"
followers: "Folgende"
following: "Folgt"
followers: "Gefolgt von"
followsYou: "Folgt dir"
createList: "Liste erstellen"
manageLists: "Listen verwalten"
@ -82,13 +82,13 @@ unrenote: "Renote zurücknehmen"
quote: "Zitieren"
pinnedNote: "Angepinnte Notiz"
you: "Du"
clickToShow: "Klicke um diesen Inhalt anzusehen"
clickToShow: "Klicke, um diesen Inhalt anzusehen"
sensitive: "Dieser Inhalt ist NSFW"
add: "Hinzufügen"
reaction: "Reaktionen"
reactionSettingDescription: "Gib deine Lieblingsreaktionen ein, um sie der Reaktionsauswahl hinzuzufügen."
rememberNoteVisibility: "Notizsichtbarkeit merken"
attachCancel: "Anhängen abbrechen"
attachCancel: "Anhang entfernen"
markAsSensitive: "Als sensitiv markieren"
unmarkAsSensitive: "Markierung als sensitiv zurücknehmen"
enterFileName: "Dateinamen eingeben"
@ -107,6 +107,7 @@ customEmojis: "Benutzerdefinierte Emojis"
emojiName: "Emojiname"
emojiUrl: "Emoji-URL"
addEmoji: "Emoji hinzufügen"
settingGuide: "Empfohlene Einstellung"
cacheRemoteFiles: "Dateien von anderen Instanzen im Cache speichern"
cacheRemoteFilesDescription: "Wenn diese Einstellung deaktiviert ist, werden Dateien anderer Instanzen direkt von dort geladen. Hierdurch wird Speicherplatz gespart, aber mehr Bandbreite verbraucht, da keine Vorschaubilder generiert werden."
flagAsBot: "Als Bot markieren"
@ -192,7 +193,7 @@ newPassword: "Neues Passwort"
newPasswordRetype: "Neues Passwort (wiederholen)"
attachFile: "Datei anhängen"
more: "Mehr!"
featured: "Hervorgehoben"
featured: "Beliebt"
usernameOrUserId: "Benutzername oder Benutzer-ID"
noSuchUser: "Benutzer nicht gefunden"
lookup: "Abfragen"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Dateiname"
selectFile: "Datei auswählen"
selectFiles: "Dateien auswählen"
selectFolder: "Wähle einen Ordner"
selectFolders: "Wähle Ordner"
renameFile: "Datei umbenennen"
folderName: "Ordnername"
createFolder: "Ordner erstellen"
@ -297,10 +300,15 @@ bannerUrl: "Banner-URL"
basicInfo: "Basisdaten"
pinnedUsers: "Angepinnte Benutzer"
pinnedUsersDescription: "Gib einen Benutzernamen pro Zeile ein. Diese werden im \"Erkunden\" Tab angezeigt."
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptcha aktivieren"
hcaptchaSiteKey: "Site key"
hcaptchaSecretKey: "Secret key"
recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHA aktivieren"
recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Das Verwenden von mehreren Captcha-Systemen kann zu Störungen führen. Möchtest du die anderen Systeme deaktivieren? Du kannst mehrere aktiviert lassen, in dem du auf Abbrechen drückst."
antennas: "Antennen"
manageAntennas: "Antennen verwalten"
name: "Name"
@ -317,7 +325,7 @@ caseSensitive: "Groß-/Kleinschreibung unterscheiden"
withReplies: "Antworten beinhalten"
connectedTo: "Mit folgenden Benutzerkonten verknüpft"
notesAndReplies: "Notizen und Antworten"
withFiles: "Dateien beinhalten"
withFiles: "Notizen mit Dateien"
silence: "Instanzweit stummschalten"
silenceConfirm: "Möchtest du diesen Benutzer wirklich instanzweit stummschalten?"
unsilence: "Instanzweite Stummschaltung aufheben"
@ -490,6 +498,14 @@ removeAllFollowing: "Allen gefolgten Benutzern entfolgen"
removeAllFollowingDescription: "Allen Benutzerkonten von {host} entfolgen. Bitte führe dies durch, falls diese Instanz nicht mehr existiert."
userSuspended: "Dieser Benutzer wurde gesperrt."
userSilenced: "Dieser Benutzer wurde instanzweit stummgeschaltet."
sidebar: "Seitenleiste"
divider: "Trenner"
addItem: "Element hinzufügen"
rooms: "Raum"
relays: "Relays"
addRelay: "Relay hinzufügen"
inboxUrl: "inbox-URL"
addedRelays: "Hinzugefügte Relays"
_theme:
explore: "Themen erforschen"
install: "Thema installieren"
@ -517,10 +533,10 @@ _ago:
monthsAgo: "vor {n} Monat(en)"
yearsAgo: "vor {n} Jahr(en)"
_time:
second: "Sekunde"
minute: "Minute"
hour: "Stunde"
day: "t"
second: "Sekunde(n)"
minute: "Minute(n)"
hour: "Stunde(n)"
day: "Tag(en)"
_tutorial:
title: "Wie du Misskey verwendest"
step1_1: "Willkommen!"
@ -627,7 +643,7 @@ _poll:
at: "Beenden am..."
after: "Beenden nach..."
deadlineDate: "Abstimmungsende"
deadlineTime: "Stunde"
deadlineTime: "Zeit"
duration: "Laufzeit"
votesCount: "{n} Stimmen"
totalVotes: "Insgesamt {n} Stimmen"
@ -681,7 +697,7 @@ _charts:
activeUsers: "Aktive Benutzer"
notesIncDec: "Unterschied in der Anzahl von Notizen"
localNotesIncDec: "Unterschied in der Anzahl von lokalen Notizen"
remoteNotesIncDec: "Differenz in Anzahl der Notizen von anderen Instanzen"
remoteNotesIncDec: "Unterschied in Anzahl der Notizen von anderen Instanzen"
notesTotal: "Anzahl aller Notizen"
filesIncDec: "Unterschied in der Anzahl von Dateien"
filesTotal: "Anzahl aller Dateien"
@ -704,6 +720,66 @@ _timelines:
local: "Lokal"
social: "Sozial"
global: "Global"
_rooms:
roomOf: "{user}'s Raum"
addFurniture: "Möbel hinzufügen"
translate: "Bewegen"
rotate: "Drehen"
exit: "Zurück"
remove: "Entfernen"
clear: "Aufräumen"
clearConfirm: "Möchtest du wirklich alle Möbel entfernen?"
leaveConfirm: "Es gibt ungespeicherte Änderungen. Möchtest du wirklich gehen?"
chooseImage: "Bild auswählen"
roomType: "Raumtyp"
carpetColor: "Teppichfarbe"
_roomType:
default: "Standard"
washitsu: "Japanischer Stil"
_furnitures:
milk: "Milchkarton"
bed: "Bett"
low-table: "Niedrigtisch"
desk: "Schreibtisch"
chair: "Stuhl"
chair2: "Stuhl 2"
fan: "Ventilator"
pc: "Computer"
plant: "Deko-Pflanze"
plant2: "Deko-Pflanze 2"
eraser: "Radiergummi"
pencil: "Bleistift"
pudding: "Pudding"
cardboard-box: "Pappkarton"
cardboard-box2: "Pappkarton 2"
cardboard-box3: "Pappkarton 3"
book: "Buch"
book2: "Buch 2"
piano: "Piano"
facial-tissue: "Taschentücher"
server: "Server"
moon: "Mond"
corkboard: "Pinnwand"
mousepad: "Mauspad"
monitor: "Beobachten"
keyboard: "Tastatur"
carpet-stripe: "Gestreifter Teppich"
mat: "Matte"
color-box: "Farbige Box"
wall-clock: "Wanduhr"
photoframe: "Bilderrahmen"
cube: "Würfel"
tv: "Fernseher"
pinguin: "Pinguin"
rubik-cube: "Zauberwürfel"
poster-h: "Poster (Horizontal)"
poster-v: "Poster (Vertikal)"
sofa: "Sofa"
spiral: "Spiraltreppe"
bin: "Papierkorb"
cup-noodle: "Instantnudeln"
holo-display: "Holographischer Bildschirm"
energy-drink: "Energy Drink"
_pages:
newPage: "Seite erstellen"
editPage: "Diese Seite bearbeiten"
@ -985,3 +1061,7 @@ _pages:
enviromentVariables: "Umgebungsvariable"
pageVariables: "Seitenelement"
argVariables: "Eingabe-Slot"
_relayStatus:
requesting: "Ausstehend"
accepted: "Akzeptiert"
rejected: "Abgelehnt"

View File

@ -107,6 +107,7 @@ customEmojis: "Custom Emoji"
emojiName: "Emoji name"
emojiUrl: "Emoji URL"
addEmoji: "Add an emoji"
settingGuide: "Suggested Configuration"
cacheRemoteFiles: "Cache remote files"
cacheRemoteFilesDescription: "When this setting is disabled, remote files are loaded directly from the remote instance. Disabling this will decrease storage usage, but will increase traffic, because thumbnails will not be generated."
flagAsBot: "This account is a bot"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Filename"
selectFile: "Select a file"
selectFiles: "Select files"
selectFolder: "Select a folder"
selectFolders: "Select folders"
renameFile: "Rename file"
folderName: "Folder name"
createFolder: "Create a folder"
@ -297,10 +300,15 @@ bannerUrl: "Banner image URL"
basicInfo: "Basic info"
pinnedUsers: "Pinned user"
pinnedUsersDescription: "List one username per line. Users listed here will be pinned under \"Explore\" tab."
hcaptcha: "hCaptcha"
enableHcaptcha: "Enable hCaptcha"
hcaptchaSiteKey: "Site key"
hcaptchaSecretKey: "Secret key"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Enable reCAPTCHA"
recaptchaSiteKey: "Site key"
recaptchaSecretKey: "Secret key"
avoidMultiCaptchaConfirm: "Using multiple Captchas may cause interference. Would you like to disable the other Captcha? You can leave multiple Captchas enabled by press cancel."
antennas: "Antennas"
manageAntennas: "Manage Antennas"
name: "Name"
@ -490,6 +498,10 @@ removeAllFollowing: "Withhold All Followings"
removeAllFollowingDescription: "Unfollow all accounts from {host}. Please run this if the instance no longer exists."
userSuspended: "This user has been suspended."
userSilenced: "This user has been silenced."
sidebar: "Sidebar"
divider: "Divider"
addItem: "Add Item"
rooms: "Room"
_theme:
explore: "Explore Themes"
install: "Install theme"
@ -704,6 +716,66 @@ _timelines:
local: "Local"
social: "Social"
global: "Global"
_rooms:
roomOf: "{user}'s room"
addFurniture: "Place furniture"
translate: "Move"
rotate: "Rotate"
exit: "Back"
remove: "Remove"
clear: "Remove All"
clearConfirm: "Are you sure to remove all furnitures in your room?"
leaveConfirm: "There are unsaved changes. Do you really want to leave?"
chooseImage: "Select an image"
roomType: "Room type"
carpetColor: "Color of carpet"
_roomType:
default: "Default"
washitsu: "Japanese-style"
_furnitures:
milk: "Milk carton"
bed: "Bed"
low-table: "Low Table"
desk: "Desk"
chair: "Chair"
chair2: "Chair 2"
fan: "Fan"
pc: "Computer"
plant: "Houseplant"
plant2: "Houseplant 2"
eraser: "Eraser"
pencil: "Pencil"
pudding: "Pudding"
cardboard-box: "Cardboard Box"
cardboard-box2: "Cardboard Box 2"
cardboard-box3: "Cardboard Box 3"
book: "Book"
book2: "Book 2"
piano: "Piano"
facial-tissue: "Facial tissue"
server: "Servers"
moon: "Moon"
corkboard: "Cork board"
mousepad: "Mousepad"
monitor: "Monitor"
keyboard: "Keyboard"
carpet-stripe: "Carpet (stripe)"
mat: "Mat"
color-box: "Bookshelf"
wall-clock: "Wall clock"
photoframe: "Picture frame"
cube: "Cube"
tv: "TV"
pinguin: "Penguin"
rubik-cube: "Rubik's Cube"
poster-h: "Poster (Horizontal)"
poster-v: "Poster (Vertical)"
sofa: "Sofa"
spiral: "Spiral Staircase"
bin: "Waste bin"
cup-noodle: "Cup noodle"
holo-display: "Holographic display"
energy-drink: "Energy drink"
_pages:
newPage: "Create a page"
editPage: "Edit this page"

View File

@ -107,6 +107,7 @@ customEmojis: "Emojis personalizados"
emojiName: "Nombre del emoji"
emojiUrl: "URL de la imágen del emoji"
addEmoji: "Añadir emoji"
settingGuide: "Configuración sugerida"
cacheRemoteFiles: "Mantener en cache los archivos remotos"
cacheRemoteFilesDescription: "Si desactiva esta configuración, Los archivos remotos se cargarán desde el link directo sin usar la caché. Con eso se puede ahorrar almacenamiento del servidor, pero eso aumentará el tráfico al no crear miniaturas."
flagAsBot: "Esta cuenta es un bot"
@ -239,6 +240,8 @@ drive: "Drive"
fileName: "Nombre de archivo"
selectFile: "Elegir archivo"
selectFiles: "Elegir archivos"
selectFolder: "Seleccione una carpeta"
selectFolders: "Seleccione carpetas"
renameFile: "Renombrar archivo"
folderName: "Nombre de la carpeta"
createFolder: "Crear carpeta"
@ -297,10 +300,15 @@ bannerUrl: "URL de la imagen del banner"
basicInfo: "Información básica"
pinnedUsers: "Usuarios fijados"
pinnedUsersDescription: "Describir los usuarios que quiere fijar en la página \"Descubrir\" separados por una linea nueva"
hcaptcha: "hCaptcha"
enableHcaptcha: "Habilitar hCaptcha"
hcaptchaSiteKey: "Clave del sitio"
hcaptchaSecretKey: "Clave secreta"
recaptcha: "reCAPTCHA"
enableRecaptcha: "activar reCAPTCHA"
recaptchaSiteKey: "Clave del sitio"
recaptchaSecretKey: "Clave secreta"
avoidMultiCaptchaConfirm: "El uso de múltiples Captchas puede causar interferencia. ¿Desea desactivar el otro Captcha? Puede dejar múltiples Captchas habilitadas presionando cancelar."
antennas: "Antenas"
manageAntennas: "Administrar antenas"
name: "Nombre"
@ -490,6 +498,10 @@ removeAllFollowing: "Retener todos los siguientes"
removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}. Ejecutar en caso de que esta instancia haya dejado de existir"
userSuspended: "Este usuario ha sido suspendido."
userSilenced: "Este usuario ha sido silenciado."
sidebar: "Barra lateral"
divider: "Divisor"
addItem: "Agregar elemento"
rooms: "Cuartos"
_theme:
explore: "Explorar temas"
install: "Instalar tema"
@ -704,6 +716,66 @@ _timelines:
local: "Local"
social: "Social"
global: "Global"
_rooms:
roomOf: "Cuarto de {user}"
addFurniture: "Colocar muebles"
translate: "Mover"
rotate: "Rotar"
exit: "Deseleccionar"
remove: "Quitar"
clear: "Quitar todo"
clearConfirm: "¿Quiere quitar todos los muebles?"
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea irse?"
chooseImage: "Escoger una imagen"
roomType: "Estilo de cuarto"
carpetColor: "Color de piso"
_roomType:
default: "Predeterminado"
washitsu: "Estilo japonés"
_furnitures:
milk: "Cartón de leche"
bed: "Cama"
low-table: "Mesa chica"
desk: "Escritorio"
chair: "Silla"
chair2: "Silla 2"
fan: "Ventilador"
pc: "Computadora"
plant: "Planta decorativa"
plant2: "Planta decorativa 2"
eraser: "Goma de borrar"
pencil: "lápiz"
pudding: "Pudín"
cardboard-box: "Caja de cartón"
cardboard-box2: "Caja de cartón 2"
cardboard-box3: "Caja de cartón 3"
book: "Libro"
book2: "Libro 2"
piano: "Piano"
facial-tissue: "Caja de pañuelos"
server: "Servidor"
moon: "Luna"
corkboard: "Pizarra de corcho"
mousepad: "Alfombrilla de ratón"
monitor: "Monitor"
keyboard: "Teclado"
carpet-stripe: "Alfombra (a rayas)"
mat: "Tapete"
color-box: "Caja de colores"
wall-clock: "Reloj de pared"
photoframe: "Fotograma"
cube: "Cubo"
tv: "Televisor"
pinguin: "Pinguino"
rubik-cube: "Cubo rubik"
poster-h: "Poster (horizontal)"
poster-v: "Poster (vertical)"
sofa: "Sillón"
spiral: "Escalera en espiral"
bin: "Papelera"
cup-noodle: "Taza de sopa de fideos"
holo-display: "Poster holográfico"
energy-drink: "Bebida energética"
_pages:
newPage: "Crear página"
editPage: "Editar página"

View File

@ -1,13 +1,13 @@
---
_lang_: "Français"
introMisskey: "Bienvenue! Misskey est un service de microblogage décentralisé open source.\nÉcrivez des «notes» pour partager ce qui vous arrive maintenant ou pour parler de vous à tout le monde 📡\nAvec la fonction «réactions», vous pouvez également ajouter une réaction rapide aux notes de chacun 👍\nExplorez un nouveau monde 🚀"
introMisskey: "Bienvenue ! Misskey est un service de microblogage décentralisé et open-source.\nÉcrivez des « notes » pour partager ce qui se passe, ou pour parler de vous à tout le monde 📡\nAvec la fonction « réactions », vous pouvez également ajouter une réaction rapide aux notes de chacun 👍\nExplorez un nouveau monde 🚀"
monthAndDay: "{day}/{month}"
search: "Rechercher"
notifications: "Notifications"
username: "Nom d'utilisateur·rice"
password: "Mot de passe"
fetchingAsApObject: "Récupération depuis le diverse"
ok: "D'accord"
fetchingAsApObject: "Récupération depuis le Fediverse"
ok: "Soumettre"
gotIt: "J'ai compris !"
cancel: "Annuler"
enterUsername: "Entrer un nom d'utilisateur·rice"
@ -18,11 +18,11 @@ instance: "Instance"
settings: "Paramètres"
profile: "Profil"
timeline: "Fil d'actualité"
noAccountDescription: "L'utilisateur·rice n'a pas renseigné de présentation sur son profil"
noAccountDescription: "L'utilisateur·rice n'a pas encore renseigné de présentation sur son profil"
login: "Se connecter"
loggingIn: "Connexion en cours"
logout: "Se déconnecter"
signup: "S'enregistrer"
signup: "S'inscrire"
uploading: "Envoi en cours"
save: "Enregistrer"
users: "Utilisateur·rice·s"
@ -36,7 +36,7 @@ copyContent: "Copier le contenu"
copyLink: "Copier le lien"
delete: "Supprimer"
deleteAndEdit: "Supprimer et réécrire"
deleteAndEditConfirm: "Êtes-vous sûr de vouloir effacer cette note et la modifier ? Vous perdrez toutes les réactions, renotes et réponses."
deleteAndEditConfirm: "Êtes-vous sûr·e de vouloir effacer cette note et la modifier ? Vous perdrez toutes les réactions, renotes et réponses."
addToList: "Ajouter à une liste"
sendMessage: "Envoyer un message"
copyUsername: "Copier le nom d'utilisateur"
@ -44,13 +44,13 @@ reply: "Répondre"
loadMore: "Voir plus"
youGotNewFollower: "Vous suit"
receiveFollowRequest: "Demande de suivi reçue"
followRequestAccepted: "L'abonne la demande acceptée"
followRequestAccepted: "La demande d'abonnement a été acceptée"
mentions: "Mentions"
directNotes: "Messages directs"
importAndExport: "Import et export"
import: "Importer"
export: "Exporter"
files: "Fichier·s"
files: "Fichiers"
download: "Télécharger"
driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes avec ce fichier joint seront aussi supprimées."
unfollowConfirm: "Se désabonner de {name} ?"
@ -68,27 +68,27 @@ manageLists: "Gérer les listes"
error: "Une erreur est survenue"
retry: "Réessayer"
enterListName: "Nom de la liste"
privacy: "Vie privée"
makeFollowManuallyApprove: "Demandes dsuivi requiert l'approbation"
privacy: "Confidentialité"
makeFollowManuallyApprove: "Approuver manuellement les demandes de suivi"
defaultNoteVisibility: "Visibilité par défaut"
follow: "Suivre"
followRequest: "Demande dsuivre"
follow: "S'abonner"
followRequest: "Demande de suivi"
followRequests: "Demandes dabonnement"
unfollow: "Se désabonner"
followRequestPending: "En attente dapprobation"
enterEmoji: "ou entrez un émoji"
renote: "Renote"
unrenote: "Annuler Renote"
quote: "Citation"
quote: "Citer"
pinnedNote: "Note épinglée"
you: "Vous"
clickToShow: "Cliquer pour afficher"
sensitive: "Contenu sensible"
add: "Ajouter"
reaction: "Réactions"
reactionSettingDescription: "Attribuez vos réactions préférées qui souhaitent épingler le sélecteur de réaction."
reactionSettingDescription: "Choisissez vos réactions préférées que vous souhaitez épingler dans le sélecteur de réaction."
rememberNoteVisibility: "Se souvenir de la visibilité des notes"
attachCancel: "Enlever le fichier attaché"
attachCancel: "Supprimer le fichier attaché"
markAsSensitive: "Marquer comme sensible"
unmarkAsSensitive: "Enlever le marquage comme sensible"
enterFileName: "Entrer le nom du fichier"
@ -98,32 +98,33 @@ block: "Bloquer"
unblock: "Débloquer"
suspend: "Suspendre"
unsuspend: "Annuler la suspension"
blockConfirm: "Désirez-vous bloquer ce compte ?"
unblockConfirm: "Désirez-vous débloquer ce compte ?"
suspendConfirm: "Désirez-vous suspendre ce compte ?"
unsuspendConfirm: "Désirez-vous annuler la suspension de ce compte ?"
blockConfirm: "Êtes-vous sûr·e de vouloir bloquer ce compte ?"
unblockConfirm: "Êtes-vous sûr·e de vouloir débloquer ce compte ?"
suspendConfirm: "Êtes-vous sûr·e de vouloir suspendre ce compte ?"
unsuspendConfirm: "Êtes-vous sûr·e de vouloir annuler la suspension de ce compte ?"
selectList: "Sélectionner une liste"
customEmojis: "Émojis personnalisés"
emojiName: "Nom de lémoji"
emojiUrl: "URL de lémoji"
addEmoji: "Ajouter un émoji"
cacheRemoteFiles: "Mettre en cache des fichiers distants"
cacheRemoteFilesDescription: "Quand ce paramètre est désactivé, les fichiers distants sont chargés directement de l'instance distante. Désactiver cela diminuera l'utilisation du stockage mais augmentera le trafic parce les miniatures ne seront pas générées."
settingGuide: "Configuration suggérée"
cacheRemoteFiles: "Mise en cache des fichiers distants"
cacheRemoteFilesDescription: "Quand ce paramètre est désactivé, les fichiers distants sont chargés directement depuis l'instance distante. Désactiver cela diminuera l'utilisation du stockage, mais augmentera le trafic réseau, puisque les miniatures ne seront pas générées."
flagAsBot: "Ce compte est un robot"
flagAsCat: "Ce compte est un chat"
autoAcceptFollowed: "Approuver automatiquement les abonnements des utilisateurs abonné·e·s"
autoAcceptFollowed: "Approuver automatiquement les demandes de suivi venant d'utilisateur·rice·s que vous suivez"
addAcount: "Ajouter un compte"
loginFailed: "Échec de la connexion"
showOnRemote: "Voir sur l'instance distante"
general: "Général"
wallpaper: "Arrière plan"
wallpaper: "Fond d'écran"
setWallpaper: "Définir le fond d'écran"
removeWallpaper: "Supprimer l'arrière plan"
removeWallpaper: "Supprimer le fond d'écran"
searchWith: "Recherche : {q}"
youHaveNoLists: "Vous n'avez aucune liste"
followConfirm: "Désirez-vous suivre {name} ?"
followConfirm: "Êtes-vous sûr·e de vouloir suivre {name} ?"
proxyAccount: "Compte proxy"
proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant pour les utilisateurs d'autres instances.\nExemple : quand un·e utilisateur·rice distant·e est ajouté·e à une liste, ses notes ne serait pas visibles sur l'instance si personne ne le·la abonné. Le compte proxy va donc le·la abonne pour que ses notes soient acheminées."
proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient acheminées."
host: "Hôte"
selectUser: "Sélectionner un·e utilisateur·rice"
recipient: "Correspondant·e"
@ -133,13 +134,13 @@ instances: "Instance"
registeredAt: "Premier contact le"
latestRequestSentAt: "Dernière requête envoyée"
latestRequestReceivedAt: "Dernière requête reçue"
latestStatus: "Dernière statut"
latestStatus: "Dernier statut"
storageUsage: "Stockage utilisé"
charts: "Graphiques"
perHour: "par heure"
perDay: "par jour"
stopActivityDelivery: "Arrêter l'envoi d'activités"
blockThisInstance: "Bloquer cette instnce"
blockThisInstance: "Bloquer cette instance"
operations: "Opérations"
software: "Logiciel"
version: "Version"
@ -158,43 +159,43 @@ clearQueueConfirmText: "Les notes non distribuées ne seront pas livrées. Norma
clearCachedFiles: "Vider le cache"
clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider le cache de fichiers distants ?"
blockedInstances: "Instances bloquées"
blockedInstancesDescription: "Listez les instance que vous désirez bloquer, une par ligne. Ces instances bloquées ne seront pas capable d'interagir avec cette instance."
muteAndBlock: "Masqués / Bloqués"
blockedInstancesDescription: "Listez les instances que vous désirez bloquer, une par ligne. Ces instances ne seront plus en capacité d'interagir avec votre instance."
muteAndBlock: "Masqué·e·s / Bloqué·e·s"
mutedUsers: "Utilisateur·rice·s en sourdine"
blockedUsers: "Utilisateur·rice·s bloqué·e·s"
noUsers: "Il n'y a aucun utilisateur·rice"
editProfile: "Modifier votre profil"
noteDeleteConfirm: "Confirmez-vous la suppression de cette note ?"
pinLimitExceeded: "Je ne peux plus épingler"
intro: "L'installation de Misskey est terminée! Créons le compte administrateur."
noteDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer cette note ?"
pinLimitExceeded: "Vous ne pouvez plus épingler d'autres notes."
intro: "L'installation de Misskey est terminée ! Créons le compte administrateur."
done: "Terminé"
processing: "Traitement en cours"
preview: "Prévisualisation"
default: "Par défaut"
noCustomEmojis: "Il a pas démoji"
customEmojisOfRemote: "Émojis l'instance distante"
noCustomEmojis: "Il n'y a pas démoji"
customEmojisOfRemote: "Émojis d'autres instances"
noJobs: "Il n'y a aucune tâche planifiée"
federating: "En cours de fédération"
blocked: "Bloqué"
suspended: "Suspendu"
blocked: "Bloqué·e"
suspended: "Suspendu·e"
all: "Tous"
subscribing: "Abonné"
publishing: "Publié"
notResponding: "Ne répond pas"
instanceFollowing: "Abonnements une instance"
instanceFollowers: "Abonné·e·s de l'instance"
instanceUsers: "Utilisateur·e·s de l'instance"
instanceUsers: "Utilisateur·rice·s de l'instance"
changePassword: "Modifier votre mot de passe"
security: "Sécurité"
retypedNotMatch: "Les saisies ne correspondent pas."
currentPassword: "Mot de passe actuel"
newPassword: "Nouveau mot de passe"
newPasswordRetype: "Nouveau mot de passe (répéter)"
newPasswordRetype: "Répéter le nouveau mot de passe"
attachFile: "Joindre un fichier"
more: "Plus !"
featured: "Tendances"
usernameOrUserId: "Nom d'utilisateur ou ID utilisateur"
noSuchUser: "Utilisateur non trouvé"
noSuchUser: "Utilisateur·rice non trouvé"
lookup: "Recherche"
announcements: "Annonces"
imageUrl: "URL de limage"
@ -203,9 +204,9 @@ removed: "Supprimé"
removeAreYouSure: "Supprimer «{x}» ?"
saved: "Enregistré"
messaging: "Discuter"
upload: "Téléchargez"
upload: "Téléverser"
fromDrive: "Depuis le Drive"
fromUrl: "De l'URL"
fromUrl: "Depuis une URL"
uploadFromUrl: "Téléverser via une URL"
uploadFromUrlDescription: "URL du fichier que vous souhaitez téléverser"
uploadFromUrlRequested: "Téléversement demandé"
@ -213,32 +214,34 @@ uploadFromUrlMayTakeTime: "Le téléversement de votre fichier peut prendre un c
explore: "Découvrir"
games: "Jeux de Misskey"
messageRead: "Lus"
noMoreHistory: "Plus d'histoire passée"
noMoreHistory: "Il n'y a plus d'historique"
startMessaging: "Commencer à discuter"
nUsersRead: "{n} personnes ont lu"
agreeTo: "D'accord {0}"
nUsersRead: "Lu par {n} personnes"
agreeTo: "J'accepte {0}"
tos: "Conditions d'utilisation"
start: "Commencer"
home: "Principal"
remoteUserCaution: "Les informations sont incomplètes en raison de l'utilisateur distant."
remoteUserCaution: "Les informations peuvent être incomplètes, parce que l'utilisateur·rice est d'une instance distante."
activity: "Activités"
images: "Images"
birthday: "Date de naissance"
yearsOld: "{age} ans"
registeredDate: "Date de création"
registeredDate: "Inscrit le"
location: "Localisation"
theme: "Thème"
themeForLightMode: "Thème à utiliser en Mode Lumière"
themeForLightMode: "Thème à utiliser en Mode Clair"
themeForDarkMode: "Thème à utiliser en Mode Sombre"
light: "Lumière"
light: "Clair"
dark: "Sombre"
lightThemes: "Thème lumineux"
lightThemes: "Thème clair"
darkThemes: "Thème sombre"
syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil"
drive: "Drive"
fileName: "Nom du fichier"
selectFile: "Choisir le fichier"
selectFiles: "Choisir le fichiers"
selectFiles: "Choisir les fichiers"
selectFolder: "Sélectionnez un dossier"
selectFolders: "Sélectionnez des dossiers"
renameFile: "Renommer le ficher"
folderName: "Nom du dossier"
createFolder: "Créer un dossier"
@ -251,16 +254,16 @@ unableToDelete: "Ne peut pas être supprimé"
inputNewFileName: "Entrez un nouveau nom de fichier"
inputNewFolderName: "Entrez un nouveau nom de dossier"
circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
hasChildFilesOrFolders: "Ce dossier n'est pas vide, il ne peut pas être supprimé"
hasChildFilesOrFolders: "Ce dossier n'est pas vide, il ne peut donc pas être supprimé"
copyUrl: "Copier lURL"
rename: "Renommer"
avatar: "Avatar"
banner: "Bannière"
nsfw: "Contenu sensible"
disconnectedFromServer: "Déconnecté du serveur"
disconnectedFromServer: "Déconnecté·e du serveur"
reload: "Rafraîchir"
doNothing: "Ignorer"
reloadConfirm: "Voulez-vous recharger?"
reloadConfirm: "Voulez-vous recharger le fil ?"
watch: "Surveiller"
unwatch: "Ne plus surveiller"
accept: "Autoriser"
@ -268,24 +271,24 @@ reject: "Refuser"
normal: "Normal"
instanceName: "Nom de linstance"
instanceDescription: "Description de linstance"
maintainerName: "Nom d'administrateur"
maintainerEmail: "Email de l'administrateur"
maintainerName: "Nom de l'administrateur·rice"
maintainerEmail: "Email de l'administrateur·rice"
tosUrl: "URL des conditions d'utilisation"
thisYear: "Cette année"
thisMonth: "Ce mois-ci"
today: "Aujourd'hui"
dayX: "{day} jour"
monthX: "{month} mois"
yearX: "{year} année"
dayX: "{day}"
monthX: "{month}"
yearX: "{year}"
pages: "Pages"
integration: "Intégrations"
connectSerice: "Connecter"
disconnectSerice: "Déconnecter"
enableLocalTimeline: "Activer le fil local"
enableGlobalTimeline: "Activer le fil global"
disablingTimelinesInfo: "Si vous désactivez ces le fils, les administrateurs et les modérateurs pourront toujours y accéder pour plus de commodité."
disablingTimelinesInfo: "Si vous désactivez ces fils, les administrateurs et les modérateurs pourront toujours y accéder."
registration: "S'inscrire"
enableRegistration: "Autoriser nimporte qui à senregistrés"
enableRegistration: "Autoriser nimporte qui à sinscrire"
invite: "Inviter"
proxyRemoteFiles: "Proxy fichiers distants"
proxyRemoteFilesDescription: "Si vous activez ce paramètre, les fichiers distants non stockés ou supprimés en raison d'une capacité excédentaire seront affichés via un proxy local et généreront une miniature. Cela n'affectera pas le stockage du serveur."
@ -296,38 +299,43 @@ iconUrl: "URL de l'image de l'icône"
bannerUrl: "URL de l'image de la bannière"
basicInfo: "Informations basiques"
pinnedUsers: "Utilisateur·rice épinglé·e"
pinnedUsersDescription: "Décrivez les utilisateurs que vous souhaitez définir sur la page \"Découvrir\" séparés par une nouvelle ligne"
pinnedUsersDescription: "Listez les utilisateur·rice·s que vous souhaitez voir épinglé·e·s sur la page \"Découvrir\", un·e par ligne."
hcaptcha: "hCaptcha"
enableHcaptcha: "Activer hCaptcha"
hcaptchaSiteKey: "Clé du site"
hcaptchaSecretKey: "Clé secrète"
recaptcha: "reCAPTCHA"
enableRecaptcha: "Activation de reCAPTCHA"
enableRecaptcha: "Activer reCAPTCHA"
recaptchaSiteKey: "Clé du site"
recaptchaSecretKey: "Clé secrète"
avoidMultiCaptchaConfirm: "L'utilisation de plusieurs Captchas peut provoquer des interférences. Souhaitez-vous désactiver l'autre Captcha? Vous pouvez laisser plusieurs Captcha activés en appuyant sur Annuler."
antennas: "Antenne"
manageAntennas: "Gestion d'antenne"
name: "Nom"
antennaSource: "Recevoir la source"
antennaKeywords: "Mots clés à recevoir"
antennaExcludeKeywords: "Mots clés à exclure"
antennaKeywordsDescription: "Lorsqu'il est séparé par un espace, il devient une spécification ET, et lorsqu'il est séparé par un saut de ligne, il devient une spécification OU."
antennaKeywordsDescription: "Séparez avec des espaces pour une condition ET. Séparez avec un saut de ligne pour une condition OU."
notifyAntenna: "Notifier les nouvelles notes"
withFileAntenna: "Notes uniquement avec fichiers joints"
serviceworker: "ServiceWorker"
enableServiceworker: "Activer ServiceWorker"
antennaUsersDescription: "Spécifiez les noms d'utilisateurs séparés par des sauts de ligne"
caseSensitive: "Sensible à la casse"
withReplies: "Y compris répondres"
withReplies: "Inclure les réponses"
connectedTo: "Vous êtes connectés aux services suivants"
notesAndReplies: "Notes et Répondres"
notesAndReplies: "Notes et Réponses"
withFiles: "Avec fichiers joints"
silence: "Mettre en masquer"
silenceConfirm: "Mettre l'utilisateur sous masquer ?"
unsilence: "Annuler la masquer"
unsilenceConfirm: "Voulez-vous annuler le masquer ?"
silence: "Mettre en sourdine"
silenceConfirm: "Êtes-vous sûr·e de vouloir mettre l'utilisateur·rice en sourdine ?"
unsilence: "Annuler la mise en sourdine"
unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cette utilisateur·rice ?"
popularUsers: "Utilisateur·rice·s populaires"
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment"
recentlyRegisteredUsers: "Utilisateur·rice·s récemment enregistrés"
recentlyRegisteredUsers: "Utilisateur·rice·s récemment inscrit·e·s"
recentlyDiscoveredUsers: "Utilisateur·rice·s récemment découverts"
exploreUsersCount: "Il y a {count} utilisateur·rice·s"
exploreFediverse: "Explorer le Fédiverse"
exploreFediverse: "Explorer le Fediverse"
popularTags: "Mots-clés populaires"
userList: "Listes"
about: "Informations"
@ -363,7 +371,7 @@ uploadFolder: "Emplacement de téléversement par défaut"
cacheClear: "Vider le cache"
markAsReadAllNotifications: "Marquer toutes les notifications comme lues"
markAsReadAllUnreadNotes: "Marquer toutes les notes comme lues"
markAsReadAllTalkMessages: "Marquer toutes les discutez comme lues"
markAsReadAllTalkMessages: "Marquer toutes les discussions comme lues"
help: "Aide"
inputMessageHere: "Tapez ici votre message"
close: "Fermer"
@ -411,7 +419,7 @@ or: "OU"
uiLanguage: "Langue d'affichage de l'interface"
groupInvited: "Invité au groupe"
aboutX: "À propos de {x}"
useOsNativeEmojis: "Utilisez les emojis natifs de la plateforme"
useOsNativeEmojis: "Utiliser les émojis natifs du système"
youHaveNoGroups: "Vous n'avez aucune groupe"
joinOrCreateGroup: "Soyez invité à rejoindre les groupes ou vous pouvez créer votre propre groupe."
noHistory: "Pas d'historique"
@ -465,7 +473,7 @@ listen: "Écouter"
none: "Rien"
volume: "Volume"
details: "Détails"
chooseEmoji: "Choisissez des emojis"
chooseEmoji: "Choisissez un émoji"
unableToProcess: "L'opération n'a pas pu être complétée"
recentUsed: "Récemment utilisé"
install: "Installation"
@ -490,6 +498,10 @@ removeAllFollowing: "Retenir tous les abonnements"
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Exécutez cette commande si l'instance n'existe plus."
userSuspended: "Cette utilisateur·trice a été suspendue."
userSilenced: "Cette utilisateur·trice a été masquer."
sidebar: "Barre latérale"
divider: "Séparateur"
addItem: "Ajouter élément"
rooms: "Pièce"
_theme:
explore: "Explorer les thèmes"
install: "Installer un thème"
@ -704,6 +716,66 @@ _timelines:
local: "Local"
social: "Social"
global: "Global"
_rooms:
roomOf: "Pièce de {user}"
addFurniture: "Placer des meubles"
translate: "Déplacer"
rotate: "Pivoter"
exit: "Retour"
remove: "Enlever"
clear: "Tout enlever"
clearConfirm: "Désirez-vous enlever tout les meubles de votre chambre ?"
leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous vraiment quitter ?"
chooseImage: "Sélectionnez une image"
roomType: "Style de pièce"
carpetColor: "Couleur du tapis"
_roomType:
default: "Par défaut"
washitsu: "Style japonnais"
_furnitures:
milk: "Lait en carton"
bed: "Lit"
low-table: "Table basse"
desk: "Bureau"
chair: "Chaise"
chair2: "Chaise 2"
fan: "Ventilateur"
pc: "Ordinateur"
plant: "Plante dintérieur"
plant2: "Plante dintérieur 2"
eraser: "Gomme"
pencil: "Crayon"
pudding: "Pudding"
cardboard-box: "Boîte en carton"
cardboard-box2: "Boîte en carton 2"
cardboard-box3: "Boîte en carton 3"
book: "Livre"
book2: "Livre 2"
piano: "Piano"
facial-tissue: "Mouchoirs en papier"
server: "Serveurs"
moon: "Lune"
corkboard: "Tableau en liège"
mousepad: "Tapis de souris"
monitor: "Écran de contrôle"
keyboard: "Clavier"
carpet-stripe: "Tapis (zébré)"
mat: "Tapis"
color-box: "Étagère"
wall-clock: "Horloge murale"
photoframe: "Cadre photo"
cube: "Cube"
tv: "Téléviseur"
pinguin: "Pingouin"
rubik-cube: "Cube de Rubik"
poster-h: "Affiche (horizontale)"
poster-v: "Affiche (verticale)"
sofa: "Canapé"
spiral: "Escaliers en spirale"
bin: "Corbeille"
cup-noodle: "Bol de nouilles"
holo-display: "Affichage holographique"
energy-drink: "Boisson énergétique"
_pages:
newPage: "Créer une page"
editPage: "Modifier une page"

View File

@ -107,6 +107,7 @@ customEmojis: "カスタム絵文字"
emojiName: "絵文字名"
emojiUrl: "絵文字画像URL"
addEmoji: "絵文字を追加"
settingGuide: "おすすめ設定"
cacheRemoteFiles: "リモートのファイルをキャッシュする"
cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクするようになります。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。"
flagAsBot: "Botとして設定"
@ -239,6 +240,8 @@ drive: "ドライブ"
fileName: "ファイル名"
selectFile: "ファイルを選択"
selectFiles: "ファイルを選択"
selectFolder: "フォルダーを選択"
selectFolders: "フォルダーを選択"
renameFile: "ファイル名を変更"
folderName: "フォルダー名"
createFolder: "フォルダーを作成"
@ -297,10 +300,15 @@ bannerUrl: "バナー画像のURL"
basicInfo: "基本情報"
pinnedUsers: "ピン留めユーザー"
pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。"
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptchaを有効にする"
hcaptchaSiteKey: "サイトキー"
hcaptchaSecretKey: "シークレットキー"
recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHAを有効にする"
recaptchaSiteKey: "サイトキー"
recaptchaSecretKey: "シークレットキー"
avoidMultiCaptchaConfirm: "複数のCaptchaを使用すると干渉を起こす可能性があります。他のCaptchaを無効にしますかキャンセルして複数のCaptchaを有効化したままにすることも可能です。"
antennas: "アンテナ"
manageAntennas: "アンテナの管理"
name: "名前"
@ -406,7 +414,7 @@ passwordMatched: "一致しました"
passwordNotMatched: "一致していません"
signinWith: "{x}でログイン"
signinFailed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
tapSecurityKey: "セキュリティキーにタッチ"
tapSecurityKey: "セキュリティキーにタッチ"
or: "もしくは"
uiLanguage: "UIの表示言語"
groupInvited: "グループに招待されました"
@ -490,6 +498,14 @@ removeAllFollowing: "フォローを全解除"
removeAllFollowingDescription: "{host}からのフォローをすべて解除します。そのインスタンスがもう存在しなくなった場合などに実行してください。"
userSuspended: "このユーザーは凍結されています。"
userSilenced: "このユーザーはサイレンスされています。"
sidebar: "サイドバー"
divider: "分割線"
addItem: "項目を追加"
rooms: "ルーム"
relays: "リレー"
addRelay: "リレーの追加"
inboxUrl: "inboxのURL"
addedRelays: "追加済みのリレー"
_theme:
explore: "テーマを探す"
@ -725,6 +741,67 @@ _timelines:
social: "ソーシャル"
global: "グローバル"
_rooms:
roomOf: "{user}のルーム"
addFurniture: "家具を置く"
translate: "移動"
rotate: "回転"
exit: "戻る"
remove: "しまう"
clear: "片付け"
clearConfirm: "全ての家具をしまいますか?"
leaveConfirm: "未保存の変更があります、移動しますか?"
chooseImage: "画像を選択"
roomType: "部屋のタイプ"
carpetColor: "床の色"
_roomType:
default: "デフォルト"
washitsu: "和室"
_furnitures:
milk: "牛乳パック"
bed: "ベッド"
low-table: "ローテーブル"
desk: "デスク"
chair: "チェア"
chair2: "チェア2"
fan: "換気扇"
pc: "パソコン"
plant: "観葉植物"
plant2: "観葉植物2"
eraser: "消しゴム"
pencil: "鉛筆"
pudding: "プリン"
cardboard-box: "段ボール箱"
cardboard-box2: "段ボール箱2"
cardboard-box3: "段ボール箱3"
book: "本"
book2: "本2"
piano: "ピアノ"
facial-tissue: "ティッシュボックス"
server: "サーバー"
moon: "月"
corkboard: "コルクボード"
mousepad: "マウスパッド"
monitor: "モニター"
keyboard: "キーボード"
carpet-stripe: "カーペット(縞)"
mat: "マット"
color-box: "カラーボックス"
wall-clock: "壁掛け時計"
photoframe: "額縁"
cube: "キューブ"
tv: "テレビ"
pinguin: "ピンギン"
rubik-cube: "ルービックキューブ"
poster-h: "ポスター(横長)"
poster-v: "ポスター(縦長)"
sofa: "ソファ"
spiral: "螺旋階段"
bin: "ゴミ箱"
cup-noodle: "カップ麺"
holo-display: "ホログラフィックディスプレイ"
energy-drink: "エナジードリンク"
_pages:
newPage: "ページの作成"
editPage: "ページの編集"
@ -1017,3 +1094,8 @@ _pages:
enviromentVariables: "環境変数"
pageVariables: "ページ要素"
argVariables: "入力スロット"
_relayStatus:
requesting: "承認待ち"
accepted: "承認済み"
rejected: "拒否済み"

View File

@ -35,9 +35,14 @@ unpin: "ピン留めやめる"
copyContent: "内容をコピー"
copyLink: "リンクをコピー"
delete: "ほかす"
deleteAndEdit: "ほかして直す"
deleteAndEditConfirm: "このートをほかしてもっかい直すこのートへのリアクション、Remote、返信も全部消えんで"
addToList: "リストに入れたる"
reply: "返す"
loadMore: "もっとあるやろ!"
youGotNewFollower: "フォローされたで"
receiveFollowRequest: "フォローリクエストされたで"
followRequestAccepted: "フォローが承認されたで"
mentions: "あんた宛て"
directNotes: "ダイレクト投稿"
import: "インポート"

View File

@ -107,6 +107,7 @@ customEmojis: "커스텀 이모지"
emojiName: "이모지 이름"
emojiUrl: "이모지 URL"
addEmoji: "이모지 추가"
settingGuide: "추천 설정"
cacheRemoteFiles: "리모트 파일을 캐시"
cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다."
flagAsBot: "나는 봇입니다"
@ -239,6 +240,8 @@ drive: "드라이브"
fileName: "파일명"
selectFile: "파일 선택"
selectFiles: "파일 선택"
selectFolder: "폴더 선택"
selectFolders: "폴더 선택"
renameFile: "파일 이름 변경"
folderName: "폴더명"
createFolder: "폴더 만들기"
@ -297,10 +300,15 @@ bannerUrl: "배너 이미지 URL"
basicInfo: "기본 정보"
pinnedUsers: "고정된 유저"
pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다."
hcaptcha: "hCaptcha"
enableHcaptcha: "hCaptcha 활성화"
hcaptchaSiteKey: "사이트 키"
hcaptchaSecretKey: "시크릿 키"
recaptcha: "reCAPTCHA"
enableRecaptcha: "reCAPTCHA 활성화"
recaptchaSiteKey: "사이트 키"
recaptchaSecretKey: "시크릿 키"
avoidMultiCaptchaConfirm: "여러 Captcha를 사용하는 경우 간섭이 발생할 가능성이 있습니다. 다른 Captcha를 비활성화하시겠습니까? 취소를 눌러 여러 Captcha를 활성화한 상태로 두는 것도 가능합니다."
antennas: "안테나"
manageAntennas: "안테나 관리"
name: "이름"
@ -490,6 +498,10 @@ removeAllFollowing: "모든 팔로잉 해제"
removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요."
userSuspended: "이 계정은 정지된 상태입니다."
userSilenced: "이 계정은 사일런스된 상태입니다."
sidebar: "사이드바"
divider: "분할선"
addItem: "항목 추가"
rooms: "방"
_theme:
explore: "테마 찾아보기"
install: "테마 설치"
@ -704,6 +716,66 @@ _timelines:
local: "로컬"
social: "소셜"
global: "글로벌"
_rooms:
roomOf: "{user}의 방"
addFurniture: "가구를 배치"
translate: "이동"
rotate: "회전"
exit: "뒤로"
remove: "치우기"
clear: "모두 치우기"
clearConfirm: "정말 방 안의 모든 가구를 치우시겠습니까?"
leaveConfirm: "저장되지 않은 변경 사항이 있습니다. 정말 나가시겠습니까?"
chooseImage: "이미지 선택"
roomType: "방 스타일"
carpetColor: "바닥 색상"
_roomType:
default: "기본값"
washitsu: "일본식"
_furnitures:
milk: "우유 팩"
bed: "침대"
low-table: "낮은 테이블"
desk: "책상"
chair: "의자"
chair2: "의자 2"
fan: "환기구"
pc: "컴퓨터"
plant: "관엽식물"
plant2: "관엽식물 2"
eraser: "지우개"
pencil: "연필"
pudding: "푸딩"
cardboard-box: "골판지 상자"
cardboard-box2: "골판지 상자 2"
cardboard-box3: "골판지 상자 3"
book: "책"
book2: "책 2"
piano: "피아노"
facial-tissue: "휴지 상자"
server: "서버"
moon: "달"
corkboard: "게시판"
mousepad: "마우스 패드"
monitor: "모니터"
keyboard: "키보드"
carpet-stripe: "카페트 (줄무늬)"
mat: "매트"
color-box: "책장"
wall-clock: "벽걸이 시계"
photoframe: "액자"
cube: "큐브"
tv: "TV"
pinguin: "펭귄"
rubik-cube: "루빅스 큐브"
poster-h: "포스터 (가로)"
poster-v: "포스터 (세로)"
sofa: "소파"
spiral: "나선형 계단"
bin: "휴지통"
cup-noodle: "컵라면"
holo-display: "홀로그램"
energy-drink: "에너지 드링크"
_pages:
newPage: "페이지 만들기"
editPage: "페이지 수정"

View File

@ -107,6 +107,7 @@ customEmojis: "自定义Emoji"
emojiName: "Emoji 名称"
emojiUrl: "emoji 地址"
addEmoji: "添加Emoji"
settingGuide: "推荐配置"
cacheRemoteFiles: "远程文件缓存"
cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远程实例载入。禁用后会减小储存空间需求,但是会增加流量,因为缩略图不会被生成。"
flagAsBot: "这个账户是Bot"
@ -209,7 +210,7 @@ fromUrl: "从 URL"
uploadFromUrl: "从网址上传"
uploadFromUrlDescription: "要上传的文件的URL"
uploadFromUrlRequested: "请求上传"
uploadFromUrlMayTakeTime: "上传完成可能需要一些时间。"
uploadFromUrlMayTakeTime: "上传可能需要一些时间完成。"
explore: "发现"
games: "Misskey游戏"
messageRead: "已读"
@ -228,17 +229,19 @@ yearsOld: "{age}岁"
registeredDate: "注册于"
location: "位置"
theme: "主题"
themeForLightMode: "在轻便模式下使用的主题"
themeForDarkMode: "在黑暗模式下使用的主题"
themeForLightMode: "在浅色模式下使用的主题"
themeForDarkMode: "在深色模式下使用的主题"
light: "浅色"
dark: "深色"
lightThemes: "亮色主题"
darkThemes: "暗色主题"
syncDeviceDarkMode: "将黑暗模式与设备设置同步"
syncDeviceDarkMode: "将深色模式与系统设置同步"
drive: "网盘"
fileName: "文件名称"
selectFile: "选择文件"
selectFiles: "选择文件"
selectFolder: "选择文件夹"
selectFolders: "选择多个文件夹"
renameFile: "重命名文件"
folderName: "文件夹名称"
createFolder: "创建文件夹"
@ -297,10 +300,15 @@ bannerUrl: "Banner URL"
basicInfo: "基本信息"
pinnedUsers: "置顶用户"
pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"
hcaptcha: "hCaptcha"
enableHcaptcha: "启用 hCaptcha"
hcaptchaSiteKey: "网站密钥"
hcaptchaSecretKey: "密钥"
recaptcha: "reCAPTCHA"
enableRecaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)"
recaptchaSiteKey: "网站密钥"
recaptchaSecretKey: "reCAPTCHA 密钥"
avoidMultiCaptchaConfirm: "使用多种验证方式可能会造成干扰,您要禁用其他验证方式吗?您可以按“取消”按钮,仍然保持启用多种验证方式。"
antennas: "天线"
manageAntennas: "天线管理"
name: "名称"
@ -405,15 +413,15 @@ strongPassword: "密码强度:强"
passwordMatched: "密码一致"
passwordNotMatched: "密码不一致"
signinWith: "以{x}登录"
signinFailed: "无法登录请检查您的用户名和密码。"
tapSecurityKey: "点击安全密钥"
signinFailed: "无法登录请检查您的用户名和密码。"
tapSecurityKey: "轻触硬件安全密钥"
or: "或者"
uiLanguage: "显示语言"
groupInvited: "群组招待"
aboutX: "关于 {x}"
useOsNativeEmojis: "使用OS原生Emoji"
youHaveNoGroups: "没有组"
joinOrCreateGroup: "加入或者创建群组"
youHaveNoGroups: "没有组"
joinOrCreateGroup: "加入一个现有的群组,或者创建群组"
noHistory: "没有历史记录"
disableAnimatedMfm: "禁用MFM动画"
doing: "正在进行"
@ -447,7 +455,7 @@ objectStorageBaseUrlDesc: "供参考的URL。如果使用CDN或Proxy则其URL
objectStorageBucket: "存储桶"
objectStorageBucketDesc: "请指定使用的对象存储服务的存储桶名称。"
objectStoragePrefix: "前缀"
objectStoragePrefixDesc: "将存储在此前缀的目录下。"
objectStoragePrefixDesc: "文件将存储在此前缀的目录下。"
objectStorageEndpoint: "端点"
objectStorageEndpointDesc: "S3默认情况下为空否则请为每个服务指定端点。 指定为“<host>”或“<host>:<port>”。"
objectStorageRegion: "可用区"
@ -455,6 +463,7 @@ objectStorageRegionDesc: "指定一个可用区例如“xx-east-1”。 如
objectStorageUseSSL: "使用SSL"
objectStorageUseSSLDesc: "如果不使用https进行API连接请关闭。"
objectStorageUseProxy: "使用代理"
objectStorageUseProxyDesc: "如果您不使用代理进行API连接请将其关闭。"
serverLogs: "服务器日志"
deleteAll: "删除全部"
showFixedPostForm: "在时间线顶部显示帖子表单"
@ -478,6 +487,7 @@ sort: "排序"
ascendingOrder: "升序"
descendingOrder: "降序"
scratchpad: "暂存器"
scratchpadDescription: "暂存器为AiScript提供了实验环境。您可以编写代码以与Misskey交互运行它并查看结果。"
output: "输出"
script: "脚本"
disablePagesScript: "禁用页面脚本"
@ -488,6 +498,10 @@ removeAllFollowing: "取消所有关注"
removeAllFollowingDescription: "取消{host}的所有关注者。当实例不存在时执行。"
userSuspended: "该用户已被冻结。"
userSilenced: "该用户已被禁言。"
sidebar: "侧边栏"
divider: "分割线"
addItem: "添加项"
rooms: "房间"
_theme:
explore: "寻找主题"
install: "安装主题"
@ -702,6 +716,66 @@ _timelines:
local: "本地"
social: "社交"
global: "全局"
_rooms:
roomOf: "{user}的房间"
addFurniture: "放置家具"
translate: "移动"
rotate: "旋转"
exit: "返回"
remove: "移除"
clear: "清理"
clearConfirm: "是否清除所有家具?"
leaveConfirm: "有尚未保存的修改。是否离开?"
chooseImage: "选择图片"
roomType: "房间类型"
carpetColor: "地板颜色"
_roomType:
default: "默认"
washitsu: "和式房间"
_furnitures:
milk: "牛奶纸箱"
bed: "床"
low-table: "矮桌"
desk: "书桌"
chair: "椅子"
chair2: "椅子2"
fan: "换气扇"
pc: "电脑"
plant: "观叶植物"
plant2: "观叶植物2"
eraser: "橡皮擦"
pencil: "铅笔"
pudding: "布丁"
cardboard-box: "纸箱"
cardboard-box2: "纸箱2"
cardboard-box3: "纸箱3"
book: "书"
book2: "书2"
piano: "钢琴"
facial-tissue: "纸巾盒"
server: "服务器"
moon: "月亮"
corkboard: "软木板"
mousepad: "鼠标垫"
monitor: "显示器"
keyboard: "键盘"
carpet-stripe: "地毯(条纹)"
mat: "垫子"
color-box: "收纳柜"
wall-clock: "挂钟"
photoframe: "相框"
cube: "立方体"
tv: "电视"
pinguin: "企鹅君"
rubik-cube: "魔方"
poster-h: "海报(横向)"
poster-v: "海报(纵向)"
sofa: "沙发"
spiral: "螺旋楼梯"
bin: "垃圾箱"
cup-noodle: "杯面"
holo-display: "全息显示器"
energy-drink: "能量饮料"
_pages:
newPage: "创建页面"
editPage: "编辑页面"

View File

@ -235,6 +235,8 @@ iconUrl: "圖像URL"
bannerUrl: "橫幅圖片URL"
basicInfo: "基本資訊"
pinnedUsers: "置頂用戶"
hcaptchaSiteKey: "網站金鑰"
hcaptchaSecretKey: "金鑰"
recaptcha: "reCAPTCHA"
enableRecaptcha: "啟用 reCAPTCHA"
recaptchaSiteKey: "網站金鑰"
@ -367,6 +369,9 @@ _exportOrImport:
userLists: "清單"
_timelines:
home: "首頁"
_rooms:
_furnitures:
monitor: "監視器"
_pages:
script:
categories:

View File

@ -0,0 +1,18 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class hCaptcha1588044505511 implements MigrationInterface {
name = 'hCaptcha1588044505511'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "enableHcaptcha" boolean NOT NULL DEFAULT false`, undefined);
await queryRunner.query(`ALTER TABLE "meta" ADD "hcaptchaSiteKey" character varying(64)`, undefined);
await queryRunner.query(`ALTER TABLE "meta" ADD "hcaptchaSecretKey" character varying(64)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hcaptchaSecretKey"`, undefined);
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "hcaptchaSiteKey"`, undefined);
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableHcaptcha"`, undefined);
}
}

View File

@ -0,0 +1,18 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class pubRelay1589023282116 implements MigrationInterface {
name = 'pubRelay1589023282116'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`CREATE TYPE "relay_status_enum" AS ENUM('requesting', 'accepted', 'rejected')`, undefined);
await queryRunner.query(`CREATE TABLE "relay" ("id" character varying(32) NOT NULL, "inbox" character varying(512) NOT NULL, "status" "relay_status_enum" NOT NULL, CONSTRAINT "PK_78ebc9cfddf4292633b7ba57aee" PRIMARY KEY ("id"))`, undefined);
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_0d9a1738f2cf7f3b1c3334dfab" ON "relay" ("inbox") `, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`DROP INDEX "IDX_0d9a1738f2cf7f3b1c3334dfab"`, undefined);
await queryRunner.query(`DROP TABLE "relay"`, undefined);
await queryRunner.query(`DROP TYPE "relay_status_enum"`, undefined);
}
}

View File

@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.35.2",
"version": "12.37.0",
"codename": "indigo",
"repository": {
"type": "git",
@ -24,14 +24,18 @@
"clean": "gulp clean",
"cleanall": "gulp cleanall",
"lint": "tslint 'src/**/*.ts'",
"test": "cross-env TS_NODE_FILES=true gulp test",
"test": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_COMPILER_OPTIONS=\"{\\\"target\\\":\\\"es2017\\\",\\\"module\\\":\\\"commonjs\\\",\\\"typeRoots\\\":[\\\"node_modules/@types\\\",\\\"src/@types\\\"]}\" mocha",
"format": "gulp format"
},
"resolutions": {
"https-proxy-agent": "^3.0.0",
"lodash": "^4.17.13"
"chokidar": "^3.3.1",
"constantinople": "^4.0.1",
"core-js": "^3.6.5",
"lodash": "^4.17.15",
"mocha": "^7.1.1"
},
"dependencies": {
"@babel/plugin-transform-runtime": "7.9.6",
"@elastic/elasticsearch": "7.6.1",
"@fortawesome/fontawesome-svg-core": "1.2.28",
"@fortawesome/free-brands-svg-icons": "5.13.0",
@ -42,24 +46,25 @@
"@koa/cors": "3.0.0",
"@koa/multer": "2.0.2",
"@koa/router": "8.0.8",
"@syuilo/aiscript": "0.4.1",
"@sinonjs/fake-timers": "6.0.1",
"@syuilo/aiscript": "0.6.1",
"@types/bcryptjs": "2.4.2",
"@types/bull": "3.12.2",
"@types/cbor": "5.0.0",
"@types/dateformat": "3.0.1",
"@types/double-ended-queue": "2.1.1",
"@types/escape-regexp": "0.0.0",
"@types/glob": "7.1.1",
"@types/gulp": "4.0.6",
"@types/gulp-mocha": "0.0.32",
"@types/gulp-rename": "0.0.33",
"@types/gulp-replace": "0.0.31",
"@types/is-url": "1.2.28",
"@types/js-yaml": "3.12.3",
"@types/jsdom": "16.2.1",
"@types/jsonld": "1.5.1",
"@types/katex": "0.11.0",
"@types/koa": "2.11.3",
"@types/koa-bodyparser": "4.3.0",
"@types/koa-compress": "2.0.9",
"@types/koa-cors": "0.0.0",
"@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.1",
@ -69,11 +74,10 @@
"@types/koa__cors": "3.0.1",
"@types/koa__multer": "2.0.1",
"@types/koa__router": "8.0.2",
"@types/lolex": "5.1.0",
"@types/markdown-it": "0.0.9",
"@types/markdown-it": "10.0.1",
"@types/mocha": "7.0.2",
"@types/node": "13.13.0",
"@types/node-fetch": "2.5.6",
"@types/node": "13.13.5",
"@types/node-fetch": "2.5.7",
"@types/nodemailer": "6.4.0",
"@types/nprogress": "0.2.0",
"@types/oauth": "0.9.1",
@ -84,65 +88,65 @@
"@types/qrcode": "1.3.4",
"@types/random-seed": "0.3.3",
"@types/ratelimiter": "2.1.28",
"@types/redis": "2.8.18",
"@types/redis": "2.8.20",
"@types/rename": "1.0.1",
"@types/request-stats": "3.0.0",
"@types/rimraf": "2.0.3",
"@types/rimraf": "3.0.0",
"@types/seedrandom": "2.4.28",
"@types/sharp": "0.24.0",
"@types/showdown": "1.9.3",
"@types/sharp": "0.25.0",
"@types/sinonjs__fake-timers": "6.0.1",
"@types/speakeasy": "2.0.5",
"@types/systeminformation": "3.54.1",
"@types/tinycolor2": "1.4.2",
"@types/tmp": "0.1.0",
"@types/uuid": "7.0.2",
"@types/tmp": "0.2.0",
"@types/uuid": "7.0.3",
"@types/web-push": "3.3.0",
"@types/webpack": "4.41.10",
"@types/webpack": "4.41.12",
"@types/webpack-stream": "3.2.10",
"@types/websocket": "1.0.0",
"@types/ws": "7.2.4",
"@typescript-eslint/parser": "2.28.0",
"@typescript-eslint/parser": "2.31.0",
"abort-controller": "3.0.0",
"apexcharts": "3.18.1",
"apexcharts": "3.19.0",
"autobind-decorator": "2.4.0",
"autosize": "4.0.2",
"autwh": "0.1.0",
"aws-sdk": "2.658.0",
"aws-sdk": "2.673.0",
"bcryptjs": "2.4.3",
"bull": "3.13.0",
"bull": "3.14.0",
"cafy": "15.2.1",
"cbor": "5.0.2",
"chai": "4.2.0",
"chalk": "4.0.0",
"chart.js": "2.9.3",
"cli-highlight": "2.1.4",
"commander": "4.1.1",
"content-disposition": "0.5.3",
"core-js": "3.6.5",
"crc-32": "1.2.0",
"css-loader": "3.5.2",
"css-loader": "3.5.3",
"cssnano": "4.1.10",
"dateformat": "3.0.3",
"diskusage": "1.1.3",
"double-ended-queue": "2.1.0-0",
"escape-regexp": "0.0.1",
"eslint": "6.8.0",
"eslint-plugin-vue": "6.2.2",
"eventemitter3": "4.0.0",
"feed": "4.1.0",
"fibers": "4.0.2",
"file-type": "14.1.4",
"fibers": "5.0.0",
"file-type": "14.3.0",
"fluent-ffmpeg": "2.1.2",
"glob": "7.1.6",
"gulp": "4.0.2",
"gulp-clean-css": "4.3.0",
"gulp-dart-sass": "1.0.1",
"gulp-mocha": "7.0.2",
"gulp-dart-sass": "1.0.2",
"gulp-rename": "2.0.0",
"gulp-replace": "1.0.0",
"gulp-sourcemaps": "2.6.5",
"gulp-terser": "1.2.0",
"gulp-tslint": "8.1.4",
"gulp-typescript": "5.0.1",
"gulp-typescript": "6.0.0-alpha.1",
"hard-source-webpack-plugin": "0.13.1",
"hcaptcha": "0.0.1",
"html-minifier": "4.0.0",
"http-proxy-agent": "4.0.1",
"http-signature": "1.3.4",
@ -153,12 +157,12 @@
"js-yaml": "3.13.1",
"jsdom": "16.2.2",
"json5": "2.1.3",
"json5-loader": "3.0.0",
"json5-loader": "4.0.0",
"jsonld": "3.1.0",
"jsrsasign": "8.0.15",
"katex": "0.11.1",
"koa": "2.11.0",
"koa-bodyparser": "4.3.0",
"koa-compress": "3.1.0",
"koa-favicon": "2.1.0",
"koa-json-body": "5.3.0",
"koa-logger": "3.2.1",
@ -167,29 +171,27 @@
"koa-slow": "2.1.0",
"koa-views": "6.2.1",
"langmap": "0.0.16",
"lolex": "5.1.2",
"lookup-dns-cache": "2.1.0",
"markdown-it": "10.0.0",
"markdown-it-anchor": "5.2.7",
"mocha": "7.1.1",
"mocha": "7.1.2",
"moji": "0.5.1",
"ms": "2.1.2",
"multer": "1.4.2",
"nested-property": "1.0.4",
"nested-property": "2.0.0",
"node-fetch": "2.6.0",
"nodemailer": "6.4.6",
"nprogress": "0.2.0",
"object-assign-deep": "0.4.0",
"os-utils": "0.0.14",
"parse5": "5.1.1",
"parse5": "6.0.0",
"parsimmon": "1.13.0",
"pg": "8.0.2",
"pg": "8.1.0",
"portal-vue": "2.1.7",
"portscanner": "2.2.0",
"postcss-loader": "3.0.0",
"prismjs": "1.20.0",
"probe-image-size": "5.0.0",
"progress-bar-webpack-plugin": "2.1.0",
"promise-limit": "2.7.0",
"promise-sequential": "1.1.1",
"pug": "2.0.4",
@ -204,68 +206,68 @@
"redis": "3.0.2",
"redis-lock": "0.1.4",
"reflect-metadata": "0.1.13",
"regenerator-runtime": "0.13.5",
"rename": "1.0.4",
"request-stats": "3.0.0",
"require-all": "3.0.0",
"rimraf": "3.0.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sass": "1.26.3",
"sass": "1.26.5",
"sass-loader": "8.0.2",
"seedrandom": "3.0.5",
"sharp": "0.25.2",
"showdown": "1.9.1",
"showdown-highlightjs-extension": "0.1.2",
"speakeasy": "2.0.0",
"stringz": "2.1.0",
"style-loader": "1.1.4",
"style-loader": "1.2.1",
"summaly": "2.3.1",
"syslog-pro": "1.0.0",
"systeminformation": "4.23.3",
"systeminformation": "4.25.1",
"syuilo-password-strength": "0.0.1",
"terser-webpack-plugin": "2.3.5",
"textarea-caret": "3.1.0",
"three": "0.115.0",
"three": "0.116.1",
"tinycolor2": "1.4.1",
"tmp": "0.1.0",
"ts-loader": "6.2.2",
"ts-node": "8.8.2",
"tslint": "6.1.1",
"tmp": "0.2.1",
"ts-loader": "7.0.3",
"ts-node": "8.10.1",
"tslint": "6.1.2",
"tslint-sonarts": "1.9.0",
"typeorm": "0.2.24",
"typescript": "3.8.3",
"typescript": "3.9.1-rc",
"ulid": "2.3.0",
"url-loader": "3.0.0",
"uuid": "7.0.3",
"url-loader": "4.1.0",
"uuid": "8.0.0",
"v-animate-css": "0.0.3",
"v-debounce": "0.1.2",
"vue": "2.6.11",
"vue-color": "2.7.1",
"vue-content-loading": "1.6.0",
"vue-cropperjs": "4.1.0",
"vue-i18n": "8.17.2",
"vue-i18n": "8.17.4",
"vue-json-pretty": "1.6.3",
"vue-loader": "15.9.1",
"vue-loader": "15.9.2",
"vue-marquee-text-component": "1.1.1",
"vue-meta": "2.3.3",
"vue-prism-component": "1.2.0",
"vue-prism-editor": "0.5.1",
"vue-prism-editor": "0.6.1",
"vue-router": "3.1.6",
"vue-style-loader": "4.1.2",
"vue-svg-inline-loader": "1.5.0",
"vue-svg-inline-loader-corejs3": "1.5.0",
"vue-template-compiler": "2.6.11",
"vuedraggable": "2.23.2",
"vuex": "3.1.3",
"vuex": "3.3.0",
"vuex-persistedstate": "3.0.1",
"web-push": "3.4.3",
"webpack": "4.42.1",
"webpack": "5.0.0-beta.16",
"webpack-cli": "3.3.11",
"websocket": "1.0.31",
"ws": "7.2.3",
"ws": "7.2.5",
"xev": "2.0.1"
},
"devDependencies": {
"@types/fluent-ffmpeg": "2.1.12",
"cross-env": "6.0.3"
"@types/chai": "4.2.11",
"@types/fluent-ffmpeg": "2.1.14",
"chai": "4.2.0",
"cross-env": "7.0.2"
}
}

11
src/@types/hcaptcha.d.ts vendored Normal file
View File

@ -0,0 +1,11 @@
declare module 'hcaptcha' {
interface IVerifyResponse {
success: boolean;
challenge_ts: string;
hostname: string;
credit?: boolean;
'error-codes'?: unknown[];
}
export function verify(secret: string, token: string): Promise<IVerifyResponse>;
}

View File

@ -19,10 +19,12 @@ declare module 'http-signature' {
clockSkew?: number;
}
interface IParsedSignature {
interface IParsedSignature {
scheme: string;
params: ISignature;
signingString: string;
algorithm: string;
keyId: string;
}
type RequestSignerConstructorOptions =

View File

@ -3,6 +3,7 @@ import * as cluster from 'cluster';
import * as chalk from 'chalk';
import * as portscanner from 'portscanner';
import * as isRoot from 'is-root';
import { getConnection } from 'typeorm';
import Logger from '../services/logger';
import loadConfig from '../config/load';
@ -31,7 +32,7 @@ function greet() {
console.log(chalk.keyword('orange')(' If you like Misskey, please donate to support development. https://www.patreon.com/syuilo'));
console.log('');
console.log(chalk`< ${os.hostname()} {gray (PID: ${process.pid.toString()})} >`);
console.log(chalk`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`);
}
bootLogger.info('Welcome to Misskey!');
@ -75,13 +76,13 @@ export async function masterMain() {
await spawnWorkers(config.clusterLimit);
}
bootLogger.succ(`Now listening on port ${config.port} on ${config.url}`, null, true);
if (!program.noDaemons) {
require('../daemons/server-stats').default();
require('../daemons/queue-stats').default();
require('../daemons/janitor').default();
}
bootLogger.succ(`Now listening on port ${config.port} on ${config.url}`, null, true);
}
const runningNodejsVersion = process.version.slice(1).split('.').map(x => parseInt(x, 10));
@ -115,6 +116,8 @@ function showEnvironment(): void {
async function init(): Promise<Config> {
showEnvironment();
await showMachineInfo(bootLogger);
const nodejsLogger = bootLogger.createSubLogger('nodejs');
nodejsLogger.info(`Version ${runningNodejsVersion.join('.')}`);
@ -124,8 +127,6 @@ async function init(): Promise<Config> {
process.exit(1);
}
await showMachineInfo(bootLogger);
const configLogger = bootLogger.createSubLogger('config');
let config;
@ -145,13 +146,17 @@ async function init(): Promise<Config> {
configLogger.succ('Loaded');
const dbLogger = bootLogger.createSubLogger('db');
// Try to connect to DB
try {
bootLogger.info('Connecting database...');
dbLogger.info('Connecting...');
await initDb();
const v = await getConnection().query('SHOW server_version').then(x => x[0].server_version);
dbLogger.succ(`Connected: v${v}`);
} catch (e) {
bootLogger.error('Cannot connect to database', null, true);
bootLogger.error(e);
dbLogger.error('Cannot connect', null, true);
dbLogger.error(e);
process.exit(1);
}

View File

@ -49,44 +49,20 @@
<router-link class="item index" active-class="active" to="/" exact v-else>
<fa :icon="faHome" fixed-width/><span class="text">{{ $store.getters.isSignedIn ? $t('timeline') : $t('home') }}</span>
</router-link>
<template v-if="$store.getters.isSignedIn">
<router-link class="item notifications" active-class="active" to="/my/notifications" ref="notificationButton">
<fa :icon="faBell" fixed-width/><span class="text">{{ $t('notifications') }}</span>
<i v-if="$store.state.i.hasUnreadNotification"><fa :icon="faCircle"/></i>
</router-link>
<router-link class="item" active-class="active" to="/my/messaging">
<fa :icon="faComments" fixed-width/><span class="text">{{ $t('messaging') }}</span>
<i v-if="$store.state.i.hasUnreadMessagingMessage"><fa :icon="faCircle"/></i>
</router-link>
<router-link class="item" active-class="active" to="/my/drive">
<fa :icon="faCloud" fixed-width/><span class="text">{{ $t('drive') }}</span>
</router-link>
<router-link class="item" active-class="active" to="/my/follow-requests" v-if="$store.state.i.isLocked">
<fa :icon="faUserClock" fixed-width/><span class="text">{{ $t('followRequests') }}</span>
<i v-if="$store.state.i.hasPendingReceivedFollowRequest"><fa :icon="faCircle"/></i>
</router-link>
<template v-for="item in menu">
<div v-if="item === '-'" class="divider"></div>
<component v-else-if="menuDef[item].show !== false" :is="menuDef[item].to ? 'router-link' : 'button'" class="item _button" :class="item" active-class="active" @click="() => { if (menuDef[item].action) menuDef[item].action() }" :to="menuDef[item].to">
<fa :icon="menuDef[item].icon" fixed-width/><span class="text">{{ $t(menuDef[item].title) }}</span>
<i v-if="menuDef[item].indicated"><fa :icon="faCircle"/></i>
</component>
</template>
<div class="divider"></div>
<router-link class="item" active-class="active" to="/featured">
<fa :icon="faFireAlt" fixed-width/><span class="text">{{ $t('featured') }}</span>
</router-link>
<router-link class="item" active-class="active" to="/explore">
<fa :icon="faHashtag" fixed-width/><span class="text">{{ $t('explore') }}</span>
</router-link>
<router-link class="item" active-class="active" to="/announcements">
<fa :icon="faBroadcastTower" fixed-width/><span class="text">{{ $t('announcements') }}</span>
<i v-if="$store.getters.isSignedIn && $store.state.i.hasUnreadAnnouncement"><fa :icon="faCircle"/></i>
</router-link>
<button class="item _button" @click="search()">
<fa :icon="faSearch" fixed-width/><span class="text">{{ $t('search') }}</span>
</button>
<div class="divider"></div>
<button class="item _button" :class="{ active: $route.path === '/instance' || $route.path.startsWith('/instance/') }" v-if="$store.getters.isSignedIn && ($store.state.i.isAdmin || $store.state.i.isModerator)" @click="oepnInstanceMenu">
<fa :icon="faServer" fixed-width/><span class="text">{{ $t('instance') }}</span>
</button>
<button class="item _button" @click="more">
<fa :icon="faEllipsisH" fixed-width/><span class="text">{{ $t('more') }}</span>
<i v-if="$store.getters.isSignedIn && ($store.state.i.hasUnreadMentions || $store.state.i.hasUnreadSpecifiedNotes)"><fa :icon="faCircle"/></i>
<i v-if="otherNavItemIndicated"><fa :icon="faCircle"/></i>
</button>
<router-link class="item" active-class="active" to="/preferences">
<fa :icon="faCog" fixed-width/><span class="text">{{ $t('settings') }}</span>
@ -141,10 +117,10 @@
</div>
<div class="buttons">
<button class="button nav _button" @click="showNav = true" ref="navButton"><fa :icon="faBars"/><i v-if="$store.getters.isSignedIn && ($store.state.i.hasUnreadSpecifiedNotes || $store.state.i.hasPendingReceivedFollowRequest || $store.state.i.hasUnreadMessagingMessage || $store.state.i.hasUnreadAnnouncement)"><fa :icon="faCircle"/></i></button>
<button class="button nav _button" @click="showNav = true" ref="navButton"><fa :icon="faBars"/><i v-if="navIndicated"><fa :icon="faCircle"/></i></button>
<button v-if="$route.name === 'index'" class="button home _button" @click="top()"><fa :icon="faHome"/></button>
<button v-else class="button home _button" @click="$router.push('/')"><fa :icon="faHome"/></button>
<button v-if="$store.getters.isSignedIn" class="button notifications _button" @click="$router.push('/my/notifications')" ref="notificationButton2"><fa :icon="faBell"/><i v-if="$store.state.i.hasUnreadNotification"><fa :icon="faCircle"/></i></button>
<button v-if="$store.getters.isSignedIn" class="button notifications _button" @click="$router.push('/my/notifications')"><fa :icon="faBell"/><i v-if="$store.state.i.hasUnreadNotification"><fa :icon="faCircle"/></i></button>
<button v-if="$store.getters.isSignedIn" class="button post _buttonPrimary" @click="post()"><fa :icon="faPencilAlt"/></button>
</div>
@ -156,14 +132,13 @@
<script lang="ts">
import Vue from 'vue';
import { faTerminal, faGripVertical, faChevronLeft, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faListUl, faPlus, faUserClock, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faGamepad, faServer, faFileAlt, faSatellite, faInfoCircle, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
import { faGripVertical, faChevronLeft, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faListUl, faPlus, faUserClock, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer, faInfoCircle, faQuestionCircle, faProjectDiagram } from '@fortawesome/free-solid-svg-icons';
import { faBell, faEnvelope, faLaugh, faComments } from '@fortawesome/free-regular-svg-icons';
import { ResizeObserver } from '@juggle/resize-observer';
import { v4 as uuid } from 'uuid';
import i18n from './i18n';
import { host, instanceName } from './config';
import { search } from './scripts/search';
import MkToast from './components/toast.vue';
const DESKTOP_THRESHOLD = 1100;
@ -188,10 +163,13 @@ export default Vue.extend({
searchQuery: '',
searchWait: false,
widgetsEditMode: false,
menuDef: this.$store.getters.nav({
search: this.search
}),
isDesktop: window.innerWidth >= DESKTOP_THRESHOLD,
canBack: false,
wallpaper: localStorage.getItem('wallpaper') != null,
faGripVertical, faChevronLeft, faComments, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faBell, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faEnvelope, faListUl, faPlus, faUserClock, faLaugh, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer
faGripVertical, faChevronLeft, faComments, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faBell, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faEnvelope, faListUl, faPlus, faUserClock, faLaugh, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer, faProjectDiagram
};
},
@ -207,6 +185,29 @@ export default Vue.extend({
widgets(): any[] {
return this.$store.state.deviceUser.widgets;
},
menu(): string[] {
return this.$store.state.deviceUser.menu;
},
otherNavItemIndicated(): boolean {
if (!this.$store.getters.isSignedIn) return false;
for (const def in this.menuDef) {
if (this.menu.includes(def)) continue;
if (this.menuDef[def].indicated) return true;
}
return false;
},
navIndicated(): boolean {
if (!this.$store.getters.isSignedIn) return false;
for (const def in this.menuDef) {
if (def === 'timeline') continue;
if (def === 'notifications') continue;
if (this.menuDef[def].indicated) return true;
}
return false;
}
},
@ -412,6 +413,11 @@ export default Vue.extend({
text: this.$t('federation'),
to: '/instance/federation',
icon: faGlobe,
}, {
type: 'link',
text: this.$t('relays'),
to: '/instance/relays',
icon: faProjectDiagram,
}, {
type: 'link',
text: this.$t('announcements'),
@ -426,55 +432,16 @@ export default Vue.extend({
},
more(ev) {
const items = Object.keys(this.menuDef).filter(k => !this.menu.includes(k)).map(k => this.menuDef[k]).filter(def => def.show == null ? true : def.show).map(def => ({
type: def.to ? 'link' : 'button',
text: this.$t(def.title),
icon: def.icon,
to: def.to,
action: def.action,
indicate: def.indicated,
}));
this.$root.menu({
items: [...(this.$store.getters.isSignedIn ? [{
type: 'link',
text: this.$t('lists'),
to: '/my/lists',
icon: faListUl,
}, {
type: 'link',
text: this.$t('groups'),
to: '/my/groups',
icon: faUsers,
}, {
type: 'link',
text: this.$t('antennas'),
to: '/my/antennas',
icon: faSatellite,
}, {
type: 'link',
text: this.$t('mentions'),
to: '/my/mentions',
icon: faAt,
indicate: this.$store.state.i.hasUnreadMentions
}, {
type: 'link',
text: this.$t('directNotes'),
to: '/my/messages',
icon: faEnvelope,
indicate: this.$store.state.i.hasUnreadSpecifiedNotes
}, {
type: 'link',
text: this.$t('favorites'),
to: '/my/favorites',
icon: faStar,
}, {
type: 'link',
text: this.$t('pages'),
to: '/my/pages',
icon: faFileAlt,
}, {
type: 'link',
text: this.$t('games'),
to: '/games',
icon: faGamepad,
}, null] : []), {
type: 'link',
text: this.$t('scratchpad'),
to: '/scratchpad',
icon: faTerminal,
}, null, {
items: [...items, null, {
type: 'link',
text: this.$t('help'),
to: '/docs',
@ -535,14 +502,14 @@ export default Vue.extend({
});
},
onNotification(notification) {
async onNotification(notification) {
// TODO: ユーザーが画面を見てないと思われるとき(ブラウザやタブがアクティブじゃないなど)は送信しない
if (true) {
this.$root.stream.send('readNotification', {
id: notification.id
});
this.$root.new(MkToast, {
this.$root.new(await import('./components/toast.vue').then(m => m.default), {
notification
});
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More