Merge branch 'develop'

This commit is contained in:
syuilo 2021-09-04 20:38:20 +09:00
commit 4334304260
82 changed files with 902 additions and 562 deletions

View File

@ -157,3 +157,10 @@ id: 'aid'
# Sign to ActivityPub GET request (default: false) # Sign to ActivityPub GET request (default: false)
#signToActivityPubGet: true #signToActivityPubGet: true
#allowedPrivateNetworks: [
# '127.0.0.1/32'
#]
# Upload or download file size limits (bytes)
#maxFileSize: 262144000

View File

@ -1,30 +1,10 @@
<!-- お読みください <!-- お読みください
PRありがとうございます PRを作成する前に、以下をご確認ください: PRありがとうございます PRを作成する前に、コントリビューションガイドをご確認ください:
- 可能であればタイトルに、以下で示すようなPRの種類が分かるキーワードをプリフィクスしてください。 https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md
- fix / refactor / feat / enhance / perf / chore
- また、PRの粒度が適切であることを確認してください。ひとつのPRに複数の種類の変更や関心を含めることは避けてください。
- このPRによって解決されるIssueがある場合は、そのIssueへの参照を本文内に含めてください。
- CHANGELOG.mdに変更点を追記してください。リファクタリングなど、利用者に影響を与えない変更についてはこの限りではありません。
- この変更により新たに作成、もしくは更新すべきドキュメントがないか確認してください。
- 機能追加やバグ修正をした場合は、可能であればテストケースを追加してください。
- テスト、Lintが通っていることを予め確認してください。
- `npm run test`、`npm run lint`でぞれぞれ実施可能です
- UIに変更がある場合はスクリーンショットを本文内に添付してください。
ご協力ありがとうございます🤗
--> -->
<!-- README <!-- README
Thank you for your PR! Before creating a PR, please check the following: Thank you for your PR! Before creating a PR, please check the contribution guide:
- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below. https://github.com/misskey-dev/misskey/blob/develop/docs/CONTRIBUTING.en.md
- fix / refactor / feat / enhance / perf / chore
- Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR.
- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text.
- Please add the summary of the changes to CHANGELOG.md. However, this is not necessary for changes that do not affect the users, such as refactoring.
- Check if there are any documents that need to be created or updated due to this change.
- If you have added a feature or fixed a bug, please add a test case if possible.
- Please make sure that tests and Lint are passed in advance.
- You can run it with `npm run test` and `npm run lint`.
- If this PR includes UI changes, please attach a screenshot in the text.
Thanks for your cooperation 🤗
--> -->
# What # What

View File

@ -29,6 +29,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
submodules: true
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1 uses: actions/setup-node@v1
with: with:
@ -48,6 +50,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
submodules: true
- uses: actions/setup-node@v1 - uses: actions/setup-node@v1
with: with:
node-version: 12.x node-version: 12.x

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "misskey-assets"]
path = misskey-assets
url = https://github.com/misskey-dev/assets.git

View File

@ -7,6 +7,24 @@
--> -->
## 12.90.0 (2021/09/04)
### Improvements
- 藍モード、および藍ウィジェット
- クライアントに藍ちゃんを召喚することができるようになりました。
- URLからのアップロード, APの添付ファイル, 外部ファイルのプロキシ等では、Privateアドレス等へのリクエストは拒否されるようになりました。
- developmentで動作している場合は、この制限は適用されません。
- Proxy使用時には、この制限は適用されません。
Proxy使用時に同等の制限を行いたい場合は、Proxy側で設定を行う必要があります。
- `default.yml`にて`allowedPrivateNetworks`にCIDRを追加することにより、宛先ネットワークを指定してこの制限から除外することが出来ます。
- アップロード, ダウンロード出来るファイルサイズにハードリミットが適用されるようになりました。(約250MB)
- `default.yml`にて`maxFileSize`を変更することにより、制限値を変更することが出来ます。
### Bugfixes
- 管理者が最初にサインアップするページでログインされないのを修正
- CWを維持する設定を復活
- クライアントの表示を修正
## 12.89.2 (2021/08/24) ## 12.89.2 (2021/08/24)
### Bugfixes ### Bugfixes

View File

@ -1,22 +1,41 @@
# Contribution guide # Contribution guide
:v: Thanks for your contributions :v: **[✨ English version available](/docs/CONTRIBUTING.en.md)**
## When you contribute... プロジェクトに興味を持っていただきありがとうございます! このドキュメントでは、プロジェクトに貢献する際に必要な情報をまとめています。
- 任意のIssueについて、せっかく実装してくださっても、実装方法や設計の認識が揃ってないとマージできない/しないことになりかねないので、初めにそのIssue上で着手することを宣言し、必要に応じて他メンバーと実装方法や設計のすり合わせを行ってください。宣言することは作業が他の人と被るのを防止する効果もあります。
- 設計に迷った時はプロジェクトリーダーの判断を仰いでください。
- 時間や優先度の都合上、提出してくださったPRが長期間放置されることもありますがご理解ください。
- 温度感高めで見てほしいものは責付いてください。
## Issues ## Issues
Feature suggestions and bug reports are filed in https://github.com/misskey-dev/misskey/issues . Issueを作成する前に、以下をご確認ください:
- 重複を防ぐため、既に同様の内容のIssueが作成されていないか検索してから新しいIssueを作ってください。
- Issueを質問に使わないでください。
- Issueは、要望、提案、問題の報告にのみ使用してください。
- 質問は、[Misskey Forum](https://forum.misskey.io/)や[Discord](https://discord.gg/Wp8gVStHW3)でお願いします。
* Please search existing issues to avoid duplication. If your issue is already filed, please add your reaction or comment to the existing one. ## 実装をする前に
* If you have multiple independent issues, please submit them separately. 機能追加やバグ修正をしたいときは、まずIssueで設計、方針をレビューしてもらいましょう(無い場合は作ってください)。このステップがないと、せっかく実装してもPRがマージされない可能性が高くなります。
## Branches また、実装に取り掛かるときは当該Issueに自分をアサインしてください(自分でできない場合は他メンバーに自分をアサインしてもらうようお願いしてください)。
* **master** branch is tracking the latest release and used for production purposes. 自分が実装するという意思表示をすることで、作業がバッティングするのを防ぎます。
* **develop** branch is where we work for the next release.
* **l10n_develop** branch is reserved for localization management. ## PRの作成
PRありがとうございます PRを作成する前に、以下をご確認ください:
- 可能であればタイトルに、以下で示すようなPRの種類が分かるキーワードをプリフィクスしてください。
- `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` など
- また、PRの粒度が適切であることを確認してください。ひとつのPRに複数の種類の変更や関心を含めることは避けてください。
- このPRによって解決されるIssueがある場合は、そのIssueへの参照を本文内に含めてください。
- [`CHANGELOG.md`](/CHANGELOG.md)に変更点を追記してください。リファクタリングなど、利用者に影響を与えない変更についてはこの限りではありません。
- この変更により新たに作成、もしくは更新すべきドキュメントがないか確認してください。
- 機能追加やバグ修正をした場合は、可能であればテストケースを追加してください。
- テスト、Lintが通っていることを予め確認してください。
- `npm run test`、`npm run lint`でぞれぞれ実施可能です。[詳細](#testing)
- UIに変更がある場合はスクリーンショットを本文内に添付してください。
ご協力ありがとうございます🤗
## ブランチ
- **`master`** branch is tracking the latest release and used for production purposes.
- **`develop`** branch is where we work for the next release.
- PRを作成するときは、基本的にこのブランチに向けてください。
- **`l10n_develop`** branch is reserved for localization management.
## Localization (l10n) ## Localization (l10n)
Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management. Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management.
@ -32,14 +51,22 @@ If your language is not listed in Crowdin, please open an issue.
* Documents for instance admins are located in [`/docs`](/docs). * Documents for instance admins are located in [`/docs`](/docs).
* Documents for end users are located in [`/src/docs`](/src/docs). * Documents for end users are located in [`/src/docs`](/src/docs).
## Test ## Testing
* Test codes are located in [`/test`](/test). - Test codes are located in [`/test`](/test).
### Run specify test ### Run test
```
npm run test
```
#### Run specify test
``` ```
npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" npx mocha test/foo.ts --require ts-node/register npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" npx mocha test/foo.ts --require ts-node/register
``` ```
### e2e tests
TODO
## Continuous integration ## Continuous integration
Misskey uses GitHub Actions for executing automated tests. Misskey uses GitHub Actions for executing automated tests.
Configuration files are located in [`/.github/workflows`](/.github/workflows). Configuration files are located in [`/.github/workflows`](/.github/workflows).
@ -55,116 +82,11 @@ Configuration files are located in [`/.github/workflows`](/.github/workflows).
If you have no experience on 3D modeling, we suggest to use the free 3DCG software [Blender](https://www.blender.org/). If you have no experience on 3D modeling, we suggest to use the free 3DCG software [Blender](https://www.blender.org/).
You can find information on glTF 2.0 at [glTF 2.0 — Blender Manual]( https://docs.blender.org/manual/en/dev/addons/io_scene_gltf2.html). You can find information on glTF 2.0 at [glTF 2.0 — Blender Manual]( https://docs.blender.org/manual/en/dev/addons/io_scene_gltf2.html).
## FAQ ## Notes
### How to resolve conflictions occurred at yarn.lock? ### How to resolve conflictions occurred at yarn.lock?
Just execute `yarn` to fix it. Just execute `yarn` to fix it.
## Glossary
### AP
Stands for _**A**ctivity**P**ub_.
### MFM
Stands for _**M**isskey **F**lavored **M**arkdown_.
### Mk
Stands for _**M**iss**k**ey_.
### SW
Stands for _**S**ervice**W**orker_.
### Nyaize
Convert な(na) to にゃ(nya)
#### Denyaize
Revert Nyaize
## TypeScript Coding Style
### Do not omit semicolons
This is to avoid Automatic Semicolon Insertion (ASI) hazard.
Ref:
* https://www.ecma-international.org/ecma-262/#sec-automatic-semicolon-insertion
* https://github.com/tc39/ecma262/pull/1062
### Do not omit curly brackets
Bad:
``` ts
if (foo)
bar;
else
baz;
```
Good:
``` ts
if (foo) {
bar;
} else {
baz;
}
```
As a special case, you can omit the curly brackets if
* the body of the `if`-statement have only one statement and,
* the `if`-statement does not have `else`-clause.
Good:
``` ts
if (foo) bar;
```
Make sure that the condition and the body statement are on the same line.
### Do not use `==` when it can simply be replaced with `===`.
🥰
### Use only boolean (or null related) values in the condition of an `if`-statement.
Bad:
``` ts
if (foo.length)
```
Good:
``` ts
if (foo.length > 0)
```
### Do not use `export default`
This is because the current language support does not work well with `export default`.
Ref:
* https://basarat.gitbooks.io/typescript/docs/tips/defaultIsBad.html
* https://gfx.hatenablog.com/entry/2017/11/24/135343
Bad:
``` ts
export default function(foo: string): string {
```
Good:
``` ts
export function something(foo: string): string {
```
## Directory structure
```
src ... Source code
@types ... Type definitions
prelude ... Independence utils for coding JavaScript without side effects
misc ... Independence utils for Misskey without side effects
service ... Common functions with side effects
queue ... Job queues and Jobs
server ... Web Server
client ... Client
mfm ... MFM
test ... Test code
```
## Notes
### placeholder ### placeholder
SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない
例えば 例えば

View File

@ -20,6 +20,7 @@ RUN apk add --no-cache \
python3 \ python3 \
zlib-dev zlib-dev
RUN git submodule update --init
COPY package.json yarn.lock .yarnrc ./ COPY package.json yarn.lock .yarnrc ./
RUN yarn install RUN yarn install
COPY . ./ COPY . ./

66
docs/CONTRIBUTING.en.md Normal file
View File

@ -0,0 +1,66 @@
# Contribution guide
:v: Thanks for your contributions :v:
** Important:** This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.**
Also, you might receive comments on your Issue/PR in Japanese, but you do not need to reply to them in Japanese as well.\
The accuracy of translation into Japanese is not high, so it will be easier for us to understand if you write it in the original language.
It will also allow the reader to use the translation tool of their preference if necessary.
## Issues
Before creating an issue, please check the following:
- To avoid duplication, please search for similar issues before creating a new issue.
- Do not use Issues as a question.
- Issues should only be used to feature requests, suggestions, and report problems.
- Please ask questions in the [Misskey Forum](https://forum.misskey.io/) or [Discord](https://discord.gg/Wp8gVStHW3).
## Before implementation
When you want to add a feature or fix a bug, first have the design and policy reviewed in an Issue (if it is not there, please make one). Without this step, there is a high possibility that the PR will not be merged even if it is implemented.
Also, when you start implementation, assign yourself to the Issue (if you cannot do it yourself, ask another member to assign you). By expressing your intention to work the Issue, you can prevent conflicts in the work.
## Well-known branches
- **`master`** branch is tracking the latest release and used for production purposes.
- **`develop`** branch is where we work for the next release.
- When you create a PR, basically target it to this branch.
- **`l10n_develop`** branch is reserved for localization management.
## Creating a PR
Thank you for your PR! Before creating a PR, please check the following:
- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below.
- `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc
- Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR.
- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text.
- Please add the summary of the changes to [`CHANGELOG.md`](/CHANGELOG.md). However, this is not necessary for changes that do not affect the users, such as refactoring.
- Check if there are any documents that need to be created or updated due to this change.
- If you have added a feature or fixed a bug, please add a test case if possible.
- Please make sure that tests and Lint are passed in advance.
- You can run it with `npm run test` and `npm run lint`. [See more info](#testing)
- If this PR includes UI changes, please attach a screenshot in the text.
Thanks for your cooperation 🤗
## Localization (l10n)
Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management.
You can improve our translations with your Crowdin account.
Your changes in Crowdin are automatically submitted as a PR (with the title "New Crowdin translations") to the repository.
The owner [@syuilo](https://github.com/syuilo) merges the PR into the develop branch before the next release.
If your language is not listed in Crowdin, please open an issue.
![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg)
## Testing
- Test codes are located in [`/test`](/test).
### Run test
```
npm run test
```
#### Run specify test
```
npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" npx mocha test/foo.ts --require ts-node/register
```
### e2e tests
TODO

View File

@ -83,10 +83,11 @@ Just `docker-compose up -d`. GLHF!
1. `git stash` 1. `git stash`
2. `git checkout master` 2. `git checkout master`
3. `git pull` 3. `git pull`
4. `git stash pop` 4. `git submodule update --init`
5. `docker-compose build` 5. `git stash pop`
6. Check [ChangeLog](../CHANGELOG.md) for migration information 6. `docker-compose build`
7. `docker-compose stop && docker-compose up -d` 7. Check [ChangeLog](../CHANGELOG.md) for migration information
8. `docker-compose stop && docker-compose up -d`
### How to execute [cli commands](manage.en.md): ### How to execute [cli commands](manage.en.md):
`docker-compose run --rm web node built/tools/mark-admin @example` `docker-compose run --rm web node built/tools/mark-admin @example`

View File

@ -50,10 +50,11 @@ Utilisez la commande `docker-compose up -d`. GLHF!
1. `git stash` 1. `git stash`
2. `git checkout master` 2. `git checkout master`
3. `git pull` 3. `git pull`
4. `git stash pop` 4. `git submodule update --init`
5. `docker-compose build` 5. `git stash pop`
6. Consultez le [ChangeLog](../CHANGELOG.md) pour avoir les éventuelles informations de migration 6. `docker-compose build`
7. `docker-compose stop && docker-compose up -d` 7. Consultez le [ChangeLog](../CHANGELOG.md) pour avoir les éventuelles informations de migration
8. `docker-compose stop && docker-compose up -d`
### Comment exécuter des [commandes](manage.fr.md) ### Comment exécuter des [commandes](manage.fr.md)
`docker-compose run --rm web node built/tools/mark-admin @example` `docker-compose run --rm web node built/tools/mark-admin @example`

View File

@ -83,10 +83,11 @@ docker-compose run --rm web yarn run init
1. `git stash` 1. `git stash`
2. `git checkout master` 2. `git checkout master`
3. `git pull` 3. `git pull`
4. `git stash pop` 4. `git submodule update --init`
5. `docker-compose build` 5. `git stash pop`
6. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する 6. `docker-compose build`
7. `docker-compose stop && docker-compose up -d` 7. [ChangeLog](../CHANGELOG.md)でマイグレーション情報を確認する
8. `docker-compose stop && docker-compose up -d`
### cliコマンドを実行する方法: ### cliコマンドを実行する方法:

View File

@ -83,10 +83,11 @@ docker-compose run --rm web yarn run init
1. `git stash` 1. `git stash`
2. `git checkout master` 2. `git checkout master`
3. `git pull` 3. `git pull`
4. `git stash pop` 4. `git submodule update --init`
5. `docker-compose build` 5. `git stash pop`
6. 检查 [更新日志](../CHANGELOG.md) 以获取升级迁移信息。 6. `docker-compose build`
7. `docker-compose stop && docker-compose up -d` 7. 检查 [更新日志](../CHANGELOG.md) 以获取升级迁移信息。
8. `docker-compose stop && docker-compose up -d`
### 如何执行 [控制台指令](manage.zh.md): ### 如何执行 [控制台指令](manage.zh.md):
`docker-compose run --rm web node built/tools/mark-admin @example` `docker-compose run --rm web node built/tools/mark-admin @example`

View File

@ -131,11 +131,12 @@ You can check if the service is running with `systemctl status misskey`.
### How to update your Misskey server to the latest version ### How to update your Misskey server to the latest version
1. `git checkout master` 1. `git checkout master`
2. `git pull` 2. `git pull`
3. `yarn install` 3. `git submodule update --init`
4. `NODE_ENV=production yarn build` 4. `yarn install`
5. `yarn migrate` 5. `NODE_ENV=production yarn build`
6. Restart your Misskey process to apply changes 6. `yarn migrate`
7. Enjoy 7. Restart your Misskey process to apply changes
8. Enjoy
If you encounter any problems with updating, please try the following: If you encounter any problems with updating, please try the following:
1. `yarn clean` or `yarn cleanall` 1. `yarn clean` or `yarn cleanall`

View File

@ -126,9 +126,10 @@ Vous pouvez vérifier si le service a démarré en utilisant la commande `system
### Méthode de mise à jour vers la plus récente version de Misskey ### Méthode de mise à jour vers la plus récente version de Misskey
1. `git checkout master` 1. `git checkout master`
2. `git pull` 2. `git pull`
3. `yarn install` 3. `git submodule update --init`
4. `NODE_ENV=production yarn build` 4. `yarn install`
5. `yarn migrate` 5. `NODE_ENV=production yarn build`
6. `yarn migrate`
---------------------------------------------------------------- ----------------------------------------------------------------

View File

@ -133,9 +133,10 @@ yarn run init
### Misskeyを最新バージョンにアップデートする方法: ### Misskeyを最新バージョンにアップデートする方法:
1. `git checkout master` 1. `git checkout master`
2. `git pull` 2. `git pull`
3. `yarn install` 3. `git submodule update --init`
4. `NODE_ENV=production yarn build` 4. `yarn install`
5. `yarn migrate` 5. `NODE_ENV=production yarn build`
6. `yarn migrate`
なにか問題が発生した場合は、`yarn clean`または`yarn cleanall`すると直る場合があります。 なにか問題が発生した場合は、`yarn clean`または`yarn cleanall`すると直る場合があります。

View File

@ -131,11 +131,12 @@ yarn run init
### 如何将您的 Misskey 服务器升级至最新版本 ### 如何将您的 Misskey 服务器升级至最新版本
1. `git checkout master` 1. `git checkout master`
2. `git pull` 2. `git pull`
3. `yarn install` 3. `git submodule update --init`
4. `NODE_ENV=production yarn build` 4. `yarn install`
5. `yarn migrate` 5. `NODE_ENV=production yarn build`
6. 重启您的 Misskey 进程来应用改变。 6. `yarn migrate`
7. 尽情享受吧! 7. 重启您的 Misskey 进程来应用改变。
8. 尽情享受吧!
如果您在更新时遇到任何问题,请尝试以下操作: 如果您在更新时遇到任何问题,请尝试以下操作:
1. `yarn clean` 或是 `yarn cleanall` 1. `yarn clean` 或是 `yarn cleanall`

View File

@ -779,6 +779,12 @@ translate: "Übersetzen"
translatedFrom: "Aus {x} übersetzt" translatedFrom: "Aus {x} übersetzt"
accountDeletionInProgress: "Löschung des Benutzerkontos momentan in Bearbeitung" accountDeletionInProgress: "Löschung des Benutzerkontos momentan in Bearbeitung"
usernameInfo: "Ein Name, durch den dein Benutzerkonto auf diesem Server identifiziert werden kann. Du kannst das Alphabet (a~z, A~Z), Ziffern (0~9) oder Unterstriche (_) verwenden. Benutzernamen können später nicht geändert werden." usernameInfo: "Ein Name, durch den dein Benutzerkonto auf diesem Server identifiziert werden kann. Du kannst das Alphabet (a~z, A~Z), Ziffern (0~9) oder Unterstriche (_) verwenden. Benutzernamen können später nicht geändert werden."
aiChanMode: "Ai Modus"
keepCw: "Inhaltswarnung beibehalten"
pubSub: "Pub/Sub Benutzerkonten"
lastCommunication: "Letzte Kommunikation"
resolved: "Gelöst"
unresolved: "Ungelöst"
_accountDelete: _accountDelete:
accountDelete: "Benutzerkonto löschen" accountDelete: "Benutzerkonto löschen"
mayTakeTime: "Da die Löschung eines Benutzerkontos ein aufwendiger Prozess ist, kann dessen Dauer davon abhängen, wie viel Inhalt in diesem erstellt wurde oder wie viele Dateien hochgeladen wurden." mayTakeTime: "Da die Löschung eines Benutzerkontos ein aufwendiger Prozess ist, kann dessen Dauer davon abhängen, wie viel Inhalt in diesem erstellt wurde oder wie viele Dateien hochgeladen wurden."
@ -1159,6 +1165,7 @@ _widgets:
jobQueue: "Job-Warteschlange" jobQueue: "Job-Warteschlange"
serverMetric: "Servermetriken" serverMetric: "Servermetriken"
aiscript: "AiScript-Konsole" aiscript: "AiScript-Konsole"
aichan: "Ai"
_cw: _cw:
hide: "Verbergen" hide: "Verbergen"
show: "Inhalt anzeigen" show: "Inhalt anzeigen"

View File

@ -779,6 +779,12 @@ translate: "Translate"
translatedFrom: "Translated from {x}" translatedFrom: "Translated from {x}"
accountDeletionInProgress: "Account deletion is currently in progress" accountDeletionInProgress: "Account deletion is currently in progress"
usernameInfo: "A name that identifies your account from others on this server. You can use the alphabet (a~z, A~Z), digits (0~9) or underscores (_). Usernames can not be changed later." usernameInfo: "A name that identifies your account from others on this server. You can use the alphabet (a~z, A~Z), digits (0~9) or underscores (_). Usernames can not be changed later."
aiChanMode: "Ai Mode"
keepCw: "Keep Content Warning"
pubSub: "Pub/Sub Accounts"
lastCommunication: "Last communication"
resolved: "Resolved"
unresolved: "Unresolved"
_accountDelete: _accountDelete:
accountDelete: "Delete Account" accountDelete: "Delete Account"
mayTakeTime: "As account deletion is a resource-heavy process, it may take some time to complete depending on how much content you have created and how many files you have uploaded." mayTakeTime: "As account deletion is a resource-heavy process, it may take some time to complete depending on how much content you have created and how many files you have uploaded."
@ -1093,7 +1099,7 @@ _2fa:
_permissions: _permissions:
"read:account": "View your account information" "read:account": "View your account information"
"write:account": "Edit your account information" "write:account": "Edit your account information"
"read:blocks": "View the list of people you blocked" "read:blocks": "View your list of blocked users"
"write:blocks": "Edit your list of blocked users" "write:blocks": "Edit your list of blocked users"
"read:drive": "Access your drive files and folders" "read:drive": "Access your drive files and folders"
"write:drive": "Edit or delete your drive files and folders" "write:drive": "Edit or delete your drive files and folders"
@ -1159,6 +1165,7 @@ _widgets:
jobQueue: "Job Queue" jobQueue: "Job Queue"
serverMetric: "Server metrics" serverMetric: "Server metrics"
aiscript: "AiScript console" aiscript: "AiScript console"
aichan: "Ai"
_cw: _cw:
hide: "Hide" hide: "Hide"
show: "Show content" show: "Show content"

View File

@ -1,8 +1,8 @@
--- ---
_lang_: "Esperanto" _lang_: "Esperanto"
headlineMisskey: "Reto ligata per notoj" headlineMisskey: "Reto ligata per notoj"
introMisskey: "Bonvenon! Misskey estas malfermitkoda malcentraliza mikrobloga servo.\nKreu \"noto\"n por diskonigu tion ke nun okazas, aŭ por dissendu pri vi. 📡\nPer la funkcio \"reago\", vi ankaŭ povas rapide esprimi vian senton pri ĉies noto. 👍\nOni esploru novan mondon. 🚀" introMisskey: "Bonvenon! Misskey estas malfermitkoda malcentraliza mikrobloga servo.\nKreu \"noto\"n por diskonigu ke nun okazas, aŭ por dissendu pri vi. 📡\nPer la funkcio \"reago\", vi ankaŭ povas rapide esprimi vian senton pri ĉies noto. 👍\nEsploru novan mondon. 🚀"
monthAndDay: "{day}-a/{month}" monthAndDay: "{day}a/{month}"
search: "Serĉi" search: "Serĉi"
notifications: "Sciigoj" notifications: "Sciigoj"
username: "Uzantnomo" username: "Uzantnomo"
@ -16,36 +16,35 @@ enterUsername: "Entajpu uzantnomon"
renotedBy: "Renoto farita de {user}" renotedBy: "Renoto farita de {user}"
noNotes: "Neniu noto!" noNotes: "Neniu noto!"
noNotifications: "Vi ne havas sciigojn." noNotifications: "Vi ne havas sciigojn."
instance: "Ekzemplo" instance: "Nodo"
settings: "Agordoj" settings: "Agordoj"
basicSettings: "Ĝeneralaj agordoj" basicSettings: "Ĝeneralaj agordoj"
otherSettings: "Aliaj agordoj" otherSettings: "Aliaj agordoj"
openInWindow: "Malfermi en nova fenestro" openInWindow: "Malfermi en nova fenestro"
profile: "Profilo" profile: "Profilo"
timeline: "Templinio" timeline: "Templinio"
noAccountDescription: "Tiu uzanto ankoraŭ ne skribis biografieton" noAccountDescription: "Tiu uzanto ne skribis biografieton"
login: "Ensaluti" login: "Ensaluti"
loggingIn: "Ensalutado..." loggingIn: "Ensalutado..."
logout: "Elsaluti" logout: "Elsaluti"
signup: "Krei konton" signup: "Krei konton"
uploading: "Alŝutado..." uploading: "Alŝutado..."
save: "Konservi" save: "Konservi"
users: "Uzanto" users: "Uzantoj"
addUser: "Aldoni uzanton" addUser: "Aldoni uzanton"
favorite: "Preferi" favorite: "Preferi"
favorites: "Preferataj" favorites: "Preferataĵoj"
unfavorite: "Malpreferi" unfavorite: "Malpreferi"
favorited: "Aldonita al preferatoj" favorited: "Aldonita al preferataĵoj"
alreadyFavorited: "Jame aldonita al preferatoj" cantFavorite: "Ne aldonita al preferataĵoj"
cantFavorite: "Ne aldonita al preferatoj" pin: "Alpingli al la profilo"
pin: "Alpingli sur la profilo"
unpin: "Depingli" unpin: "Depingli"
copyContent: "Kopii enhavon" copyContent: "Kopii enhavon"
copyLink: "Kopii ligilon" copyLink: "Kopii ligilon"
delete: "Forviŝi" delete: "Forviŝi"
deleteAndEdit: "Forigi kaj redakti" deleteAndEdit: "Forviŝi kaj redakti"
deleteAndEditConfirm: "Ĉu vi certas, ke vi volas forigi kaj redakti la noton? Ankaŭ ĉiuj reagoj, renotoj, kaj respondoj al ĝi foriĝos." deleteAndEditConfirm: "Ĉu vi certas, ke vi volas forigi kaj redakti la noton? Ankaŭ ĉiuj reagoj, renotoj, kaj respondoj al ĝi foriĝos."
addToList: "Aldoni al la listo" addToList: "Aldoni al listo"
sendMessage: "Sendi mesaĝon" sendMessage: "Sendi mesaĝon"
copyUsername: "Kopii uzantnomon" copyUsername: "Kopii uzantnomon"
searchUser: "Serĉi uzanton" searchUser: "Serĉi uzanton"
@ -57,13 +56,13 @@ receiveFollowRequest: "Peto de sekvado estas ricevita"
followRequestAccepted: "La peto de sekvado akceptita" followRequestAccepted: "La peto de sekvado akceptita"
mention: "Mencioj" mention: "Mencioj"
mentions: "Al vi" mentions: "Al vi"
directNotes: "Rektaj notoj" directNotes: "Notoj rektaj"
importAndExport: "Importi/eksporti" importAndExport: "Importi/eksporti"
import: "Importi" import: "Importi"
export: "Eksporti" export: "Eksporti"
files: "Dosieroj" files: "Dosieroj"
download: "Elŝuti" download: "Elŝuti"
driveFileDeleteConfirm: "Ĉu vi certas, ke vi volas forviŝi la dosieron \"{name}\"? Ankaŭ notoj kiu enhavas ĝin forviŝiĝos." driveFileDeleteConfirm: "Ĉu vi certas, ke vi volas forviŝi la dosieron \"{name}\"? Ankaŭ notoj kiuj enhavas ĝin forviŝiĝos."
unfollowConfirm: "Ĉu vi certas, ke vi volas ne plu sekvi {name}'(o)n?" unfollowConfirm: "Ĉu vi certas, ke vi volas ne plu sekvi {name}'(o)n?"
lists: "Listoj" lists: "Listoj"
noLists: "Neniu listo" noLists: "Neniu listo"
@ -86,17 +85,21 @@ unfollow: "Malsekvi"
enterEmoji: "Entajpu emoĵion" enterEmoji: "Entajpu emoĵion"
renote: "Fari renoton" renote: "Fari renoton"
unrenote: "Malfari renoton" unrenote: "Malfari renoton"
renoted: "Renoton fariĝis." renoted: "Renoto fariĝis."
cantRenote: "Tiu noto ne estas renototebla." cantRenote: "Tiu noto ne estas resendebla."
cantReRenote: "Oni ne povas fari renoton kiu enhavas renoto." cantReRenote: "Renotoj ne estas renotebla."
quote: "Citi" quote: "Citi"
pinnedNote: "Pinglita noto" pinnedNote: "Alpinglita noto"
pinned: "Alpingli sur la profilo" pinned: "Alpingli al la profilo"
you: "Vi" you: "Vi"
clickToShow: "Klaku por malkaŝu" clickToShow: "Klaku por malkaŝu"
sensitive: "Enhavo ne estas deca por laborejo (NSFW)" sensitive: "Enhavo ne estas deca por laborejo (NSFW)"
add: "Aldoni" add: "Aldoni"
reaction: "Reagoj" reaction: "Reagoj"
rememberNoteVisibility: "Rememori la videblecon de la noto laste sendita"
attachCancel: "Deigi aldonaĵon"
markAsSensitive: "Troviĝi NSFW"
unmarkAsSensitive: "Ne troviĝi NSFW"
enterFileName: "Entajpu nomon de dosiero" enterFileName: "Entajpu nomon de dosiero"
mute: "Silentigi" mute: "Silentigi"
unmute: "Malsilentigi" unmute: "Malsilentigi"
@ -119,12 +122,12 @@ emojis: "Emoĵio"
emojiName: "Nomo de emoĵio" emojiName: "Nomo de emoĵio"
emojiUrl: "URL de la emoĵio" emojiUrl: "URL de la emoĵio"
addEmoji: "Aldoni emoĵion" addEmoji: "Aldoni emoĵion"
settingGuide: "Rekomendaj agordoj" settingGuide: "Agordaj rekomendoj"
cacheRemoteFiles: "Havi staplon de transaj dosieroj" cacheRemoteFiles: "Havi staplon de transaj dosieroj"
flagAsBot: "Tiu uzanto estas roboto" flagAsBot: "Agordo por robota uzanto"
flagAsCat: "Tiu uzanto estas kato" flagAsCat: "Agordo de katiĝa uzanto"
addAccount: "Aldoni konton" addAccount: "Aldoni konton"
showOnRemote: "Vidi sur la fora ekzemplo" showOnRemote: "Vidi sur la fora nodo"
general: "Ĝenerala" general: "Ĝenerala"
wallpaper: "Ekranfonoj" wallpaper: "Ekranfonoj"
setWallpaper: "Apliki ekranfonon" setWallpaper: "Apliki ekranfonon"
@ -135,35 +138,36 @@ followConfirm: "Ĉu vi certas ke vi volas sekvi {name}'(o)n?"
selectUser: "Elekti uzanton" selectUser: "Elekti uzanton"
annotation: "Komentarioj" annotation: "Komentarioj"
federation: "Kunfederaĵo" federation: "Kunfederaĵo"
instances: "Ekzemplo" instances: "Nodo"
perHour: "Po horo" perHour: "Po horo"
perDay: "Po tago" perDay: "Po tago"
blockThisInstance: "Bloki tiu ekzemplo" blockThisInstance: "Bloki tiun nodon"
version: "Versio" version: "Versio"
withNFiles: "{n} dosiero(j)" withNFiles: "{n} dosiero(j)"
disk: "Diskilo" disk: "Diskilo"
instanceInfo: "Informo pri la ekzemplo" instanceInfo: "Informoj pri la nodo"
clearCachedFiles: "Malplenigi la staplon" clearCachedFiles: "Malplenigi la staplon"
clearCachedFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn transajn dosierojn en la staplo?" clearCachedFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn transajn dosierojn en la staplo?"
blockedInstances: "Blokataj ekzemploj" blockedInstances: "Blokitaj nodoj"
muteAndBlock: "Silentigatoj kaj blokatoj" muteAndBlock: "Silentigitoj kaj blokitoj"
mutedUsers: "Silentigataj uzantoj" mutedUsers: "Silentigitaj uzantoj"
blockedUsers: "Blokataj uzantoj" blockedUsers: "Blokitaj uzantoj"
noUsers: "Sen uzantoj" noUsers: "Sen uzantoj"
editProfile: "Redakti profilon" editProfile: "Redakti profilon"
noteDeleteConfirm: "Ĉu vi certas ke vi volas forviŝi la noton?" noteDeleteConfirm: "Ĉu vi certas ke vi volas forviŝi la noton?"
pinLimitExceeded: "Vi povas alpingli ne pli noton." pinLimitExceeded: "Vi povas alpingli ne pli noton."
processing: "Traktado..." processing: "Prilaborado..."
noCustomEmojis: "Neniu emoĵio" noCustomEmojis: "Neniu emoĵio"
federating: "Kunfederado" federating: "Nun kunfederanta"
blocked: "Blokata" blocked: "Blokita"
suspended: "Suspendita"
all: "Ĉiuj" all: "Ĉiuj"
subscribing: "Abonita" subscribing: "Abonata"
publishing: "Dissendado" publishing: "Al kiu dissendas"
notResponding: "Alvokato ne disponeblas" notResponding: "Alvokato ne disponeblas"
instanceFollowing: "Sekvatoj el la ekzemplo" instanceFollowing: "Sekvatoj el la nodo"
instanceFollowers: "Sekvantoj el la ekzemplo" instanceFollowers: "Sekvantoj el la nodo"
instanceUsers: "Uzantoj de la ekzemplo" instanceUsers: "Uzantoj de ĉi tiu nodo"
changePassword: "Ŝanĝi pasvorton" changePassword: "Ŝanĝi pasvorton"
security: "Sekureco" security: "Sekureco"
currentPassword: "Aktuala pasvorto" currentPassword: "Aktuala pasvorto"
@ -195,8 +199,8 @@ startMessaging: "Komenci babiladon"
nUsersRead: "Legita de {n} homoj" nUsersRead: "Legita de {n} homoj"
tos: "Kondiĉoj de uzado" tos: "Kondiĉoj de uzado"
start: "Komenciĝi" start: "Komenciĝi"
home: "Hejmo" home: "Hejma"
remoteUserCaution: "Ĉi tiu Infomoj estas ne tute ekzakta pro distanca uzanto." remoteUserCaution: "Tiu infomoj estas ne tute ekzakta pro distanca uzanto."
activity: "Aktiveco" activity: "Aktiveco"
images: "Bildoj" images: "Bildoj"
birthday: "Naskiĝdato" birthday: "Naskiĝdato"
@ -233,14 +237,14 @@ watch: "Observi"
unwatch: "Malobservi" unwatch: "Malobservi"
accept: "Permesi" accept: "Permesi"
normal: "Normala" normal: "Normala"
instanceName: "Nomo de la ekzemplo" instanceName: "Nomo de la nodo"
maintainerName: "Nomo de la administranto" maintainerName: "Nomo de la administranto"
maintainerEmail: "Retpoŝto de la administranto" maintainerEmail: "Retpoŝto de la administranto"
tosUrl: "URL de kondiĉoj de uzado" tosUrl: "URL de kondiĉoj de uzado"
thisYear: "Ĉi-jare" thisYear: "Ĉi-jare"
thisMonth: "Ĉi-monate" thisMonth: "Ĉi-monate"
today: "Hodiaŭ" today: "Hodiaŭ"
dayX: "{day}-a" dayX: "{day}a"
monthX: "{month}" monthX: "{month}"
yearX: "La jaro {year}" yearX: "La jaro {year}"
pages: "Paĝoj" pages: "Paĝoj"
@ -257,26 +261,32 @@ backgroundImageUrl: "URL de fona bildo"
basicInfo: "Baza informo" basicInfo: "Baza informo"
pinnedUsers: "Alpinglita uzanto" pinnedUsers: "Alpinglita uzanto"
pinnedPages: "Alpinglitaj paĝoj" pinnedPages: "Alpinglitaj paĝoj"
pinnedNotes: "Pinglita noto" pinnedNotes: "Alpinglita noto"
antennas: "Antenoj" antennas: "Antenoj"
manageAntennas: "Administri antenojn" manageAntennas: "Administri antenojn"
name: "Nomo" name: "Nomo"
notifyAntenna: "Oni sciigos novajn notojn"
withFileAntenna: "Nur kun aldonaĵo" withFileAntenna: "Nur kun aldonaĵo"
withReplies: "Inkluzive respondoj" withReplies: "Inkluzive respondoj"
connectedTo: "Sekva konto estas konektita"
notesAndReplies: "Kun respondoj" notesAndReplies: "Kun respondoj"
withFiles: "Kun aldonaĵo" withFiles: "Kun aldonaĵo"
silence: "Mutigi" silence: "Mutigi"
silenceConfirm: "Ĉu vi certas ke vi volas mutigi la uzanton?" silenceConfirm: "Ĉu vi certas ke vi volas mutigi la uzanton?"
unsilence: "Malmutigi" unsilence: "Malmutigi"
unsilenceConfirm: "Ĉu vi certas ke vi volas malmutigi la uzanton?" unsilenceConfirm: "Ĉu vi certas ke vi volas malmutigi la uzanton?"
recentlyUpdatedUsers: "Uzantoj kiu lastatempe faris noton" popularUsers: "Popularaj uzantoj"
recentlyRegisteredUsers: "Nove aniĝintaj uzantoj" recentlyUpdatedUsers: "Uzantoj kiuj lastatempe sendis noton"
recentlyRegisteredUsers: "Novaliĝintaj uzantoj"
exploreUsersCount: "Tiuj estas {count} uzantoj"
exploreFediverse: "Esplori la Fediverson"
popularTags: "Popularaj kradvortoj" popularTags: "Popularaj kradvortoj"
userList: "Listoj" userList: "Listoj"
about: "Informoj" about: "Informoj"
aboutMisskey: "Pri Misskey" aboutMisskey: "Pri Misskey"
administrator: "Administranto" administrator: "Administranto"
moderator: "Moderigisto" moderator: "Kontrolisto"
nUsersMentioned: "{n} uzanto(j) menciis"
securityKey: "Sekureca ŝlosilo" securityKey: "Sekureca ŝlosilo"
securityKeyName: "Nomo de la ŝlosilo" securityKeyName: "Nomo de la ŝlosilo"
lastUsed: "Plej malnove uzita" lastUsed: "Plej malnove uzita"
@ -294,14 +304,14 @@ groups: "Grupoj"
createGroup: "Krei grupon" createGroup: "Krei grupon"
groupName: "Grupa nomo" groupName: "Grupa nomo"
members: "Membroj" members: "Membroj"
messagingWithUser: "Mesaĝado kun uzanto" messagingWithUser: "Babili private"
messagingWithGroup: "Mesaĝado kun grupo" messagingWithGroup: "Babili grupe"
title: "Titolo" title: "Titolo"
text: "Teksto" text: "Teksto"
enable: "Ebligi" enable: "Ebligi"
next: "Sekve" next: "Sekve"
noteOf: "Noto de {user}" noteOf: "Noto de {user}"
noMessagesYet: "Neniu mesaĝo" noMessagesYet: "Ankoraŭ neniu mesaĝo"
newMessageExists: "Vi ricevis novan mesaĝon." newMessageExists: "Vi ricevis novan mesaĝon."
onlyOneFileCanBeAttached: "Vi povas aldoni nur unu dosieron po unu mesaĝo." onlyOneFileCanBeAttached: "Vi povas aldoni nur unu dosieron po unu mesaĝo."
invitationCode: "Kodo de invito" invitationCode: "Kodo de invito"
@ -331,19 +341,26 @@ objectStorageRegion: "Regiono"
objectStorageUseSSL: "Oni uzas SSL" objectStorageUseSSL: "Oni uzas SSL"
serverLogs: "Servila protokolo" serverLogs: "Servila protokolo"
deleteAll: "Forviŝi ĉiujn" deleteAll: "Forviŝi ĉiujn"
newNoteRecived: "Jen estas novaj notoj"
sounds: "Sonoj" sounds: "Sonoj"
listen: "Aŭdi" listen: "Aŭdi"
none: "Neniu" none: "Neniu"
showInPage: "Vidi en paĝo" showInPage: "Vidi en paĝo"
deleteAllFiles: "Forviŝi ĉiujn dosierojn" deleteAllFiles: "Forviŝi ĉiujn dosierojn"
deleteAllFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn viajn dosierojn?" deleteAllFilesConfirm: "Ĉu vi certas, ke vi volas forviŝi ĉiujn viajn dosierojn?"
userSilenced: "Tiu uzanto estas mutigata." userSuspended: "Ĉi tiu uzanto estas flostigita."
userSilenced: "Ĉi tiu uzanto estas mutigita."
menu: "Menuo" menu: "Menuo"
deletedNote: "Forviŝita noto" deletedNote: "Forviŝita noto"
invisibleNote: "Malpublika noto" invisibleNote: "Malpublika noto"
visibility: "Videbleco"
poll: "Balotujo" poll: "Balotujo"
useCw: "Kaŝi enhavo" useCw: "Kaŝi enhavo"
enablePlayer: "Vidi videon"
disablePlayer: "Fermi videon"
themeEditor: "Redaktilo de koloraroj" themeEditor: "Redaktilo de koloraroj"
description: "Priskribe"
describeFile: "Priskribi la bildon"
author: "Aŭtoro" author: "Aŭtoro"
manage: "Administro" manage: "Administro"
plugins: "Kromaĵoj" plugins: "Kromaĵoj"
@ -358,8 +375,9 @@ smtpConfig: "Agordoj de la servilo SMTP"
smtpPort: "Pordo" smtpPort: "Pordo"
smtpUser: "Uzantnomo" smtpUser: "Uzantnomo"
smtpPass: "Pasvorto" smtpPass: "Pasvorto"
wordMute: "Silentigo de vortoj" wordMute: "Silentigi specifajn vortojn"
userSaysSomething: "{name} parolis ion" userSaysSomething: "{name} parolis ion"
makeActive: "Aktivigi"
display: "Vidi" display: "Vidi"
copy: "Kopii" copy: "Kopii"
database: "Datumbazo" database: "Datumbazo"
@ -396,7 +414,7 @@ makeExplorable: "Videbligi konton sur la paĝo \"Esplori\""
duplicate: "Duobligi" duplicate: "Duobligi"
left: "Maldekstra" left: "Maldekstra"
center: "Centra" center: "Centra"
showTitlebar: "Montri titola stango" showTitlebar: "Videbligi titolan stangon"
clearCache: "Malplenigi staplon" clearCache: "Malplenigi staplon"
onlineUsersCount: "{n} uzanto(j) estas surlinea" onlineUsersCount: "{n} uzanto(j) estas surlinea"
nUsers: "{n} uzanto(j)" nUsers: "{n} uzanto(j)"
@ -421,13 +439,15 @@ publish: "Publikigi"
inChannelSearch: "Serĉi en kanalo" inChannelSearch: "Serĉi en kanalo"
useReactionPickerForContextMenu: "Oni malfermas reago-elektilon per dekstro-kliki" useReactionPickerForContextMenu: "Oni malfermas reago-elektilon per dekstro-kliki"
typingUsers: "{users} estas entajpanta(j)..." typingUsers: "{users} estas entajpanta(j)..."
addDescription: "Priskribi"
info: "Informoj" info: "Informoj"
userInfo: "Informoj de uzanto"
unknown: "Nekonata" unknown: "Nekonata"
online: "Surkonektita" online: "Surkonektita"
offline: "Forkonektita" offline: "Forkonektita"
instanceBlocking: "Blokado de ekzemplo" instanceBlocking: "Blokado de nodoj"
selectAccount: "Elekti konton" selectAccount: "Elekti konton"
user: "Uzanto" user: "Uzantoj"
administration: "Administro" administration: "Administro"
accounts: "Kontoj" accounts: "Kontoj"
high: "Alta" high: "Alta"
@ -470,7 +490,7 @@ _aboutMisskey:
translation: "Traduki Misskey'on" translation: "Traduki Misskey'on"
patrons: "Mecenatoj" patrons: "Mecenatoj"
_mfm: _mfm:
dummy: "Misskey vastigas la mondon de Fediverso" dummy: "Misskey evoluigas la mondon de Fediverso"
mention: "Mencioj" mention: "Mencioj"
hashtag: "Kradvorto" hashtag: "Kradvorto"
url: "URL" url: "URL"
@ -504,11 +524,12 @@ _channel:
_menuDisplay: _menuDisplay:
hide: "Kaŝi" hide: "Kaŝi"
_wordMute: _wordMute:
muteWords: "Kaŝigitaj vortoj" muteWords: "Silentigitaj vortoj"
mutedNotes: "Silentigataj notoj" mutedNotes: "Silentigitaj notoj"
_theme: _theme:
manage: "Administri kolorarojn" manage: "Administri kolorarojn"
code: "Kodo de koloraro" code: "Kodo de koloraro"
description: "Priskribe"
darken: "Malbrileco" darken: "Malbrileco"
lighten: "Brileco" lighten: "Brileco"
keys: keys:
@ -516,9 +537,10 @@ _theme:
navBg: "Fono de flanka stango" navBg: "Fono de flanka stango"
hashtag: "Kradvorto" hashtag: "Kradvorto"
mention: "Mencioj" mention: "Mencioj"
renote: "Fari renoton" renote: "Renoto"
buttonBg: "Fono de butono" buttonBg: "Fono de butono"
driveFolderBg: "Fono de dosierujo de la disko" driveFolderBg: "Fono de dosierujo de la disko"
messageBg: "Fono de retbabilejo"
_sfx: _sfx:
note: "Nova noto" note: "Nova noto"
noteMy: "Mia noto" noteMy: "Mia noto"
@ -530,7 +552,7 @@ _sfx:
_ago: _ago:
future: "Futuro" future: "Futuro"
justNow: "Ĵus" justNow: "Ĵus"
secondsAgo: "Antaŭ {n} sekundoj" secondsAgo: "Antaŭ {n} sekundo(j)"
minutesAgo: "Antaŭ {n} minutoj" minutesAgo: "Antaŭ {n} minutoj"
hoursAgo: "Antaŭ {n} horo(j)" hoursAgo: "Antaŭ {n} horo(j)"
daysAgo: "Antaŭ {n} tagoj" daysAgo: "Antaŭ {n} tagoj"
@ -548,11 +570,13 @@ _tutorial:
step7_2: "Se vi volas scii pli pri Misskey, rigardu la fakon {help}." step7_2: "Se vi volas scii pli pri Misskey, rigardu la fakon {help}."
step7_3: "Do, bonvolu amuziĝi Misskey'on🚀" step7_3: "Do, bonvolu amuziĝi Misskey'on🚀"
_permissions: _permissions:
"read:blocks": "Vidi la liston de uzantoj kiun vi blokas" "write:account": "Redakti Informojn de via konto"
"write:blocks": "Redakti vian liston de blokataj uzantoj" "read:blocks": "Vidi vian liston de uzantoj blokitaj"
"write:blocks": "Redakti vian liston de uzantoj blokitaj"
"read:drive": "Operacio por legi la informon de dosiero en via disko de Misskey" "read:drive": "Operacio por legi la informon de dosiero en via disko de Misskey"
"write:drive": "Ĉia operacio por skribi, forviŝi, aŭ alimaniere ŝanĝi la informon de dosiero en via disko de Misskey" "write:drive": "Ĉia operacio por skribi, forviŝi, aŭ alimaniere ŝanĝi la informon de dosiero en via disko de Misskey"
"read:favorites": "Vidi vian liston de preferatoj" "read:favorites": "Vidi vian liston de preferataĵoj"
"write:favorites": "Redakti vian liston de preferataĵoj."
"read:following": "Vidi tiun kiun vi sekvas" "read:following": "Vidi tiun kiun vi sekvas"
"write:following": "Sekvi aŭ malsekvi alian uzanton" "write:following": "Sekvi aŭ malsekvi alian uzanton"
"read:messaging": "Vidi vian retbabiladon" "read:messaging": "Vidi vian retbabiladon"
@ -585,6 +609,7 @@ _widgets:
slideshow: "Bildoprezento" slideshow: "Bildoprezento"
button: "Butono" button: "Butono"
onlineUsers: "Surkonektita uzanto" onlineUsers: "Surkonektita uzanto"
aichan: "Ai"
_cw: _cw:
show: "Vidu pli" show: "Vidu pli"
files: "{count} dosiero(j)" files: "{count} dosiero(j)"
@ -597,11 +622,12 @@ _poll:
vote: "Baloti" vote: "Baloti"
closed: "Oni jam balotis ĝin" closed: "Oni jam balotis ĝin"
_visibility: _visibility:
publicDescription: "Via noto aperiĝos sur la konfederacia templinio" publicDescription: "Via noto aperiĝos sur la templinio Malloka"
home: "Hejmo" home: "Hejma"
homeDescription: "Elsendi nur sur la hejmtemplinio" homeDescription: "Elsendi nur sur la templinio Hejmo"
followers: "Sekvantoj" followers: "Sekvantoj"
followersDescription: "Nur al sekvantoj al mi" followersDescription: "Nur al sekvantoj al mi"
specified: "Rekta"
localOnly: "Nur loka" localOnly: "Nur loka"
localOnlyDescription: "Ne montri al transaj uzantoj" localOnlyDescription: "Ne montri al transaj uzantoj"
_postForm: _postForm:
@ -616,18 +642,21 @@ _profile:
changeBanner: "Ŝanĝi standardon" changeBanner: "Ŝanĝi standardon"
_exportOrImport: _exportOrImport:
allNotes: "Ĉiuj notoj" allNotes: "Ĉiuj notoj"
followingList: "Sekvataj" followingList: "Sekvataj uzantoj"
muteList: "Silentigoj" muteList: "Silentigoj"
blockingList: "Blokado" blockingList: "Blokitaj uzantoj"
userLists: "Listoj" userLists: "Listoj"
_charts: _charts:
federationInstancesTotal: "Tuta numero de kunfederantaj ekzemploj" federationInstancesTotal: "Tuta numero de nodoj kunfederantaj"
usersTotal: "Tuta numero de uzantoj"
activeUsers: "Numero de aktivaj uzantoj"
notesTotal: "Tuta numero de notoj"
filesTotal: "Tuta numero de dosieroj" filesTotal: "Tuta numero de dosieroj"
_timelines: _timelines:
home: "HEJMO" home: "Hejma"
local: "LOKA" local: "Loka"
social: "SOCIALA" social: "Sociala"
global: "MALLOKA" global: "Malloka"
_rooms: _rooms:
translate: "Movi" translate: "Movi"
chooseImage: "Elekti bildon" chooseImage: "Elekti bildon"
@ -641,15 +670,21 @@ _pages:
viewPage: "Vidi via paĝojn" viewPage: "Vidi via paĝojn"
my: "Miaj paĝoj" my: "Miaj paĝoj"
featured: "Ravaĵoj" featured: "Ravaĵoj"
contents: "Enhavo"
content: "Blokado de paĝo" content: "Blokado de paĝo"
url: "URL de paĝo" url: "URL de paĝo"
alignCenter: "Centrigi" alignCenter: "Centrigi"
chooseBlock: "Aldoni blokon" chooseBlock: "Aldoni blokon"
contentBlocks: "Enhavo"
blocks: blocks:
text: "Teksto"
textarea: "Areo de teksto"
image: "Bildo" image: "Bildo"
button: "Butono" button: "Butono"
_post: _post:
canvasId: "Kanvasa identigilo" canvasId: "Kanvasa identigilo"
textInput: "Enigo el teksto"
textareaInput: "Enigo el teksto en multaj linioj"
_numberInput: _numberInput:
text: "Titolo" text: "Titolo"
_canvas: _canvas:
@ -665,8 +700,20 @@ _pages:
event: "Nomo de la evento" event: "Nomo de la evento"
script: script:
categories: categories:
text: "Manipulo de teksto"
list: "Listoj" list: "Listoj"
blocks: blocks:
text: "Teksto"
multiLineText: "Teksto (multaj linioj)"
textList: "List de teksto"
_strLen:
arg1: "Teksto"
_strPick:
arg1: "Teksto"
_strReplace:
arg1: "Teksto"
_strReverse:
arg1: "Teksto"
_join: _join:
arg1: "Listoj" arg1: "Listoj"
_randomPick: _randomPick:
@ -675,18 +722,24 @@ _pages:
arg1: "Listoj" arg1: "Listoj"
_seedRandomPick: _seedRandomPick:
arg2: "Listoj" arg2: "Listoj"
_DRPWPM:
arg1: "List de teksto"
pick: "Elekti de la listo" pick: "Elekti de la listo"
_pick: _pick:
arg1: "Listoj" arg1: "Listoj"
_listLen: _listLen:
arg1: "Listoj" arg1: "Listoj"
_stringToNumber:
arg1: "Teksto"
_splitStrByLine: _splitStrByLine:
arg1: "Teksto" arg1: "Teksto"
types: types:
string: "Teksto"
array: "Listoj" array: "Listoj"
stringArray: "List de teksto" stringArray: "List de teksto"
_notification: _notification:
fileUploaded: "La dosiero sukcese alŝutiĝis." fileUploaded: "La dosiero sukcese alŝutiĝis."
youRenoted: "Renoto farita de {name}"
youGotPoll: "{name} balotis" youGotPoll: "{name} balotis"
youGotMessagingMessageFromUser: "{name} sentis mesaĝon al vi." youGotMessagingMessageFromUser: "{name} sentis mesaĝon al vi."
youGotMessagingMessageFromGroup: "Retbabilan mesaĝon oni sendis al la grupo {name}" youGotMessagingMessageFromGroup: "Retbabilan mesaĝon oni sendis al la grupo {name}"
@ -709,3 +762,4 @@ _deck:
antenna: "Antenoj" antenna: "Antenoj"
list: "Listoj" list: "Listoj"
mentions: "Al vi" mentions: "Al vi"
direct: "Notoj rektaj"

View File

@ -429,7 +429,7 @@ invitationCode: "Code dinvitation"
checking: "Vérification en cours..." checking: "Vérification en cours..."
available: "Disponible" available: "Disponible"
unavailable: "Non disponible" unavailable: "Non disponible"
usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres, des chiffres et des _" usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres (minuscules et/ou majuscules), des chiffres et des _"
tooShort: "Trop court" tooShort: "Trop court"
tooLong: "Trop long" tooLong: "Trop long"
weakPassword: "Mot de passe faible" weakPassword: "Mot de passe faible"
@ -776,6 +776,16 @@ misskeyUpdated: "Misskey a été mis à jour !"
whatIsNew: "Voir les derniers changements" whatIsNew: "Voir les derniers changements"
translate: "Traduire" translate: "Traduire"
translatedFrom: "Traduit depuis {x}" translatedFrom: "Traduit depuis {x}"
accountDeletionInProgress: "La suppression de votre compte est en cours"
usernameInfo: "C'est un nom qui identifie votre compte sur l'instance de manière unique. Vous pouvez utiliser des lettres de l'alphabet (minuscules et majuscules), des chiffres (de 0 à 9), ou bien le tiret « _ ». Vous ne pourrez pas modifier votre nom d'utilisateur·rice par la suite."
keepCw: "Garder le CW"
_accountDelete:
accountDelete: "Supprimer le compte"
mayTakeTime: "La suppression de compte nécessitant beaucoup de ressources, l'exécution du processus peut prendre du temps, en fonction de la quantité de contenus que vous avez créés et du nombre de fichiers que vous avez téléversés."
sendEmail: "Une fois la suppression de votre compte effectuée, un courriel sera envoyé à l'adresse que vous aviez enregistrée."
requestAccountDelete: "Demander la suppression de votre compte"
started: "La procédure de suppression a commencé."
inProgress: "Suppression en cours"
_docs: _docs:
continueReading: "Lire plus" continueReading: "Lire plus"
features: "Fonctionnalités" features: "Fonctionnalités"

View File

@ -775,6 +775,18 @@ useBlurEffect: "Gunakan efek blur pada antarmuka"
learnMore: "Pelajari lebih lanjut" learnMore: "Pelajari lebih lanjut"
misskeyUpdated: "Misskey telah dimutakhirkan!" misskeyUpdated: "Misskey telah dimutakhirkan!"
whatIsNew: "Lihat perubahan pemutakhiran" whatIsNew: "Lihat perubahan pemutakhiran"
translate: "Terjemahkan"
translatedFrom: "Terjemahkan dari {x}"
accountDeletionInProgress: "Penghapusan akun sedang dalam proses"
usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada server ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). Username tidak dapat diubah setelahnya."
keepCw: "Biarkan Peringatan Konten"
_accountDelete:
accountDelete: "Hapus akun"
mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah."
sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat surel yang terdaftarkan pada akun ini."
requestAccountDelete: "Minta penghapusan akun"
started: "Penghapusan telah dimulai"
inProgress: "Penghapusan sedang dalam proses"
_docs: _docs:
continueReading: "Baca lebih lanjut" continueReading: "Baca lebih lanjut"
features: "Fitur" features: "Fitur"
@ -1148,6 +1160,7 @@ _widgets:
jobQueue: "Antrian kerja" jobQueue: "Antrian kerja"
serverMetric: "Statistik server" serverMetric: "Statistik server"
aiscript: "Konsol AiScript" aiscript: "Konsol AiScript"
aichan: "Ai"
_cw: _cw:
hide: "Sembunyikan" hide: "Sembunyikan"
show: "Lihat konten" show: "Lihat konten"

View File

@ -779,6 +779,12 @@ translate: "翻訳"
translatedFrom: "{x}から翻訳" translatedFrom: "{x}から翻訳"
accountDeletionInProgress: "アカウントの削除が進行中です" accountDeletionInProgress: "アカウントの削除が進行中です"
usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更することは出来ません。" usernameInfo: "サーバー上であなたのアカウントを一意に識別するための名前。アルファベット(a~z, A~Z)、数字(0~9)、およびアンダーバー(_)が使用できます。ユーザー名は後から変更することは出来ません。"
aiChanMode: "藍モード"
keepCw: "CWを維持する"
pubSub: "Pub/Subのアカウント"
lastCommunication: "直近の通信"
resolved: "解決済み"
unresolved: "未解決"
_accountDelete: _accountDelete:
accountDelete: "アカウントの削除" accountDelete: "アカウントの削除"
@ -1188,6 +1194,7 @@ _widgets:
jobQueue: "ジョブキュー" jobQueue: "ジョブキュー"
serverMetric: "サーバーメトリクス" serverMetric: "サーバーメトリクス"
aiscript: "AiScriptコンソール" aiscript: "AiScriptコンソール"
aichan: "藍"
_cw: _cw:
hide: "隠す" hide: "隠す"

View File

@ -36,6 +36,7 @@ selectList: "Fren tabdart"
youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart" youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart"
security: "Taɣellist" security: "Taɣellist"
remove: "Kkes" remove: "Kkes"
connectService: "Qqen"
userList: "Tibdarin" userList: "Tibdarin"
securityKey: "Tasarutt n tɣellist" securityKey: "Tasarutt n tɣellist"
securityKeyName: "Isem n tsarutt" securityKeyName: "Isem n tsarutt"

View File

@ -1148,6 +1148,7 @@ _widgets:
jobQueue: "Очередь заданий" jobQueue: "Очередь заданий"
serverMetric: "Показатели сервера" serverMetric: "Показатели сервера"
aiscript: "Консоль AiScript" aiscript: "Консоль AiScript"
aichan: "Ай"
_cw: _cw:
hide: "Спрятать" hide: "Спрятать"
show: "Показать еще" show: "Показать еще"

View File

@ -779,8 +779,16 @@ translate: "翻译"
translatedFrom: "从 {x} 翻译" translatedFrom: "从 {x} 翻译"
accountDeletionInProgress: "正在删除账户" accountDeletionInProgress: "正在删除账户"
usernameInfo: "在服务器上唯一标识您的帐户的名称。您可以使用字母 (a ~ z, A ~ Z)、数字 (0 ~ 9) 和下划线 (_)。用户名以后不能更改。" usernameInfo: "在服务器上唯一标识您的帐户的名称。您可以使用字母 (a ~ z, A ~ Z)、数字 (0 ~ 9) 和下划线 (_)。用户名以后不能更改。"
keepCw: "保留CW"
pubSub: "Pub/Sub账户"
resolved: "已解决"
unresolved: "未解决"
_accountDelete: _accountDelete:
accountDelete: "删除帐户" accountDelete: "删除帐户"
mayTakeTime: "删除账号是一个性能损耗较大的处理,如果账号持有的内容数量和上传的文件数量较多的话,完成需要花费一段时间。"
sendEmail: "账户删除完成后,将向注册的电子邮件地址发送通知。"
requestAccountDelete: "请求删除账户"
started: "账户删除过程已开始。"
inProgress: "正在删除" inProgress: "正在删除"
_docs: _docs:
continueReading: "继续阅读" continueReading: "继续阅读"
@ -1155,6 +1163,7 @@ _widgets:
jobQueue: "作业队列" jobQueue: "作业队列"
serverMetric: "服务器监控" serverMetric: "服务器监控"
aiscript: "AiScript控制台" aiscript: "AiScript控制台"
aichan: "蓝"
_cw: _cw:
hide: "隐藏" hide: "隐藏"
show: "查看更多" show: "查看更多"

1
misskey-assets Submodule

@ -0,0 +1 @@
Subproject commit 0179793ec891856d6f37a3be16ba4c22f67a81b5

View File

@ -1,7 +1,7 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>", "author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.89.2", "version": "12.90.0",
"codename": "indigo", "codename": "indigo",
"repository": { "repository": {
"type": "git", "type": "git",
@ -148,6 +148,7 @@
"http-signature": "1.3.5", "http-signature": "1.3.5",
"idb-keyval": "5.1.3", "idb-keyval": "5.1.3",
"insert-text-at-cursor": "0.3.0", "insert-text-at-cursor": "0.3.0",
"ip-cidr": "3.0.4",
"is-svg": "4.3.1", "is-svg": "4.3.1",
"js-yaml": "4.1.0", "js-yaml": "4.1.0",
"jsdom": "16.7.0", "jsdom": "16.7.0",
@ -184,6 +185,7 @@
"postcss": "8.3.6", "postcss": "8.3.6",
"postcss-loader": "6.1.1", "postcss-loader": "6.1.1",
"prismjs": "1.24.1", "prismjs": "1.24.1",
"private-ip": "2.2.1",
"probe-image-size": "7.2.1", "probe-image-size": "7.2.1",
"promise-limit": "2.7.0", "promise-limit": "2.7.0",
"pug": "3.0.2", "pug": "3.0.2",

View File

@ -1,4 +1,4 @@
import { get, set } from '@client/scripts/idb-proxy'; import { del, get, set } from '@client/scripts/idb-proxy';
import { reactive } from 'vue'; import { reactive } from 'vue';
import { apiUrl } from '@client/config'; import { apiUrl } from '@client/config';
import { waiting } from '@client/os'; import { waiting } from '@client/os';
@ -26,14 +26,17 @@ export async function signout() {
//#region Remove account //#region Remove account
const accounts = await getAccounts(); const accounts = await getAccounts();
accounts.splice(accounts.findIndex(x => x.id === $i.id), 1); accounts.splice(accounts.findIndex(x => x.id === $i.id), 1);
set('accounts', accounts);
if (accounts.length > 0) await set('accounts', accounts);
else await del('accounts');
//#endregion //#endregion
//#region Remove push notification registration //#region Remove service worker registration
try { try {
if (navigator.serviceWorker.controller) {
const registration = await navigator.serviceWorker.ready; const registration = await navigator.serviceWorker.ready;
const push = await registration.pushManager.getSubscription(); const push = await registration.pushManager.getSubscription();
if (!push) return; if (push) {
await fetch(`${apiUrl}/sw/unregister`, { await fetch(`${apiUrl}/sw/unregister`, {
method: 'POST', method: 'POST',
body: JSON.stringify({ body: JSON.stringify({
@ -41,6 +44,15 @@ export async function signout() {
endpoint: push.endpoint, endpoint: push.endpoint,
}), }),
}); });
}
}
if (accounts.length === 0) {
await navigator.serviceWorker.getRegistrations()
.then(registrations => {
return Promise.all(registrations.map(registration => registration.unregister()));
});
}
} catch (e) {} } catch (e) {}
//#endregion //#endregion

View File

@ -111,7 +111,9 @@ export default defineComponent({
onLogin(res) { onLogin(res) {
if (this.autoSet) { if (this.autoSet) {
login(res.i); return login(res.i);
} else {
return;
} }
}, },
@ -144,7 +146,7 @@ export default defineComponent({
}); });
}).then(res => { }).then(res => {
this.$emit('login', res); this.$emit('login', res);
this.onLogin(res); return this.onLogin(res);
}).catch(err => { }).catch(err => {
if (err === null) return; if (err === null) return;
os.dialog({ os.dialog({

View File

@ -178,14 +178,14 @@ export default defineComponent({
'hcaptcha-response': this.hCaptchaResponse, 'hcaptcha-response': this.hCaptchaResponse,
'g-recaptcha-response': this.reCaptchaResponse, 'g-recaptcha-response': this.reCaptchaResponse,
}).then(() => { }).then(() => {
os.api('signin', { return os.api('signin', {
username: this.username, username: this.username,
password: this.password password: this.password
}).then(res => { }).then(res => {
this.$emit('signup', res); this.$emit('signup', res);
if (this.autoSet) { if (this.autoSet) {
login(res.i); return login(res.i);
} }
}); });
}).catch(() => { }).catch(() => {

View File

@ -28,14 +28,14 @@
<option value="-following">{{ $ts.following }} ({{ $ts.ascendingOrder }})</option> <option value="-following">{{ $ts.following }} ({{ $ts.ascendingOrder }})</option>
<option value="+followers">{{ $ts.followers }} ({{ $ts.descendingOrder }})</option> <option value="+followers">{{ $ts.followers }} ({{ $ts.descendingOrder }})</option>
<option value="-followers">{{ $ts.followers }} ({{ $ts.ascendingOrder }})</option> <option value="-followers">{{ $ts.followers }} ({{ $ts.ascendingOrder }})</option>
<option value="+caughtAt">{{ $ts.caughtAt }} ({{ $ts.descendingOrder }})</option> <option value="+caughtAt">{{ $ts.registeredAt }} ({{ $ts.descendingOrder }})</option>
<option value="-caughtAt">{{ $ts.caughtAt }} ({{ $ts.ascendingOrder }})</option> <option value="-caughtAt">{{ $ts.registeredAt }} ({{ $ts.ascendingOrder }})</option>
<option value="+lastCommunicatedAt">{{ $ts.lastCommunicatedAt }} ({{ $ts.descendingOrder }})</option> <option value="+lastCommunicatedAt">{{ $ts.lastCommunication }} ({{ $ts.descendingOrder }})</option>
<option value="-lastCommunicatedAt">{{ $ts.lastCommunicatedAt }} ({{ $ts.ascendingOrder }})</option> <option value="-lastCommunicatedAt">{{ $ts.lastCommunication }} ({{ $ts.ascendingOrder }})</option>
<option value="+driveUsage">{{ $ts.driveUsage }} ({{ $ts.descendingOrder }})</option> <option value="+driveUsage">{{ $ts.driveUsage }} ({{ $ts.descendingOrder }})</option>
<option value="-driveUsage">{{ $ts.driveUsage }} ({{ $ts.ascendingOrder }})</option> <option value="-driveUsage">{{ $ts.driveUsage }} ({{ $ts.ascendingOrder }})</option>
<option value="+driveFiles">{{ $ts.driveFiles }} ({{ $ts.descendingOrder }})</option> <option value="+driveFiles">{{ $ts.driveFilesCount }} ({{ $ts.descendingOrder }})</option>
<option value="-driveFiles">{{ $ts.driveFiles }} ({{ $ts.ascendingOrder }})</option> <option value="-driveFiles">{{ $ts.driveFilesCount }} ({{ $ts.ascendingOrder }})</option>
</MkSelect> </MkSelect>
</div> </div>
</div> </div>

View File

@ -45,6 +45,10 @@
</FormSwitch> </FormSwitch>
</FormGroup> </FormGroup>
<FormGroup>
<FormSwitch v-model:value="aiChanMode">{{ $ts.aiChanMode }}</FormSwitch>
</FormGroup>
<FormRadios v-model="fontSize"> <FormRadios v-model="fontSize">
<template #desc>{{ $ts.fontSize }}</template> <template #desc>{{ $ts.fontSize }}</template>
<option value="small"><span style="font-size: 14px;">Aa</span></option> <option value="small"><span style="font-size: 14px;">Aa</span></option>
@ -149,6 +153,7 @@ export default defineComponent({
enableInfiniteScroll: defaultStore.makeGetterSetter('enableInfiniteScroll'), enableInfiniteScroll: defaultStore.makeGetterSetter('enableInfiniteScroll'),
useReactionPickerForContextMenu: defaultStore.makeGetterSetter('useReactionPickerForContextMenu'), useReactionPickerForContextMenu: defaultStore.makeGetterSetter('useReactionPickerForContextMenu'),
squareAvatars: defaultStore.makeGetterSetter('squareAvatars'), squareAvatars: defaultStore.makeGetterSetter('squareAvatars'),
aiChanMode: defaultStore.makeGetterSetter('aiChanMode'),
}, },
watch: { watch: {
@ -184,6 +189,10 @@ export default defineComponent({
this.reloadAsk(); this.reloadAsk();
}, },
aiChanMode() {
this.reloadAsk();
},
showGapBetweenNotesInTimeline() { showGapBetweenNotesInTimeline() {
this.reloadAsk(); this.reloadAsk();
}, },

View File

@ -28,6 +28,7 @@
</FormSelect> </FormSelect>
<FormSwitch v-model:value="defaultNoteLocalOnly">{{ $ts._visibility.localOnly }}</FormSwitch> <FormSwitch v-model:value="defaultNoteLocalOnly">{{ $ts._visibility.localOnly }}</FormSwitch>
</FormGroup> </FormGroup>
<FormSwitch v-model:value="keepCw" @update:value="save()">{{ $ts.keepCw }}</FormSwitch>
</FormBase> </FormBase>
</template> </template>
@ -69,6 +70,7 @@ export default defineComponent({
defaultNoteVisibility: defaultStore.makeGetterSetter('defaultNoteVisibility'), defaultNoteVisibility: defaultStore.makeGetterSetter('defaultNoteVisibility'),
defaultNoteLocalOnly: defaultStore.makeGetterSetter('defaultNoteLocalOnly'), defaultNoteLocalOnly: defaultStore.makeGetterSetter('defaultNoteLocalOnly'),
rememberNoteVisibility: defaultStore.makeGetterSetter('rememberNoteVisibility'), rememberNoteVisibility: defaultStore.makeGetterSetter('rememberNoteVisibility'),
keepCw: defaultStore.makeGetterSetter('keepCw'),
}, },
created() { created() {

View File

@ -53,7 +53,7 @@ export default defineComponent({
username: this.username, username: this.username,
password: this.password, password: this.password,
}).then(res => { }).then(res => {
login(res.i); return login(res.token);
}).catch(() => { }).catch(() => {
this.submitting = false; this.submitting = false;

View File

@ -210,6 +210,10 @@ export const defaultStore = markRaw(new Storage('base', {
where: 'device', where: 'device',
default: '' default: ''
}, },
aiChanMode: {
where: 'device',
default: false
},
})); }));
// TODO: 他のタブと永続化されたstateを同期 // TODO: 他のタブと永続化されたstateを同期

View File

@ -159,7 +159,6 @@ hr {
display: inline-block; display: inline-block;
padding: 0; padding: 0;
margin: 0; // for Safari margin: 0; // for Safari
width: max-content;
background: none; background: none;
border: none; border: none;
cursor: pointer; cursor: pointer;

View File

@ -21,7 +21,8 @@
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {
"@/*": ["../*"], "@/*": ["../*"],
"@client/*": ["./*"] "@client/*": ["./*"],
"@lib/*": ["../../lib/*"],
}, },
"typeRoots": [ "typeRoots": [
"node_modules/@types", "node_modules/@types",

View File

@ -54,12 +54,14 @@
<XWidgets v-if="widgetsShowing" class="tray"/> <XWidgets v-if="widgetsShowing" class="tray"/>
</transition> </transition>
<iframe v-if="$store.state.aiChanMode" class="ivnzpscs" ref="live2d" src="https://misskey-dev.github.io/mascot-web/?scale=2&y=1.4"></iframe>
<XCommon/> <XCommon/>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue'; import { defineComponent, defineAsyncComponent, markRaw } from 'vue';
import { instanceName } from '@client/config'; import { instanceName } from '@client/config';
import { StickySidebar } from '@client/scripts/sticky-sidebar'; import { StickySidebar } from '@client/scripts/sticky-sidebar';
import XSidebar from './default.sidebar.vue'; import XSidebar from './default.sidebar.vue';
@ -131,6 +133,19 @@ export default defineComponent({
this.isMobile = (window.innerWidth <= MOBILE_THRESHOLD); this.isMobile = (window.innerWidth <= MOBILE_THRESHOLD);
this.isDesktop = (window.innerWidth >= DESKTOP_THRESHOLD); this.isDesktop = (window.innerWidth >= DESKTOP_THRESHOLD);
}, { passive: true }); }, { passive: true });
if (this.$store.state.aiChanMode) {
const iframeRect = this.$refs.live2d.getBoundingClientRect();
window.addEventListener('mousemove', ev => {
this.$refs.live2d.contentWindow.postMessage({
type: 'moveCursor',
body: {
x: ev.clientX - iframeRect.left,
y: ev.clientY - iframeRect.top,
}
}, '*');
}, { passive: true });
}
}, },
methods: { methods: {
@ -201,6 +216,10 @@ export default defineComponent({
} }
}], e); }], e);
}, },
onAiClick(ev) {
//if (this.live2d) this.live2d.click(ev);
}
} }
}); });
</script> </script>
@ -458,5 +477,15 @@ export default defineComponent({
overflow: auto; overflow: auto;
background: var(--bg); background: var(--bg);
} }
> .ivnzpscs {
position: fixed;
bottom: 0;
right: 0;
width: 300px;
height: 600px;
border: none;
pointer-events: none;
}
} }
</style> </style>

View File

@ -0,0 +1,59 @@
<template>
<MkContainer :naked="props.transparent" :show-header="false">
<iframe class="dedjhjmo" ref="live2d" @click="touched" src="https://misskey-dev.github.io/mascot-web/?scale=1.5&y=1.1&eyeY=100"></iframe>
</MkContainer>
</template>
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import define from './define';
import MkContainer from '@client/components/ui/container.vue';
import * as os from '@client/os';
const widget = define({
name: 'ai',
props: () => ({
transparent: {
type: 'boolean',
default: false,
},
})
});
export default defineComponent({
extends: widget,
components: {
MkContainer,
},
data() {
return {
};
},
mounted() {
window.addEventListener('mousemove', ev => {
const iframeRect = this.$refs.live2d.getBoundingClientRect();
this.$refs.live2d.contentWindow.postMessage({
type: 'moveCursor',
body: {
x: ev.clientX - iframeRect.left,
y: ev.clientY - iframeRect.top,
}
}, '*');
}, { passive: true });
},
methods: {
touched() {
//if (this.live2d) this.live2d.changeExpression('gurugurume');
}
}
});
</script>
<style lang="scss" scoped>
.dedjhjmo {
width: 100%;
height: 350px;
border: none;
pointer-events: none;
}
</style>

View File

@ -19,6 +19,7 @@ export default function(app: App) {
app.component('MkwJobQueue', defineAsyncComponent(() => import('./job-queue.vue'))); app.component('MkwJobQueue', defineAsyncComponent(() => import('./job-queue.vue')));
app.component('MkwButton', defineAsyncComponent(() => import('./button.vue'))); app.component('MkwButton', defineAsyncComponent(() => import('./button.vue')));
app.component('MkwAiscript', defineAsyncComponent(() => import('./aiscript.vue'))); app.component('MkwAiscript', defineAsyncComponent(() => import('./aiscript.vue')));
app.component('MkwAichan', defineAsyncComponent(() => import('./aichan.vue')));
} }
export const widgets = [ export const widgets = [
@ -40,4 +41,5 @@ export const widgets = [
'jobQueue', 'jobQueue',
'button', 'button',
'aiscript', 'aiscript',
'aichan',
]; ];

View File

@ -37,6 +37,10 @@ export type Source = {
proxySmtp?: string; proxySmtp?: string;
proxyBypassHosts?: string[]; proxyBypassHosts?: string[];
allowedPrivateNetworks?: string[];
maxFileSize?: number;
accesslog?: string; accesslog?: string;
clusterLimit?: number; clusterLimit?: number;

View File

@ -1,6 +1,6 @@
# サードパーティアプリのリスト # サードパーティアプリのリスト
## クライアント ## العملاء
todo todo
## 連携サービス ## الخدمات المترابطة
todo todo

View File

@ -47,7 +47,7 @@ UUIDを生成する。以後これをセッションIDと呼びます。
レスポンスに含まれるプロパティ: レスポンスに含まれるプロパティ:
* `token` ... ユーザーのアクセストークン * `token` ... ユーザーのアクセストークン
* `user` ... ユーザーの情報 * `user` ... Informoj de uzanto
[「APIの使い方」へ進む](#APIの使い方) [「APIの使い方」へ進む](#APIの使い方)

View File

@ -1,4 +1,4 @@
# Botの作成 # Evoluigi robotan uzanton
[Misskey API](./api)を利用してBotの開発が可能です。 また、いくつかのBot実装が公開されているため、ぜひ参考にしてください。 [Misskey API](./api)を利用してBotの開発が可能です。 また、いくつかのBot実装が公開されているため、ぜひ参考にしてください。
- [syuilo/ai](https://github.com/syuilo/ai) ... Node.js上で動く、TypeScript製Bot実装 - [syuilo/ai](https://github.com/syuilo/ai) ... Node.js上で動く、TypeScript製Bot実装

View File

@ -1,4 +1,4 @@
# Preferi # Preferataĵoj
[ノート](./node)をお気に入りとして登録できる機能です。 お気に入り登録したノートは、[お気に入りページ](./my/favorites)で一覧することができます。 お気に入りに登録したことは相手に通知されず、お気に入りは自分しか見ることができません。 [ノート](./node)をお気に入りとして登録できる機能です。 お気に入り登録したノートは、[お気に入りページ](./my/favorites)で一覧することができます。 お気に入りに登録したことは相手に通知されず、お気に入りは自分しか見ることができません。
ノートをお気に入り登録するには、ノートメニューの「お気に入り」を押します。お気に入り解除するには、ノートメニューの「お気に入り解除」を押します。 ノートをお気に入り登録するには、ノートメニューの「お気に入り」を押します。お気に入り解除するには、ノートメニューの「お気に入り解除」を押します。

View File

@ -28,7 +28,7 @@
<tr><td><kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">Q</kbd></kbd></td><td>即刻Renoteする(フォームを開かずに)</td><td>-</td></tr> <tr><td><kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">Q</kbd></kbd></td><td>即刻Renoteする(フォームを開かずに)</td><td>-</td></tr>
<tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>リアクションフォームを開く</td><td><b>E</b>mote, re<b>A</b>ction</td></tr> <tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>リアクションフォームを開く</td><td><b>E</b>mote, re<b>A</b>ction</td></tr>
<tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションをする(対応については後述)</td><td>-</td></tr> <tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションをする(対応については後述)</td><td>-</td></tr>
<tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>お気に入りに登録</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr> <tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>Aldoni vian liston de preferaĵoj</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr>
<tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>投稿を削除</td><td><b>D</b>elete</tr> <tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>投稿を削除</td><td><b>D</b>elete</tr>
<tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></tr> <tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>CWで隠された部分を表示 or 隠す</td><td><b>S</b>how, <b>S</b>ee</td></tr> <tr><td><kbd class="key">S</kbd></td><td>CWで隠された部分を表示 or 隠す</td><td><b>S</b>how, <b>S</b>ee</td></tr>
@ -42,7 +42,7 @@
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key">Enter</kbd></td><td>Renoteする</td><td>-</td></tr> <tr><td><kbd class="key">Enter</kbd></td><td>Fari renoton</td><td>-</td></tr>
<tr><td><kbd class="key">Q</kbd></td><td>フォームを展開する</td><td><b>Q</b>uote</td></tr> <tr><td><kbd class="key">Q</kbd></td><td>フォームを展開する</td><td><b>Q</b>uote</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>フォームを閉じる</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>フォームを閉じる</td><td>-</td></tr>
</tbody> </tbody>

View File

@ -4,7 +4,7 @@ MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用
## MFMが使用可能な場所の例 ## MFMが使用可能な場所の例
- ノート本文 - ノート本文
- CW注釈 - CW注釈
- ユーザーの名前 - Nomo de uzanto
- ユーザーの自己紹介 - ユーザーの自己紹介
## 開発者向け情報 ## 開発者向け情報

View File

@ -1,4 +1,4 @@
# Silentigatoj kaj blokatoj # Silentigitoj kaj blokitoj
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。 好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
<div class="info"> ミュートとブロックは併用できます。</div> <div class="info"> ミュートとブロックは併用できます。</div>

View File

@ -21,20 +21,20 @@ Renoteを削除するには、Renoteの時刻表示の隣にある「...」を
## CW ## CW
Contents Warningの略で、ートの内容を、閲覧者の操作なしには表示しないようにできる機能です。主に長大な内容を隠すためや、ネタバレ防止などに使うことができます。 設定するには、フォームの「内容を隠す」ボタン(目のアイコン)を押します。すると新しい入力エリアが表れるので、そこに内容の要約を記入します。 Contents Warningの略で、ートの内容を、閲覧者の操作なしには表示しないようにできる機能です。主に長大な内容を隠すためや、ネタバレ防止などに使うことができます。 設定するには、フォームの「内容を隠す」ボタン(目のアイコン)を押します。すると新しい入力エリアが表れるので、そこに内容の要約を記入します。
## 公開範囲 ## Videbleco
ノートごとに、そのノートが公開される範囲を設定することができます。フォームの「ノート」ボタンの左にあるアイコンを押すと公開範囲を以下から選択できます。 ノートごとに、そのノートが公開される範囲を設定することができます。フォームの「ノート」ボタンの左にあるアイコンを押すと公開範囲を以下から選択できます。
### パブリック ### Publika
全ての人に対してノートが公開されるほか、サーバーの全てのタイムライン(ホームタイムライン、ローカルタイムライン、ソーシャルタイムライン、グローバルタイムライン)にノートが流れます。 全ての人に対してノートが公開されるほか、サーバーの全てのタイムライン(ホームタイムライン、ローカルタイムライン、ソーシャルタイムライン、グローバルタイムライン)にノートが流れます。
<div class="warn">⚠️ アカウントが<a href="./silence">サイレンス</a>状態の時は、この公開範囲は使用できません。</div> <div class="warn">⚠️ アカウントが<a href="./silence">サイレンス</a>状態の時は、この公開範囲は使用できません。</div>
### Hejmo ### Hejma
全ての人に対してノートが公開されますが、フォロワー以外のローカルタイムライン、ソーシャルタイムライン、グローバルタイムラインにはノートは流れません。 全ての人に対してノートが公開されますが、フォロワー以外のローカルタイムライン、ソーシャルタイムライン、グローバルタイムラインにはノートは流れません。
### Sekvantoj ### Sekvantoj
自分のフォロワーに対してのみノートを公開します。フォロワーの全てのタイムラインに流れます。 自分のフォロワーに対してのみノートを公開します。フォロワーの全てのタイムラインに流れます。
### ダイレクト ### Rekta
指定したユーザーに対してのみノートを公開します。指定したユーザーの全てのタイムラインに流れます。 指定したユーザーに対してのみノートを公開します。指定したユーザーの全てのタイムラインに流れます。
### 「ローカルのみ」オプション ### 「ローカルのみ」オプション
@ -42,12 +42,12 @@ Contents Warningの略で、ートの内容を、閲覧者の操作なしに
### 公開範囲の比較 ### 公開範囲の比較
<table> <table>
<tr><th></th><th>パブリック</th><th>Hejmo</th><th>Sekvantoj</th><th>ダイレクト</th></tr> <tr><th></th><th>Publika</th><th>Hejma</th><th>Sekvantoj</th><th>Rekta</th></tr>
<tr><th>フォロワーのLTL/STL/GTL</th><td></td><td></td><td></td><td></td></tr> <tr><th>フォロワーのLTL/STL/GTL</th><td></td><td></td><td></td><td></td></tr>
<tr><th>非フォロワーのLTL/STL/GTL</th><td></td><td></td><td></td><td></td></tr> <tr><th>非フォロワーのLTL/STL/GTL</th><td></td><td></td><td></td><td></td></tr>
</table> </table>
## Alpingli sur la profilo ## Alpingli al la profilo
ノートをピン留めすると、ユーザーページに常にそのノートを表示しておくことができます。 ノートのメニューを開き、「ピン留め」を選択してピン留めできます。 複数のノートをピン留めできます。 ノートをピン留めすると、ユーザーページに常にそのノートを表示しておくことができます。 ノートのメニューを開き、「ピン留め」を選択してピン留めできます。 複数のノートをピン留めできます。
## Observi ## Observi

View File

@ -1,7 +1,7 @@
# Templinio # Templinio
タイムラインは、[ノート](./note)が時系列で表示される機能です。 タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。 なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。 タイムラインは、[ノート](./note)が時系列で表示される機能です。 タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。 なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。
## Hejmo ## Hejma
自分のフォローしているユーザーの投稿が流れます。HTLと略されます。 自分のフォローしているユーザーの投稿が流れます。HTLと略されます。
## Loka ## Loka
@ -16,16 +16,16 @@
## 比較 ## 比較
| ソース | | | Templinio | | | | ソース | | | Templinio | | |
| ------------ | --------- | ----- | --------- | ------- | ------- | | ------------ | --------- | ----- | --------- | ------- | ------- |
| Uzanto | 公開範囲 | Hejmo | Loka | Sociala | Malloka | | Uzantoj | Videbleco | Hejma | Loka | Sociala | Malloka |
| ローカル (フォロー) | Publikigi | ✔ | ✔ | ✔ | ✔ | | ローカル (フォロー) | Publikigi | ✔ | ✔ | ✔ | ✔ |
| | Hejmo | ✔ | | ✔ | | | | Hejma | ✔ | | ✔ | |
| | Sekvantoj | ✔ | ✔ | ✔ | ✔ | | | Sekvantoj | ✔ | ✔ | ✔ | ✔ |
| リモート (フォロー) | Publikigi | ✔ | | ✔ | ✔ | | リモート (フォロー) | Publikigi | ✔ | | ✔ | ✔ |
| | Hejmo | ✔ | | ✔ | | | | Hejma | ✔ | | ✔ | |
| | Sekvantoj | ✔ | | ✔ | ✔ | | | Sekvantoj | ✔ | | ✔ | ✔ |
| ローカル (未フォロー) | Publikigi | | ✔ | ✔ | ✔ | | ローカル (未フォロー) | Publikigi | | ✔ | ✔ | ✔ |
| | Hejmo | | | | | | | Hejma | | | | |
| | Sekvantoj | | | | | | | Sekvantoj | | | | |
| リモート (未フォロー) | Publikigi | | | | ✔ | | リモート (未フォロー) | Publikigi | | | | ✔ |
| | Hejmo | | | | | | | Hejma | | | | |
| | Sekvantoj | | | | | | | Sekvantoj | | | | |

View File

@ -1,4 +1,4 @@
# Silentigo de vortoj # Silentigi specifajn vortojn
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。 ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。 ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。

View File

@ -16,7 +16,7 @@ Misskeyに関する用語集です。
## CW ## CW
(読み: こんてんつわーにんぐ) Contents Warningの略。ートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。 (読み: こんてんつわーにんぐ) Contents Warningの略。ートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。
## Fediverse ## Fediverso
(読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。 (読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。
## MTL ## MTL
@ -46,14 +46,14 @@ Ai estas oficiala maskoto de Misskey.
## Aktivaj Uzantoj: ## Aktivaj Uzantoj:
インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。 インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。
## Ekzemplo ## Nodo
todo todo
## Ŝaltpodio ## Ŝaltpodio
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。 サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
## コントロールパネル ## コントロールパネル
todo インスタンスの設定画面のこと。
## Servilo ## Servilo
todo todo
@ -73,16 +73,16 @@ Misskeyにアップロードしたファイルを管理する機能。詳細は[
## Notoj ## Notoj
Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note) Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note)
## Transa aŭ fora ## Miskiisto
Misskeyを使う人のこと。 Misskeyを使う人のこと。
## Moderigisto ## Kontrolisto
スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。 スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。
## Transa ## Transa/fora
他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。 他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。
## Kunfederaĵo ## Kunfederado
サーバー上で作成された情報が他のサーバーに伝わること。 サーバー上で作成された情報が他のサーバーに伝わること。
## Loka ## Loka

View File

@ -1,7 +1,7 @@
# リンク集 # リンク集
## Webサイト ## Webサイト
- [Official Discord](https://discord.gg/Wp8gVStHW3) - Misskey公式Discordサーバー - [Oficiala Discord](https://discord.gg/Wp8gVStHW3) - Servilo Discord'a oficiala de Misskey
- [Misskey Forum](https://forum.misskey.io/) - Misskeyに関する話題を扱うフォーラム - [Misskey Forum](https://forum.misskey.io/) - Misskeyに関する話題を扱うフォーラム
## Kontoj ## Kontoj

View File

@ -12,7 +12,7 @@ Misskey estas malfermitkoda distribuita mikroblogo. Ĝia trajtoj estas diversaj
<b>分散(distributed)型</b>とは、<b>非中央集権(decentralized)</b>とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に<b>通信(連合、federation)</b>することでコンテンツ共有<b>ネットワーク(Fediverse)</b>を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。 <b>分散(distributed)型</b>とは、<b>非中央集権(decentralized)</b>とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に<b>通信(連合、federation)</b>することでコンテンツ共有<b>ネットワーク(Fediverse)</b>を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。
## Ĉiam malfermitkode ## Ĉiam malfermitkoda
Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うと<b>ソフトウェアのソースコード(プログラム)が公開されている</b>ことです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。 Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うと<b>ソフトウェアのソースコード(プログラム)が公開されている</b>ことです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
<div class="info"> 技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリは<a href="https://github.com/misskey-dev" target="_blank">GitHub上でホスティングされています。</a></div> <div class="info"> 技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリは<a href="https://github.com/misskey-dev" target="_blank">GitHub上でホスティングされています。</a></div>
@ -26,7 +26,7 @@ Misskeyを気に入っていただけたら、ぜひプロジェクトを支援
### 議論に参加する ### 議論に参加する
新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。 そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。 新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。 そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。
### テキストを翻訳する ### Traduki tekston
Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。 その翻訳作業に加わっていただくことでもMisskeyに貢献できます。 Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey) Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。 その翻訳作業に加わっていただくことでもMisskeyに貢献できます。 Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey)
### 感想を投稿する ### 感想を投稿する

View File

@ -1,4 +1,4 @@
# Misskey API # API de Misskey
MisskeyAPIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発できます。 ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。 MisskeyAPIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発できます。 ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。
@ -18,13 +18,13 @@ APIを使い始めるには、まずアクセストークンを取得する必
### アプリケーション利用者にアクセストークンの発行をリクエストする ### アプリケーション利用者にアクセストークンの発行をリクエストする
アプリケーション利用者のアクセストークンを取得するには、以下の手順で発行をリクエストします。 アプリケーション利用者のアクセストークンを取得するには、以下の手順で発行をリクエストします。
#### Step 1 #### Étape 1
UUIDを生成する。以後これをセッションIDと呼びます。 UUIDを生成する。以後これをセッションIDと呼びます。
> このセッションIDは毎回生成し、使いまわさないようにしてください。 > このセッションIDは毎回生成し、使いまわさないようにしてください。
#### Step 2 #### Étape 2
`{_URL_}/miauth/{session}`をユーザーのブラウザで表示させる。`{session}`の部分は、セッションIDに置き換えてください。 `{_URL_}/miauth/{session}`をユーザーのブラウザで表示させる。`{session}`の部分は、セッションIDに置き換えてください。
> 例: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f` > 例: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f`
@ -42,7 +42,7 @@ UUIDを生成する。以後これをセッションIDと呼びます。
* 要求する権限を`,`で区切って列挙します * 要求する権限を`,`で区切って列挙します
* どのような権限があるかは[APIリファレンス](/api-doc)で確認できます * どのような権限があるかは[APIリファレンス](/api-doc)で確認できます
#### Step 3 #### Étape 3
ユーザーが発行を許可した後、`{_URL_}/api/miauth/{session}/check`にPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。 ユーザーが発行を許可した後、`{_URL_}/api/miauth/{session}/check`にPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。
レスポンスに含まれるプロパティ: レスポンスに含まれるプロパティ:

View File

@ -16,11 +16,11 @@ Bien que cela arrive rarement, il se peut que le cache soit à l'origine du prob
Si le problème persiste malgré tout, il est très probable qu'il s'agisse d'une panne côté serveur ; nous vous invitons donc à contacter l'administrateur·rice de votre instance. Si le problème persiste malgré tout, il est très probable qu'il s'agisse d'une panne côté serveur ; nous vous invitons donc à contacter l'administrateur·rice de votre instance.
## Le client est lent ## Le client est lent
以下を試してみてください: Essayez les solutions proposées ci-dessous :
- クライアント設定で「UIのアニメーションを減らす」を有効にする - activer l'option « Réduire les animations dans l'interface » dans les paramètres du client
- クライアント設定で「モーダルにぼかし効果を使用」を無効にする - désactiver l'option « Utiliser un effet de flou pour les modals » dans les paramètres du client
- お使いのブラウザの設定でハードウェアアクセラレーションを有効にする - activer l'accélération matérielle dans les paramètres de votre navigateur
- お使いのデバイスのスペックを上げる - お使いのデバイスのスペックを上げる
## UIの一部の表示がおかしい(背景が透明になっている等) ## UIの一部の表示がおかしい(背景が透明になっている等)

View File

@ -1,8 +1,8 @@
# LTL/STL/GTLの無効化 # Menonaktifkan LTL/STL/GTL
Misskeyでは、LTL/STL/GTLをそれぞれ無効化することができます。有効/無効を切り替えるには、インスタンスコントロールパネルで設定します。 Misskey memungkinkan untuk menonaktifkan LTL/STL/GTL secara satu persatu.Kamu dapat mengaktifkan atau menonaktifkan linimasa individual tersebut melalui panel kontrol instansi.
LTLやSTLは、そのインスタンス全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。 しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。 サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。 もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。 LTLやSTLは、そのインスタンス全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。 しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。 サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。 もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。
<div class="warn">⚠️ 無効化を行うと、ユーザーが困惑し、短期的に見て利用者が減る可能性があります。そのため、無効化の際は影響を慎重に検討し、事前に説明してフォローを整える期間を一定程度設けることを推奨します。</div> <div class="warn">Menonaktifkan linimasa dapat menyebabkan kebingungan dan memungkinkan untuk pengguna mengalami drop-in jangka pendek.Oleh karena itu, dimohon berhati-hati dengan efek dari menonaktifkan linimasa, dan jelaskan alasannya mengapa menonaktifkan tersebut dari awal, agar pengguna kamu dapat bersiap dengan mengikuti pengguna yang seringnya mereka berkomunikasi di LTL/STL.</div>
なお、管理者/モデレーターは、これらのタイムラインの無効化状態は適用されず、引き続き利用することが可能です。 Sebagai tambahan, Administrator / Moderator akan tetap dapat melihat linimasa ini meskipun telah dinonaktifkan.

View File

@ -1,5 +1,5 @@
# よくある質問 # Pertanyaan Yang Sering Ditanyakan (FAQ)
ここでは、サーバー管理者向けのよくある質問を掲載しています。 Dokumen ini ditujukan kepada administrator server dan memberikan daftar jawaban untuk pertanyaan yang sering ditanyakan.
## デフォルトテーマを設定したい ## "Aku ingin menyetel tema bawaan untuk instansi milikku"
現在、デフォルトテーマ設定機能は実装されていません。 Untuk saat ini belum ada fitur yang membolehkan kamu untuk menyetel tema default instansi milikmu.

View File

@ -1,5 +1,5 @@
# 更新履歴 # Catatan Rilis
<div class="info"> このサーバーの更新履歴です。Misskeyの最新のリリースについては、<a href="https://github.com/misskey-dev/misskey/blob/master/CHANGELOG.md" target="_blank">GitHub</a>をご確認ください。</div> <div class="info"> Catatan rilis ini hanya berlaku pada versi terakhir dari server ini.Untuk membaca catatan rilis Misskey paling terbaru, mohon periksa ke <a href="https://github.com/misskey-dev/misskey/blob/master/CHANGELOG.md" target="_blank">GitHub</a>.</div>
<!-- For translators: Do not edit these comments. --> <!-- For translators: Do not edit these comments. -->
<!--[CHANGELOG]--> <!--[CHANGELOG]-->

View File

@ -1,4 +1,4 @@
# よくある質問 # Pertanyaan Yang Sering Ditanyakan (FAQ)
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。 ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
## iOS/Androidのアプリはありますか ## iOS/Androidのアプリはありますか

View File

@ -1,35 +1,35 @@
# 用語集 # Kosakata
Misskeyに関する用語集です。 Kosakata yang terkait dengan Misskey.
## ActivityPub ## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。 Protokol yang digunakan untuk memungkinkan distribusi dari Misskey.Dengan mengikuti protokol ini, komunikasi dengan server lainnya yang juga mengikuti protokol ini menjadi mungkin, yang mana membentuk suatu semesta yang disebut sebagai Fediverse.
## AiScript ## AiScript
(読み: あいすくりぷと) Misskey上で使用できるプログラミング言語です。詳細は[こちら。](../advanced/aiscript) Bahasa pemrograman yang tersedia untuk digunakan dalam Misskey.Untuk detilnya, [lihat disini.](../advanced/aiscript)
## API ## API
(読み: えーぴーあい) Misskeyのサーバーが公開している、プログラムからMisskeyを扱うためのインターフェース。詳細は[こちら。](../advanced/api) Antarmuka yang dapat digunakan untuk berinteraksi dengan Misskey melalui program, tersedia untuk setiap instansi individual.Untuk detilnya, [lihat disini.](../advanced/api)
## Bot ## Bot
(読み: ぼっと) プログラムによって動作しているアカウント。 Sebuah akun yang dikendalikan oleh program.
## CW ## CW
(読み: こんてんつわーにんぐ) Contents Warningの略。ートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。 Singkatan dari "Content Warning".Sebuah fitur untuk menyembunyikan konten dari catatan kecuali diminta untuk diperlihatkan oleh pengguna.Utamanya digunakan untuk menyembunyikan konten catatan panjang atau untuk mencegah postingan spoiler secara publik.
## Fediverse ## Fediverse
(読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。 Sebuah jaringan server yang terdiri dari berbagai platform berbeda yang saling berkomunikasi, termasuk Misskey.
## GTL ## GTL
グローバルタイムライン(Global TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) Singkatan dari "Global TimeLine" (Linimasa Global).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline).
## HTL ## HTL
ホームタイムライン(Home TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) Singkatan dari "Home TimeLine" (Linimasa Beranda).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline)
## LTL ## LTL
ローカルタイムライン(Local TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) Singkatan dari "Local TimeLine" (Linimasa Lokal).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline)
## MFM ## MFM
(読み: えむえふえむ) Misskey Flavored Markdownの略で、Misskey上で使用できるマークアップ言語です。詳細は[こちら。](../features/mfm) Singkatan dari "Misskey Flavored Markdown", sebuah bahasa markdown yang tersedia untuk digunakan pada Misskey.Untuk detilnya, [lihat disini.](../features/mfm)
## NSFW ## NSFW
(読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。 (読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。
@ -38,21 +38,21 @@ Misskeyに関する用語集です。
(読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note) (読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note)
## STL ## STL
ソーシャルタイムライン(Social TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) Singkatan dari "Social TimeLine" (Linimasa Sosial).Untuk informasi lebih lanjut tentang linimasa, mohon [lihat disini](../features/timeline)
## ## Ai
(読み: あい) Misskeyの看板娘(公式キャラクター)です。 Ai adalah maskot resmi milik Misskey.
## アクティブユーザー ## Pengguna Aktif
インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。 Para pengguna di antara semua pengguna yang ada yang terus menggunakan akun mereka.
## Instansi ## Instansi
todo todo
## Emoji kustom ## Emoji kustom
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。 Emoji yang disediakan oleh server kamu.Emoji yang spesifik tidak disediakan oleh server kamu tetapi tersedia secara bawaan adalah "Unicode Emoji".
## コントロールパネル ## Panel kontrol
インスタンスの設定画面のこと。 インスタンスの設定画面のこと。
## Server ## Server
@ -73,8 +73,8 @@ Misskeyにアップロードしたファイルを管理する機能。詳細は[
## Catatan ## Catatan
Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note) Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note)
## ミスキスト ## Misskist
Misskeyを使う人のこと。 Pengguna dari Misskey.
## Moderator ## Moderator
スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。 スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。

View File

@ -1,87 +1,87 @@
# Tentang Misskey # Tentang Misskey
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。 Misskey adalah platform sumber terbuka dan terdistribusi untuk mikroblogging. Pengembangan dimulai dari 2014 oleh syuilo di Jepang. Memiliki banyak fitur seperti Drive atau Reaksi dan juga kustomisasi UI yang tinggi.
## 歴史 ## Sejarah
開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。 開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
<div class="info"> Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。</div> <div class="info"> Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。</div>
誰でも開発に参加することができ、現在でも活発に開発が続いています。 誰でも開発に参加することができ、現在でも活発に開発が続いています。
## 分散型とは何か? ## Apa yang dimaksud dengan "Terdistribusi"?
<b>分散(distributed)型</b>とは、<b>非中央集権(decentralized)</b>とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に<b>通信(連合、federation)</b>することでコンテンツ共有<b>ネットワーク(Fediverse)</b>を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。 <b>分散(distributed)型</b>とは、<b>非中央集権(decentralized)</b>とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に<b>通信(連合、federation)</b>することでコンテンツ共有<b>ネットワーク(Fediverse)</b>を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。
## 常にオープンソース ## Selalu sumber-terbuka
Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うと<b>ソフトウェアのソースコード(プログラム)が公開されている</b>ことです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。 Misskey sudah selalu, dan akan selalu menjadi perangkat lunak sumber terbuka.オープンソースとは、簡単に言うと<b>ソフトウェアのソースコード(プログラム)が公開されている</b>ことです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
<div class="info"> 技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリは<a href="https://github.com/misskey-dev" target="_blank">GitHub上でホスティングされています。</a></div> <div class="info"> 技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリは<a href="https://github.com/misskey-dev" target="_blank">GitHub上でホスティングされています。</a></div>
## 開発に参加する、プロジェクトを支援する ## Ikut mengembangkan dan mendukung proyek
Misskeyを気に入っていただけたら、ぜひプロジェクトを支援してください。プロジェクトに貢献するには、以下で紹介するようにいろいろな方法があります。方法によっては開発のスキルは不要なので、誰でも気軽に参加し貢献することができます。いつでもお待ちしています。 Misskeyを気に入っていただけたら、ぜひプロジェクトを支援してください。プロジェクトに貢献するには、以下で紹介するようにいろいろな方法があります。方法によっては開発のスキルは不要なので、誰でも気軽に参加し貢献することができます。いつでもお待ちしています。
### 機能を追加したり、バグを修正する ### Menambahkan fitur atau memperbaiki bug
ソフトウェアエンジニアのスキルをお持ちの方であれば、ソースコードを編集する形でプロジェクトに貢献することができます。 貢献についてのガイドは[こちら](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)です。 ソフトウェアエンジニアのスキルをお持ちの方であれば、ソースコードを編集する形でプロジェクトに貢献することができます。 貢献についてのガイドは[こちら](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)です。
### 議論に参加する ### Berpartisipasi dalam diskusi
新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。 そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。 新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。 そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。
### テキストを翻訳する ### Menerjemahkan teks
Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。 その翻訳作業に加わっていただくことでもMisskeyに貢献できます。 Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey) Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。 その翻訳作業に加わっていただくことでもMisskeyに貢献できます。 Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey)
### 感想を投稿する ### Berbagi impresimu
不具合報告等だけではなく、Misskeyの良い点、楽しい点といったポジティブな意見もぜひ共有してください。開発の励みになり、それは間接的ですがプロジェクトへの貢献です。 不具合報告等だけではなく、Misskeyの良い点、楽しい点といったポジティブな意見もぜひ共有してください。開発の励みになり、それは間接的ですがプロジェクトへの貢献です。
### ミスキストを増やす ### Menambahkan jumlah Misskist
ミスキストとは、Misskeyを使用する人のことです。 知り合いに紹介するなどしてMisskeyを広めていただければ、ミスキストが増え開発のモチベーションが上がります。 ミスキストとは、Misskeyを使用する人のことです。 知り合いに紹介するなどしてMisskeyを広めていただければ、ミスキストが増え開発のモチベーションが上がります。
### 寄付をする ### Membuat donasi
Misskeyはビジネスではなく、利用は無料であるため、収益は皆様からの寄付のみです。(インスタンスによっては広告収入を得ているような場合もありますが、それは運営者の収入であり直接開発者への収入にはなりません) 寄付をしていただければ、今後も開発を続けることが可能になり、プロジェクトへの貢献になります。 寄付は基本的には[Patreon](https://www.patreon.com/syuilo)で受け付けています。 一定額寄付していただけると、Misskeyの[情報ページ](/about-misskey)に名前を記載することができます。 Misskeyはビジネスではなく、利用は無料であるため、収益は皆様からの寄付のみです。(インスタンスによっては広告収入を得ているような場合もありますが、それは運営者の収入であり直接開発者への収入にはなりません) 寄付をしていただければ、今後も開発を続けることが可能になり、プロジェクトへの貢献になります。 寄付は基本的には[Patreon](https://www.patreon.com/syuilo)で受け付けています。 一定額寄付していただけると、Misskeyの[情報ページ](/about-misskey)に名前を記載することができます。
また、サーバーの運営者も、基本的には収益を得ていません。サーバーの運営にはコストがかかるので、運営者の支援をすることもご検討ください。 開発には直接関係しませんが、サーバーがあってこそのプロジェクトなので、運営が維持されるというのは開発と同じくらい重要なことです。 また、サーバーの運営者も、基本的には収益を得ていません。サーバーの運営にはコストがかかるので、運営者の支援をすることもご検討ください。 開発には直接関係しませんが、サーバーがあってこそのプロジェクトなので、運営が維持されるというのは開発と同じくらい重要なことです。
## クレジット ## Kredit
Misskeyの開発者や、Misskeyに寄付をしてくださった方の一覧は[こちら](/about-misskey)で見ることができます。 Misskeyの開発者や、Misskeyに寄付をしてくださった方の一覧は[こちら](/about-misskey)で見ることができます。
## よくある質問 ## Pertanyaan Yang Sering Ditanyakan (FAQ)
### プロジェクトは何を目指していますか? ### Apa yang ingin dicapai dari project ini?
強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。 Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。 それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。 強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。 Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。 それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。
<!-- TODO: ここにロードマップへのリンク --> <!-- TODO: ここにロードマップへのリンク -->
### 企業によって開発されていますか? ### Apakah Misskey dikembangkan oleh perusahaan?
いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。 開発メンバーも基本的にはボランティアです。 また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。 いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。 開発メンバーも基本的にはボランティアです。 また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。
### 誰が運営していますか? ### Siapa yang mengelola Misskey?
Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。 また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。 サーバーの運営者は、[このページ](/about)で確認することができます。 あなたがサーバーを作成すれば、あなたが運営者になります。 Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。 また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。 サーバーの運営者は、[このページ](/about)で確認することができます。 あなたがサーバーを作成すれば、あなたが運営者になります。
### どのサーバーを選べばいいですか? ### Server mana yang seharusnya aku pilih?
[サーバー一覧が公開されています。](https://join.misskey.page/ja-JP/instances) サーバーによってコミュニティのテーマ(特定のこと、ものが好き 等)が決められている場合があるので、自分に合ったテーマのサーバーがあれば、そこを選ぶと良いかもしれません。 他にも、サーバーの規模、ユーザー層、国および言語、運営者が信頼できるかどうか、などの観点があります。 なお、Misskey公式のサーバーというものはありません。自身で新しくサーバーを作成するという選択肢もあります。 [サーバー一覧が公開されています。](https://join.misskey.page/ja-JP/instances) サーバーによってコミュニティのテーマ(特定のこと、ものが好き 等)が決められている場合があるので、自分に合ったテーマのサーバーがあれば、そこを選ぶと良いかもしれません。 他にも、サーバーの規模、ユーザー層、国および言語、運営者が信頼できるかどうか、などの観点があります。 なお、Misskey公式のサーバーというものはありません。自身で新しくサーバーを作成するという選択肢もあります。
基本的にどのサーバーを選んだとしても、他の全てのサーバーのユーザーと繋がることができます。 基本的にどのサーバーを選んだとしても、他の全てのサーバーのユーザーと繋がることができます。
### サーバーを建てるにはどうしたらいいですか? ### Bagaimana cara untuk membuat server milikku sendiri?
Misskeyサーバーの作成に興味を持っていただきありがとうございます。 2021年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。 サーバーの作成方法については[こちら](todo)をご覧ください。 Misskeyサーバーの作成に興味を持っていただきありがとうございます。 2021年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。 サーバーの作成方法については[こちら](todo)をご覧ください。
### どのような技術を使用していますか? ### Teknologi apa yang Misskey gunakan?
Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。 Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。
- サーバーサイド: Node.js - Server: Node.js
- データベース: PostgreSQL、Redis - Database: PostgreSQL, Redis
- UIフレームワーク: Vue.js - UI Framework: Vue.js
- プログラミング言語: TypeScript - Bahasa Pemrograman: TypeScript
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。 また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか ### Apakah ini fork dari Mastodon?
いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。 いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか ### Apakah ada aplikasi untuk iOS / Android tersedia?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。 公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。 ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
### Misskeyのロゴ、アイコンはどこで入手できますか ### Dimana aku bisa mengunduh logo atau ikon Misskey?
(準備中) (Sedang dipersiapkan)
### 時折目にする猫耳の可愛い女の子は? ### Siapa gadis imut bertelinga kucing yang sering muncul di Misskey?
Misskeyの守り神、藍ちゃんです。アイチャンカワイイヤッター! Misskeyの守り神、藍ちゃんです。アイチャンカワイイヤッター!
<div class="info"> 藍ちゃんについては<a href="https://xn--931a.moe/" target="_blank">こちら</a>です。</div> <div class="info"> 藍ちゃんについては<a href="https://xn--931a.moe/" target="_blank">こちら</a>です。</div>

View File

@ -1,31 +1,31 @@
# Timeline # Linha do tempo
タイムラインは、[ノート](./note)が時系列で表示される機能です。 タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。 なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。 タイムラインは、[ノート](./note)が時系列で表示される機能です。 タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。 なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。
## ホーム ## Início
自分のフォローしているユーザーの投稿が流れます。HTLと略されます。 Postagens de usuários que você segue serão mostradas.Abreviado como HTL.
## ローカル ## Local
全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。LTLと略されます。 全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。LTLと略されます。
## ソーシャル ## Social
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。STLと略されます。 自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。STLと略されます。
## グローバル ## Global
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿が流れます。GTLと略されます。 全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿が流れます。GTLと略されます。
## 比較 ## Comparação
| ソース | | | Timeline | | | | Fonte | | | Linha do tempo | | |
| ------------ | ----- | --- | -------- | ----- | ----- | | --------------- | ------------ | ------ | -------------- | ------ | ------ |
| Usuários | 公開範囲 | ホーム | ローカル | ソーシャル | グローバル | | Usuários | Visibilidade | Início | Local | Social | Global |
| ローカル (フォロー) | 公開 | ✔ | ✔ | ✔ | ✔ | | Local (seguir) | Público | ✔ | ✔ | ✔ | ✔ |
| | ホーム | ✔ | | ✔ | | | | Início | ✔ | | ✔ | |
| | フォロワー | ✔ | ✔ | ✔ | ✔ | | | Seguidores | ✔ | ✔ | ✔ | ✔ |
| リモート (フォロー) | 公開 | ✔ | | ✔ | ✔ | | Remoto (seguir) | Público | ✔ | | ✔ | ✔ |
| | ホーム | ✔ | | ✔ | | | | Início | ✔ | | ✔ | |
| | フォロワー | ✔ | | ✔ | ✔ | | | Seguidores | ✔ | | ✔ | ✔ |
| ローカル (未フォロー) | 公開 | | ✔ | ✔ | ✔ | | ローカル (未フォロー) | Público | | ✔ | ✔ | ✔ |
| | ホーム | | | | | | | Início | | | | |
| | フォロワー | | | | | | | Seguidores | | | | |
| リモート (未フォロー) | 公開 | | | | ✔ | | リモート (未フォロー) | Público | | | | ✔ |
| | ホーム | | | | | | | Início | | | | |
| | フォロワー | | | | | | | Seguidores | | | | |

View File

@ -1,12 +1,12 @@
# MFM # MFM
MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。 MFMで使用可能な構文は[MFMチートシート](/mfm-cheat-sheet)で確認できます。 MFM, Misskey Flavored Markdown — это язык разметки, который можно использовать для оформления текста, и он доступен много где на сайте. Есть [шпагралка по MFM](/mfm-cheat-sheet), в которой можно посмотреть синтаксис.
## MFMが使用可能な場所の例 ## Примеры случаев, где полезен MFM
- ノート本文 - оформление заметок;
- CW注釈 - предупреждение для содержимого не для всех;
- ユーザーの名前 - имена пользователей;
- ユーザーの自己紹介 - самопредставление.
## 開発者向け情報 ## Информация для разаботчиков
MFMのパーサー実装はライブラリとして公開されており、簡単にクライアントにMFMを組み込むことが可能です。 Реализация транслятора MFM опубликована в виде библиотеки, так что его несложно встроить в программу-клиент.
- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptパーサー実装 - реализация транслятора MFM на Javascript: [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js).

View File

@ -1,6 +1,6 @@
# サードパーティアプリのリスト # Список сторонних приложений
## クライアント ## Клиент
todo (пока не готово)
## 連携サービス ## Связанные службы
todo (в процессе)

View File

@ -1,5 +1,5 @@
# 更新履歴 # Журнал изменений
<div class="info"> このサーバーの更新履歴です。Misskeyの最新のリリースについては、<a href="https://github.com/misskey-dev/misskey/blob/master/CHANGELOG.md" target="_blank">GitHub</a>をご確認ください。</div> <div class="info"> Этот журнал отражает только изменения в последней версии на данном сайте.Последние изменения смотрите в репозитории на <a href="https://github.com/misskey-dev/misskey/blob/master/CHANGELOG.md" target="_blank">GitHub</a>.</div>
<!-- For translators: Do not edit these comments. --> <!-- For translators: Do not edit these comments. -->
<!--[CHANGELOG]--> <!--[CHANGELOG]-->

View File

@ -1,28 +1,28 @@
# よくある質問 # Часто задаваемые вопросы
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。 Здесь собраны частые вопросы об использовании Misskey. Вопросы, касающиеся проекта как такового — на [отдельной странице](./misskey).
## iOS/Androidのアプリはありますか ## Существуют ли приложения для iOS или Android?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。 Мы не делаем официальных приложений Misskey для какой-либо ОС, однако существуют сторонние программы. [Посмотрите наш список приложений, если интересно.](./apps)
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。 Обратите внимание, что новые функции в сторонних приложениях неизбежно будут появляться с некоторой задержкой, так что, если это вас не устраивает, лучше пользуйтесь официальным веб-клиентом. Кроме того, веб-клиент Misskey полностью соответствует требованиям технологии PWA, то есть, его можно заставить работать практически так же, как обычное приложение. [По ссылке есть дополнительная информация об этом.](todo)
## Mastodonクライアントでログインできないのですが ## Можно ли войти в Misskey через клиент Mastodon?
MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。 Программный интерфейс Misskey за мелкими исключениями несовместим с таковым у Mastodon, так что использовать клиенты Mastodon не получится.
## 他のサーバーのユーザーをフォローするときは? ## Как подписаться на пользователя с другого сайта?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io` Выберите «Поиск» из меню, и введите имя пользователя вместе с доменным именем сайта.Например, `@syuilo@misskey.io`.
## Renoteを削除するには ## Renoteを削除するには
Renoteの時刻表示の隣にある「...」を押し、「Renote解除」を選択します。 Renoteについては[こちら](../features/note)をご確認ください。 Нажмите три точки «•••» около даты репоста, и выберите «Отмена репоста». [Про репосты можно почитать по ссылке.](../features/note)
## URLのプレビューを表示させたくない ## Что сделать, чтобы не отображался предварительный просмотр ссылки?
MFMには、そのURLのプレビューを無効にする構文があります。詳細は[MFMチートシート](/mfm-cheat-sheet)をご確認ください。 Можно убрать предварительной просмотр посредством MFM.Об этом есть в [шпаргалке по MFM](/mfm-cheat-sheet).
## カスタム絵文字を追加したい ## Хочу новые, собственные эмодзи!
運営者のみがカスタム絵文字を追加、編集、削除できます。それらを希望する場合は運営者に依頼してください。 Добавить эмодзи может только администрация сервера, как и менять и удалять их.С такими пожеланиями обращайтесь к администраторам своего сайта.
## Botを開発したい ## Желаю разрабатывать бота
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。 Программный интерфейс Misskey позволяет делать ботов.[Есть отдельная страница для тех, кому это интересно](../advanced/develop-bot).
## ノートの翻訳機能はどのサービスを使用していますか? ## Какой сервис используется для перевода заметок?
[DeepL](https://www.deepl.com/)を使用しています。 Для этого применяется [DeepL](https://www.deepl.com/).

View File

@ -1,89 +1,89 @@
# 用語集 # Глоссарий
Misskeyに関する用語集です。 Это — словарь специальных терминов, используемых в Misskey.
## ActivityPub ## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。 /экти́вити-па́б/ протокол, используемый для децентрализации Misskey.Взаимодействием серверов по этому протоколу реализуется федерация, за счёт чего и образуется Федиверс (Fediverse).
## AiScript ## AiScript
(読み: あいすくりぷと) Misskey上で使用できるプログラミング言語です。詳細は[こちら。](../advanced/aiscript) /ай-скрипт/ язык программирования, доступный в Misskey.[Подробности — по ссылке.](../advanced/aiscript)
## API ## API
(読み: えーぴーあい) Misskeyのサーバーが公開している、プログラムからMisskeyを扱うためのインターフェース。詳細は[こちら。](../advanced/api) /эй-пи-ай/ интерфейс, посредством которого клиентская программа может взаимодействовать с сервером Misskey.[Смотрите подробности здесь.](../advanced/api)
## Bot ## Бот
(読み: ぼっと) プログラムによって動作しているアカウント。 учётная запись, которой управляет программа.
## CW ## CW
(読み: こんてんつわーにんぐ) Contents Warningの略。ートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。 (Content Warning) сокращение для фразы «предупреждение о содержимом не для всех».Функция, скрывающая содержимое заметки до тех пор, пока пользователь вручную не откроет его.Применяется в основном чтобы свернуть длинный текст или не показывать спойлер (неожиданный поворот сюжета).
## Fediverse ## Fediverse
(読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。 /федиве́рс/ множество серверов, в том числе на Misskey, которые взаимодействуют друг с другом, и тем самым образуют единую распределённую сеть.
## GTL ## ВЛ (GTL)
グローバルタイムライン(Global TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) сокращение для «всеобщая лента».[Про ленты смотрите ссылку.](../features/timeline)
## HTL ## ДЛ (HTL)
ホームタイムライン(Home TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) сокращение для «домашняя лента».[Про ленты смотрите ссылку.](../features/timeline)
## LTL ## МЛ (LTL)
ローカルタイムライン(Local TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) сокращение для «местная лента»[Про ленты смотрите ссылку.](../features/timeline)
## MFM ## MFM
(読み: えむえふえむ) Misskey Flavored Markdownの略で、Misskey上で使用できるマークアップ言語です。詳細は[こちら。](../features/mfm) /эм-эф-эм/ язык разметки, используемый в Misskey (Misskey Flavored Markdown)[См. ссылку.](../features/mfm)
## NSFW ## Содержимое не для всех (NSFW)
(読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。 то, что может быть неприемлемо для некоторых людей.Функция пометки изображения как «не для всех» и скрытия его до тех пор, пока пользователь сам не откроет его.
## Репост ## Репост
(読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note) Цитирование в неизменном виде уже существующей заметки, повторная публикация.[См. ссылку.](../features/note)
## STL ## СЛ (STL)
ソーシャルタイムライン(Social TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline) сокращение для «социальная лента».[Про ленты смотрите ссылку.](../features/timeline)
## ## Ай
(読み: あい) Misskeyの看板娘(公式キャラクター)です。 официальный маскот Misskey.
## アクティブユーザー ## Активные пользователи
インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。 пользователи, пользующиеся своей учётной записью по настоящее время.
## Инстанс ## Инстанс
todo (в планах)
## Эмодзи пользователя ## Эмодзи пользователя
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。 эмодзи, предоставляемые вашим сервером.Эмодзи, что не предоставляются сервером, но доступны по умолчанию, называются «юникодные эмодзи».
## コントロールパネル ## Панель управления
インスタンスの設定画面のこと。 страница настройки инстанса.
## Сервер ## Сервер
todo (в планах)
## Заглушить ## Заглушить
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence) скрыть заметки из общих лент.Действие может применяться модераторами в отношении отдельных пользователей.[См. ссылку.](../features/silence)
## Очередь заданий ## Очередь заданий
アクティビティ配送などを順番に行うためのシステム。 Средство последовательной трансляции активности на другие сервера.
## Заморозить ## Заморозить
アカウントが使用不可に設定されている状態。 сделать учётную запись недоступной для пользователя.
## Диск ## Диск
Misskeyにアップロードしたファイルを管理する機能。詳細は[こちら。](../features/drive) средство для загрузки и хранения файлов пользователей.[См. ссылку.](../features/drive)
## Заметки ## Заметка
Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note) Сообщение, могущее содержать текст, изображения, опросы и прочее, которое публикуется в Misskey.[См. ссылку.](../features/note)
## ミスキスト ## Мискиец
Misskeyを使う人のこと。 пользователь Misskey.
## Модератор ## Модератор
スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。 Пользователь с правами управления сообществом, который может, например, удалять недопустимые публикации, или замораживать учётные записи, с которых рассылается спам.
## С других сайтов ## Удалённый, с другого сайта
他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。 то, что передано на данный сервер с другого.Используется также как определение для других слов: например «пользователь с другого сайта».Противоположность «местному».
## Федерация ## Федерация
サーバー上で作成された情報が他のサーバーに伝わること。 связь сервера с другими, позволяющая транслировать активность между ними.
## Местная ## Местный, с этого сайта
自サーバーのことを指します。ローカルユーザー、ローカルタイムラインといったように接頭辞としても使われます。リモートの逆です。 то, что относится к тому же серверу.Используется также как определение для других слов, например, «пользователь с этого сайта».Противоположность «удалённому».

View File

@ -1,12 +1,12 @@
# リンク集 # Полезные ссылки
## Webサイト ## Веб-сайты
- [Official Discord](https://discord.gg/Wp8gVStHW3) - Misskey公式Discordサーバー - [Официальный Discord](https://discord.gg/Wp8gVStHW3) — официальный Discord-сервер Misskey.
- [Misskey Forum](https://forum.misskey.io/) - Misskeyに関する話題を扱うフォーラム - [Форум Misskey](https://forum.misskey.io/) — форум для обсуждения разных вопросов и Misskey.
## Учётные записи ## Учётные записи
- [@repo@misskey.io](https://misskey.io/@repo) - Misskeyのリポジトリの更新を投稿するbot - [@repo@misskey.io](https://misskey.io/@repo) — бот, публикующий информацию об обновлениях в репозитории Misskey.
## ライブラリ ## Библиотеки
- [misskey-dev/misskey.js](https://github.com/misskey-dev/misskey.js) - JavaScriptのMisskey SDK - [misskey-dev/misskey.js](https://github.com/misskey-dev/misskey.js) — набор средств разработки на Javascript для Misskey.
- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptのMFMパーサー実装 - [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) — реализация транслятора MFM на Javascript.

View File

@ -91,7 +91,7 @@ Misskey — некоммерческий проект, он бесплатен
### Какой узел выбрать? ### Какой узел выбрать?
[По ссылке есть (неполный) список узлов.](https://join.misskey.page/ja-JP/instances) У какого-то узла может быть заявлена объединяющая всех тематика (какое-то кино или хобби, например). Если такое вас интересует, присоединиться будет неплохим выбором. Кроме того, для вас могут быть важны размер сервера, коллектив, страна, язык, или доверяете ли вы его хозяевам. Какого-то особого «официального» сервера у Misskey нет.Ко всему прочему вы можете создать свой собственный узел на личном сервере. [По ссылке есть (неполный) список узлов.](https://join.misskey.page/ja-JP/instances) Некоторые узлы посвящены определённой тематике, например, какому-нибудь кино, или хобби. Если такое вас интересует, этот узел будет неплохим выбором. Кроме того, для вас могут быть важны размер сервера, коллектив, страна, язык, или доверяете ли вы его хозяевам. Какого-то особого «официального» сервера у Misskey нет.Ко всему прочему вы можете создать свой собственный узел на личном сервере.
По большому счёту не важно, какой узел вы себе выберете. Независимо от этого вы будете на связи со всеми остальными узлами сети. По большому счёту не важно, какой узел вы себе выберете. Независимо от этого вы будете на связи со всеми остальными узлами сети.
@ -99,34 +99,34 @@ Misskey — некоммерческий проект, он бесплатен
### Как поднять свой собственный сервер? ### Как поднять свой собственный сервер?
Misskeyサーバーの作成に興味を持っていただきありがとうございます。 2021年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。 サーバーの作成方法については[こちら](todo)をご覧ください。 Для начала хотим выразить признательность за ваш интерес к созданию своего сервера. На текущий 2021 год не существует специальных провайдеров для хостинга Misskey, так что для его установки понадобится некоторое умение. [Узнать, как поднять свой сервер, можете по ссылке.](todo)
### Какие технологии использует Misskey? ### Какие технологии использует Misskey?
Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。 По ходу развития Misskey используемые технологии успели значительно поменяться.В начале использовалась связка MySQL + PHP + jQuery, но теперь используется следующее:
- ПО на стороне сервера: Node.js - ПО на стороне сервера: Node.js;
- Система управления базой данных: PostgreSQL, Redis - система управления базой данных: PostgreSQL, Redis;
- Интерфейс пользователя: Vue.js - интерфейс пользователя: Vue.js;
- Язык программирования: TypeScript - язык программирования: TypeScript;
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。 и, кроме, того, технологии, родившиеся в самом Misskey, как например AiScript.
### А не клон ли это Mastodon? ### А не клон ли это Mastodon?
Нет.MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。 Нет. Проект Misskey не имеет никакого отношения к Mastodon и ему подобным проектам. Что касается разработки, то она велась уже давно.Однако децентрализованным он стал уже после появления Mastodon. Помимо того, что в обоих используется протокол децентрализации ActivityPub, между этим проектами нет ничего общего.
### Существуют ли приложения для iOS или Android? ### Существуют ли приложения для iOS или Android?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。 Мы не делаем официальных приложений Misskey для какой-либо ОС, однако существуют сторонние программы. [Посмотрите наш список приложений, если интересно.](./apps)
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。 Обратите внимание, что новые функции в сторонних приложениях неизбежно будут появляться с некоторой задержкой, так что, если это вас не устраивает, лучше пользуйтесь официальным веб-клиентом. Кроме того, веб-клиент Misskey полностью соответствует требованиям технологии PWA, то есть, его можно заставить работать практически так же, как обычное приложение. [По ссылке есть дополнительная информация об этом.](todo)

View File

@ -1,8 +1,8 @@
# 不具合の報告 # Как сообщить об ошибке
不具合と思われる状況に遭遇したときは、まず[トラブルシューティング](./troubleshooting)をご一読ください。 それでも問題が解決しないときは、以下の情報を含めて[フォーラム](https://forum.misskey.io/)に投稿してください。 投稿することで、解決策が見つかったり、不具合と判断されれば開発チームによって修正が行われます。 Если вы столкнулись с чем-то, похожим на программную ошибку, сначала загляните на страницу [«Разрешение проблем»](./troubleshooting), возможно, там есть есть решение. Если после этого не смогли справиться с проблемой самостоятельно, напишите об этом на [Форуме](https://forum.misskey.io/), включив сведения, перечисленные ниже. Не исключено, что там вам помогут найти решение. Если же это и правда ошибка, команда разработчиков об этом узнает и сможет её исправить.
## 含める情報 ## О чём писать в сообщении
- Misskeyのバージョン([情報ページ](/about)で確認できます) - версию Misskey (её можно на странице [«О Misskey»](/about));
- お使いのブラウザの種類とバージョン - наименование и версию вашего браузера;
- お使いのOSの種類とバージョン - наименование и версию вашей операционной системы;
- 問題の再現手順 - последовательность действий, которая привела к описываемой вами проблеме.

View File

@ -1,40 +1,40 @@
# Разрешение проблем # Разрешение проблем
<div class="info"> <a href="./faq">よくある質問</a>も合わせてお役立てください。</div> <div class="info"> <a href="./faq">Часто задаваемые вопросы</a> также могут быть полезны.</div>
問題が発生したときは、まずこちらをご確認ください。 該当する項目が無い、もしくは手順を試しても効果がない場合は、サーバーの管理者に連絡するか[不具合を報告](./report-issue)してください。 При возникновении каких-либо проблем, сначала поищите решение здесь. Если не нашли подходящего пункта, или с помощью изложенного здесь не удалось решить вопрос, обратитесь к администрации своего узла или [сообщите об ошибке разработчикам](./report-issue).
## クライアントが起動しない ## Клиент не запускается
ほとんどの場合、お使いのブラウザまたはOSのバージョンが古いことが原因です。 ブラウザおよびOSのバージョンを最新のものに更新してから、再度試してみてください。 В большинстве случаев виной этому оказывается слишком старая версия браузера или ОС. Попробуйте обновить браузер и ОС до последней версии и попытайтесь снова.
これは稀ですが、それでも起動しない場合は、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。 Иногда клиент не запускается из-за проблемы с кэшем.Очистите кэш браузера и попробуйте ещё раз.
## ページが読み込めない ## Содержимое страницы не загружается
クライアントが起動するもののページが読み込めないというエラーが出る場合は、ネットワークに問題がないか確認してください。また、サーバーがダウンしていないか確認してください。 Если клиент запускается, но выдаёт сообщение, что содержимое не может быть загружено, проверьте сетевое соединение на наличие проблем.Также проверьте, что нужный сервер не отключен, например, на обслуживание.
これは稀ですが、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。 В редких случаях может быть дело в кэше.Очистите кэш браузера и попробуйте ещё раз.
まだ問題がある場合は、サーバーの問題と思われるのでサーバーの管理者に連絡してください。 Остальные проблемы в основном связаны с серверной частью, так что, если написанное не помогло, постарайтесь связаться с администрацией сервера.
## クライアントの動作が遅い ## Клиент тормозит
以下を試してみてください: Попробуйте следующее:
- クライアント設定で「UIのアニメーションを減らす」を有効にする - включите в настройках клиента пункт «Уменьшить анимацию в пользовательском интерфейсе»;
- クライアント設定で「モーダルにぼかし効果を使用」を無効にする - выключите пункт «Размывка под формой поверх всего» там же;
- お使いのブラウザの設定でハードウェアアクセラレーションを有効にする - включите в настройках браузера аппаратное ускорение графики;
- お使いのデバイスのスペックを上げる - проведите апгрейд.
## UIの一部の表示がおかしい(背景が透明になっている等) ## Некоторые элементы интерфейса выглядят странно и неудобно (например, фон стал прозрачным)
アップデートによりUIの改修が行われたときに、テーマのキャッシュシステムの影響でそのような表示になることがあります。 クライアントの設定の「キャッシュをクリア」すると直ります。 Такое может происходить из-за кэширования тем, когда происходит изменение интерфейса при обновлении. Исправить это можно нажав на кнопку «Очистить кэш» в настройках клиента.
<div class="warn">⚠️ 「クライアントの」キャッシュクリアです。「ブラウザの」キャッシュクリアは行わないでください。</div> <div class="warn">⚠️ Очищать нужно именно кэш клиента!Очистка кэша браузера тут не поможет. Не нужно делать этого.</div>
## 通知やアンテナ等の点滅が消えない ## Мигающий индикатор при «Антенне» не пропадает.
点滅は、未読のコンテンツがあることを示しています。通常点滅が消えない場合は、コンテンツを遡ると未読なコンテンツが残っています。 すべて既読にしたと思われるのに、それでもなお点滅が続く場合(おそらく不具合と思われます)は設定から強制的にすべて既読扱いにすることができます。 Мигающий индикатор означает, что здесь есть что-то ещё не прочитанное.Обычно такое происходит, когда непрочитанное уползает далеко из-за большого количества новых заметок. Если вы уверены, что всё прочитали, но значок всё ещё на месте (возможно, из-за ошибки), то можете явно пометить всё как прочитанное в настройках.
## Renoteができない ## Недоступен репост.
フォロワー限定のートはRenoteすることはできません。 Нельзя репостить заметки, предназначенные только для подписчиков.
## UI上で特定の要素が表示されない ## Некоторые нужные элементы интерфейса не отображаются
広告ブロッカーを使用しているとそのような不具合が発生することがあります。Misskeyではオフにしてご利用ください。 Проблемы вроде этой могут проявляться при использовании блокировщика рекламы.Отключите его при использовании Misskey.
## UI上で未翻訳の部分がある ## Некоторые элементы интерфейса на иностранном языке
ほとんどの場合、単に翻訳が間に合っていないだけで、不具合ではありません。翻訳が終わるまでお待ちください。 [翻訳に参加](./misskey)していただくことも可能です。 Обычно это не программная ошибка, а просто перевод интерфейса отстаёт от текущей версии.Подождите, пока переводчики сделают своё дело. Или [помогите переводу](./misskey) сами.

View File

@ -1,4 +1,4 @@
# MisskeyリバーシBotの開発 # Misskey黑白棋机器人开发
Misskeyのリバーシ機能に対応したBotの開発方法をここに記します。 Misskeyのリバーシ機能に対応したBotの開発方法をここに記します。
1. `games/reversi`ストリームに以下のパラメータを付けて接続する: 1. `games/reversi`ストリームに以下のパラメータを付けて接続する:

View File

@ -31,7 +31,7 @@
<tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>お気に入りに登録</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr> <tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>お気に入りに登録</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr>
<tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>投稿を削除</td><td><b>D</b>elete</tr> <tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>投稿を削除</td><td><b>D</b>elete</tr>
<tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></tr> <tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>CWで隠された部分を表示 or 隠す</td><td><b>S</b>how, <b>S</b>ee</td></tr> <tr><td><kbd class="key">S</kbd></td><td>显示或隐藏CW的隐藏部分</td><td><b>S</b>how, <b>S</b>ee</td></tr>
<tr><td><kbd class="key">Esc</kbd></td><td>フォーカスを外す</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>フォーカスを外す</td><td>-</td></tr>
</tbody> </tbody>
</table> </table>

View File

@ -3,7 +3,7 @@ MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用
## MFMが使用可能な場所の例 ## MFMが使用可能な場所の例
- ノート本文 - ノート本文
- CW注 - CW注
- ユーザーの名前 - ユーザーの名前
- ユーザーの自己紹介 - ユーザーの自己紹介

View File

@ -8,7 +8,7 @@
ノートを[お気に入り](./favorite)登録することで、後で簡単に見返すことができます。 ノートを[お気に入り](./favorite)登録することで、後で簡単に見返すことができます。
## ノートを作成する ## ノートを作成する
ノートを作成するには、画面上にある鉛筆マークのボタンを押して、作成フォームを開きます。作成フォームに内容を入力し、「ノート」ボタンを押すことでノートが作成されます。 ノートには、画像、動画など任意のファイルや、[アンケート](./poll)を添付することができます。また、本文中には[MFM](./mfm)が使用でき、[メンション](./mention)や[ハッシュタグ](./hashtag)を含めることもできます。 他にも、CWや公開範囲といった設定も行えます(詳細は後述)。 ノートを作成するには、画面上にある鉛筆マークのボタンを押して、作成フォームを開きます。作成フォームに内容を入力し、「ノート」ボタンを押すことでノートが作成されます。 ノートには、画像、動画など任意のファイルや、[アンケート](./poll)を添付することができます。您还可以通过在文本中使用[MFM](./mfm)来将[提及](./mention)和[Hash标签](./hashtag)包含在内。 另外还可以设置CW的可见范围等(详细说明见后文)。
<div class="info"> コンピューターのクリップボードに画像データがある状態で、フォーム内のテキストボックスにペーストするとその画像を添付することができます。</div> <div class="info"> コンピューターのクリップボードに画像データがある状態で、フォーム内のテキストボックスにペーストするとその画像を添付することができます。</div>
<div class="info"> テキストボックス内で<kbd class="key">Ctrl + Enter</kbd>を押すことでも投稿できます。</div> <div class="info"> テキストボックス内で<kbd class="key">Ctrl + Enter</kbd>を押すことでも投稿できます。</div>

View File

@ -1,13 +1,13 @@
import * as fs from 'fs'; import * as fs from 'fs';
import * as stream from 'stream'; import * as stream from 'stream';
import * as util from 'util'; import * as util from 'util';
import { URL } from 'url'; import got, * as Got from 'got';
import fetch from 'node-fetch'; import { httpAgent, httpsAgent } from './fetch';
import { getAgentByUrl } from './fetch';
import { AbortController } from 'abort-controller';
import config from '@/config/index'; import config from '@/config/index';
import * as chalk from 'chalk'; import * as chalk from 'chalk';
import Logger from '@/services/logger'; import Logger from '@/services/logger';
import * as IPCIDR from 'ip-cidr';
const PrivateIp = require('private-ip');
const pipeline = util.promisify(stream.pipeline); const pipeline = util.promisify(stream.pipeline);
@ -15,26 +15,72 @@ export async function downloadUrl(url: string, path: string) {
const logger = new Logger('download'); const logger = new Logger('download');
logger.info(`Downloading ${chalk.cyan(url)} ...`); logger.info(`Downloading ${chalk.cyan(url)} ...`);
const controller = new AbortController();
setTimeout(() => {
controller.abort();
}, 60 * 1000);
const response = await fetch(new URL(url).href, { const timeout = 30 * 1000;
const operationTimeout = 60 * 1000;
const maxSize = config.maxFileSize || 262144000;
const req = got.stream(url, {
headers: { headers: {
'User-Agent': config.userAgent 'User-Agent': config.userAgent
}, },
timeout: 10 * 1000, timeout: {
signal: controller.signal, lookup: timeout,
agent: getAgentByUrl, connect: timeout,
}); secureConnect: timeout,
socket: timeout, // read timeout
if (!response.ok) { response: timeout,
logger.error(`Got ${response.status} (${url})`); send: timeout,
throw response.status; request: operationTimeout, // whole operation timeout
},
agent: {
http: httpAgent,
https: httpsAgent,
},
retry: 0,
}).on('response', (res: Got.Response) => {
if ((process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test') && !config.proxy && res.ip) {
if (isPrivateIp(res.ip)) {
logger.warn(`Blocked address: ${res.ip}`);
req.destroy();
}
} }
await pipeline(response.body, fs.createWriteStream(path)); const contentLength = res.headers['content-length'];
if (contentLength != null) {
const size = Number(contentLength);
if (size > maxSize) {
logger.warn(`maxSize exceeded (${size} > ${maxSize}) on response`);
req.destroy();
}
}
}).on('downloadProgress', (progress: Got.Progress) => {
if (progress.transferred > maxSize) {
logger.warn(`maxSize exceeded (${progress.transferred} > ${maxSize}) on downloadProgress`);
req.destroy();
}
}).on('error', (e: any) => {
if (e.name === 'HTTPError') {
const statusCode = e.response?.statusCode;
const statusMessage = e.response?.statusMessage;
e.name = `StatusError`;
e.statusCode = statusCode;
e.message = `${statusCode} ${statusMessage}`;
}
});
await pipeline(req, fs.createWriteStream(path));
logger.succ(`Download finished: ${chalk.cyan(url)}`); logger.succ(`Download finished: ${chalk.cyan(url)}`);
} }
function isPrivateIp(ip: string) {
for (const net of config.allowedPrivateNetworks || []) {
const cidr = new IPCIDR(net);
if (cidr.contains(ip)) {
return false;
}
}
return PrivateIp(ip);
}

View File

@ -16,6 +16,7 @@ import discord from './service/discord';
import github from './service/github'; import github from './service/github';
import twitter from './service/twitter'; import twitter from './service/twitter';
import { Instances, AccessTokens, Users } from '@/models/index'; import { Instances, AccessTokens, Users } from '@/models/index';
import config from '@/config';
// Init app // Init app
const app = new Koa(); const app = new Koa();
@ -37,7 +38,11 @@ app.use(bodyParser({
// Init multer instance // Init multer instance
const upload = multer({ const upload = multer({
storage: multer.diskStorage({}) storage: multer.diskStorage({}),
limits: {
fileSize: config.maxFileSize || 262144000,
files: 1,
}
}); });
// Init router // Init router

View File

@ -83,10 +83,10 @@ export default async function(ctx: Koa.Context) {
ctx.set('Content-Type', image.type); ctx.set('Content-Type', image.type);
ctx.set('Cache-Control', 'max-age=31536000, immutable'); ctx.set('Cache-Control', 'max-age=31536000, immutable');
} catch (e) { } catch (e) {
serverLogger.error(e); serverLogger.error(e.statusCode);
if (typeof e == 'number' && e >= 400 && e < 500) { if (typeof e.statusCode === 'number' && e.statusCode >= 400 && e.statusCode < 500) {
ctx.status = e; ctx.status = e.statusCode;
ctx.set('Cache-Control', 'max-age=86400'); ctx.set('Cache-Control', 'max-age=86400');
} else { } else {
ctx.status = 500; ctx.status = 500;

View File

@ -39,8 +39,8 @@ export async function proxyMedia(ctx: Koa.Context) {
} catch (e) { } catch (e) {
serverLogger.error(e); serverLogger.error(e);
if (typeof e == 'number' && e >= 400 && e < 500) { if (typeof e.statusCode === 'number' && e.statusCode >= 400 && e.statusCode < 500) {
ctx.status = e; ctx.status = e.statusCode;
} else { } else {
ctx.status = 500; ctx.status = 500;
} }

View File

@ -164,6 +164,7 @@ module.exports = {
], ],
alias: { alias: {
'@client': __dirname + '/src/client', '@client': __dirname + '/src/client',
'@lib': __dirname + '/lib',
'@': __dirname + '/src', '@': __dirname + '/src',
'const.styl': __dirname + '/src/client/const.styl' 'const.styl': __dirname + '/src/client/const.styl'
} }

View File

@ -5742,6 +5742,27 @@ ioredis@^4.27.0:
redis-parser "^3.0.0" redis-parser "^3.0.0"
standard-as-callback "^2.1.0" standard-as-callback "^2.1.0"
ip-address@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-7.1.0.tgz#4a9c699e75b51cbeb18b38de8ed216efa1a490c5"
integrity sha512-V9pWC/VJf2lsXqP7IWJ+pe3P1/HCYGBMZrrnT62niLGjAfCbeiwXMUxaeHvnVlz19O27pvXP4azs+Pj/A0x+SQ==
dependencies:
jsbn "1.1.0"
sprintf-js "1.1.2"
ip-cidr@3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/ip-cidr/-/ip-cidr-3.0.4.tgz#a915c47e00f47ea8d5f8ed662ea6161471c44375"
integrity sha512-pKNiqmBlTvEkhaLAa3+FOmYSY0/jjADVxxjA3NbujZZTT8mjLI90Q+6mwg6kd0fNm0RuAOkWJ1u1a/ETmlrPNQ==
dependencies:
ip-address "^7.1.0"
jsbn "^1.1.0"
ip-regex@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5"
integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==
ip@^1.1.5: ip@^1.1.5:
version "1.1.5" version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
@ -6238,6 +6259,11 @@ js-yaml@~3.7.0:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^2.6.0" esprima "^2.6.0"
jsbn@1.1.0, jsbn@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
integrity sha1-sBMHyym2GKHtJux56RH4A8TaAEA=
jsbn@~0.1.0: jsbn@~0.1.0:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@ -7440,6 +7466,11 @@ nested-property@4.0.0:
resolved "https://registry.yarnpkg.com/nested-property/-/nested-property-4.0.0.tgz#a67b5a31991e701e03cdbaa6453bc5b1011bb88d" resolved "https://registry.yarnpkg.com/nested-property/-/nested-property-4.0.0.tgz#a67b5a31991e701e03cdbaa6453bc5b1011bb88d"
integrity sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA== integrity sha512-yFehXNWRs4cM0+dz7QxCd06hTbWbSkV0ISsqBfkntU6TOY4Qm3Q88fRRLOddkGh2Qq6dZvnKVAahfhjcUvLnyA==
netmask@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
next-line@^1.1.0: next-line@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/next-line/-/next-line-1.1.0.tgz#fcae57853052b6a9bae8208e40dd7d3c2d304603" resolved "https://registry.yarnpkg.com/next-line/-/next-line-1.1.0.tgz#fcae57853052b6a9bae8208e40dd7d3c2d304603"
@ -8861,6 +8892,14 @@ prismjs@1.24.1:
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.24.1.tgz#c4d7895c4d6500289482fa8936d9cdd192684036" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.24.1.tgz#c4d7895c4d6500289482fa8936d9cdd192684036"
integrity sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow== integrity sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==
private-ip@2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/private-ip/-/private-ip-2.2.1.tgz#4fe167d04e12eca5c67cdcbd3224e86b38c79253"
integrity sha512-jN1WT/br/VNW9xEcwHr6DjtOKxQ5qOIqmh7o+co2TWgq56pZJw99iO3UT1tWdfgsQiyK9FqG4ji3ykwpjFqITA==
dependencies:
ip-regex "^4.3.0"
netmask "^2.0.2"
probe-image-size@7.2.1: probe-image-size@7.2.1:
version "7.2.1" version "7.2.1"
resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.1.tgz#df0c924e67e247bc94f8fcb0fad7f0081061fc44" resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.1.tgz#df0c924e67e247bc94f8fcb0fad7f0081061fc44"
@ -10103,6 +10142,11 @@ split@^1.0.0:
dependencies: dependencies:
through "2" through "2"
sprintf-js@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
sprintf-js@~1.0.2: sprintf-js@~1.0.2:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"