mirror of
https://activitypub.software/TransFem-org/Sharkey
synced 2024-11-25 15:35:12 +00:00
Merge branch 'develop'
This commit is contained in:
commit
f00ceedae4
730 changed files with 4175 additions and 2578 deletions
13
.babelrc
13
.babelrc
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"plugins": [
|
|
||||||
[
|
|
||||||
"@babel/plugin-transform-runtime",
|
|
||||||
{
|
|
||||||
"corejs": {
|
|
||||||
"version": 3,
|
|
||||||
"proposals": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
11
.github/dependabot.yml
vendored
Normal file
11
.github/dependabot.yml
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "npm" # See documentation for possible values
|
||||||
|
directory: "/" # Location of package manifests
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -7,6 +7,22 @@
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
## 12.89.0 (2021/08/21)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- アカウント削除の安定性を向上
|
||||||
|
- 絵文字オートコンプリートの挙動を改修
|
||||||
|
- localStorageのaccountsはindexedDBで保持するように
|
||||||
|
- ActivityPub: ジョブキューの試行タイミングを調整 (#7635)
|
||||||
|
- API: sw/unregisterを追加
|
||||||
|
- ワードミュートのドキュメントを追加
|
||||||
|
- クライアントのデザインの調整
|
||||||
|
- 依存関係の更新
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- チャンネルを作成しているとアカウントを削除できないのを修正
|
||||||
|
- ノートの「削除して編集」をするとアンケートの選択肢が[object Object]になる問題を修正
|
||||||
|
|
||||||
## 12.88.0 (2021/08/17)
|
## 12.88.0 (2021/08/17)
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
|
@ -35,6 +35,11 @@ If your language is not listed in Crowdin, please open an issue.
|
||||||
## Test
|
## Test
|
||||||
* Test codes are located in [`/test`](/test).
|
* Test codes are located in [`/test`](/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
|
||||||
|
```
|
||||||
|
|
||||||
## 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).
|
||||||
|
@ -245,6 +250,9 @@ npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前
|
||||||
### コネクションには`markRaw`せよ
|
### コネクションには`markRaw`せよ
|
||||||
**Vueのコンポーネントのdataオプションとして**misskey.jsのコネクションを設定するとき、必ず`markRaw`でラップしてください。インスタンスが不必要にリアクティブ化されることで、misskey.js内の処理で不具合が発生するとともに、パフォーマンス上の問題にも繋がる。なお、Composition APIを使う場合はこの限りではない(リアクティブ化はマニュアルなため)。
|
**Vueのコンポーネントのdataオプションとして**misskey.jsのコネクションを設定するとき、必ず`markRaw`でラップしてください。インスタンスが不必要にリアクティブ化されることで、misskey.js内の処理で不具合が発生するとともに、パフォーマンス上の問題にも繋がる。なお、Composition APIを使う場合はこの限りではない(リアクティブ化はマニュアルなため)。
|
||||||
|
|
||||||
|
### JSONのimportに気を付けよう
|
||||||
|
TypeScriptでjsonをimportすると、tscでコンパイルするときにそのjsonファイルも一緒にdistディレクトリに吐き出されてしまう。この挙動により、意図せずファイルの書き換えが発生することがあるので、jsonをimportするときは書き換えられても良いものかどうか確認すること。書き換えされて欲しくない場合は、importで読み込むのではなく、`fs.readFileSync`などの関数を使って読み込むようにすればよい。
|
||||||
|
|
||||||
## その他
|
## その他
|
||||||
### HTMLのクラス名で follow という単語は使わない
|
### HTMLのクラス名で follow という単語は使わない
|
||||||
広告ブロッカーで誤ってブロックされる
|
広告ブロッカーで誤ってブロックされる
|
||||||
|
|
|
@ -24,7 +24,7 @@ Please install and setup these softwares:
|
||||||
|
|
||||||
#### Dependencies :package:
|
#### Dependencies :package:
|
||||||
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
|
* **[Node.js](https://nodejs.org/en/)** (12.x, 14.x)
|
||||||
* **[PostgreSQL](https://www.postgresql.org/)** (>= 10)
|
* **[PostgreSQL](https://www.postgresql.org/)** (12.x / 13.x is preferred)
|
||||||
* **[Redis](https://redis.io/)**
|
* **[Redis](https://redis.io/)**
|
||||||
|
|
||||||
##### Optional
|
##### Optional
|
||||||
|
|
10
index.js
10
index.js
|
@ -1,3 +1,13 @@
|
||||||
|
/*
|
||||||
|
import * as fs from 'fs';
|
||||||
|
|
||||||
|
if (fs.existsSync('./built')) {
|
||||||
|
import('./built/index.js').then(built => built());
|
||||||
|
} else {
|
||||||
|
console.log('Built code is not found. Probably an error occurred during a build or you just forgot to build.');
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
if (fs.existsSync('./built')) {
|
if (fs.existsSync('./built')) {
|
||||||
|
|
|
@ -777,6 +777,14 @@ misskeyUpdated: "Misskey wurde aktualisiert!"
|
||||||
whatIsNew: "Änderungen anzeigen"
|
whatIsNew: "Änderungen anzeigen"
|
||||||
translate: "Übersetzen"
|
translate: "Übersetzen"
|
||||||
translatedFrom: "Aus {x} übersetzt"
|
translatedFrom: "Aus {x} übersetzt"
|
||||||
|
accountDeletionInProgress: "Löschung des Benutzerkontos momentan in Bearbeitung"
|
||||||
|
_accountDelete:
|
||||||
|
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."
|
||||||
|
sendEmail: "Sobald die Löschung abgeschlossen ist, wird an die mit ihm verknüpfte Email-Adresse eine Benachrichtigung versendet."
|
||||||
|
requestAccountDelete: "Löschung des Benutzerkontos anfordern"
|
||||||
|
started: "Löschung wurde eingeleitet."
|
||||||
|
inProgress: "Löschung in Bearbeitung"
|
||||||
_docs:
|
_docs:
|
||||||
continueReading: "Mehr lesen"
|
continueReading: "Mehr lesen"
|
||||||
features: "Funktionen"
|
features: "Funktionen"
|
||||||
|
|
|
@ -777,6 +777,14 @@ misskeyUpdated: "Misskey has been updated!"
|
||||||
whatIsNew: "Show changes"
|
whatIsNew: "Show changes"
|
||||||
translate: "Translate"
|
translate: "Translate"
|
||||||
translatedFrom: "Translated from {x}"
|
translatedFrom: "Translated from {x}"
|
||||||
|
accountDeletionInProgress: "Account deletion is currently in progress"
|
||||||
|
_accountDelete:
|
||||||
|
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."
|
||||||
|
sendEmail: "Once account deletion has been completed, an email will be sent to the email address registered to this account."
|
||||||
|
requestAccountDelete: "Request account deletion"
|
||||||
|
started: "Deletion has been started."
|
||||||
|
inProgress: "Deletion is currently in progress"
|
||||||
_docs:
|
_docs:
|
||||||
continueReading: "Read more"
|
continueReading: "Read more"
|
||||||
features: "Features"
|
features: "Features"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
_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 diskonigi tion ke nun okazas, aŭ por dissendu pri vi📡\nPer la funkcio \"reago\" vi ankaŭ povas rapide esprimi vian senton pri ĉies noto👍\nVolu esplori nova mondo🚀"
|
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. 🚀"
|
||||||
monthAndDay: "{day}-a/{month}"
|
monthAndDay: "{day}-a/{month}"
|
||||||
search: "Serĉi"
|
search: "Serĉi"
|
||||||
notifications: "Sciigoj"
|
notifications: "Sciigoj"
|
||||||
|
@ -119,7 +119,7 @@ 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: "Rekomendaj agordoj"
|
||||||
cacheRemoteFiles: "Havi staplon por transaj dosieroj"
|
cacheRemoteFiles: "Havi staplon de transaj dosieroj"
|
||||||
flagAsBot: "Tiu uzanto estas roboto"
|
flagAsBot: "Tiu uzanto estas roboto"
|
||||||
flagAsCat: "Tiu uzanto estas kato"
|
flagAsCat: "Tiu uzanto estas kato"
|
||||||
addAccount: "Aldoni konton"
|
addAccount: "Aldoni konton"
|
||||||
|
@ -151,7 +151,7 @@ blockedUsers: "Blokataj 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 ne plu povas alpingli noton."
|
pinLimitExceeded: "Vi povas alpingli ne pli noton."
|
||||||
processing: "Traktado..."
|
processing: "Traktado..."
|
||||||
noCustomEmojis: "Neniu emoĵio"
|
noCustomEmojis: "Neniu emoĵio"
|
||||||
federating: "Kunfederado"
|
federating: "Kunfederado"
|
||||||
|
@ -169,7 +169,7 @@ currentPassword: "Aktuala pasvorto"
|
||||||
newPassword: "Nova pasvorto"
|
newPassword: "Nova pasvorto"
|
||||||
newPasswordRetype: "Reentajpu la novan pasvorton"
|
newPasswordRetype: "Reentajpu la novan pasvorton"
|
||||||
attachFile: "Aldoni dosieron"
|
attachFile: "Aldoni dosieron"
|
||||||
more: "Plu!"
|
more: "Plu !"
|
||||||
featured: "Maksimumi"
|
featured: "Maksimumi"
|
||||||
usernameOrUserId: "Uzantnomo aŭ identigilo de uzanto"
|
usernameOrUserId: "Uzantnomo aŭ identigilo de uzanto"
|
||||||
noSuchUser: "Neniuj uzantoj trovitaj."
|
noSuchUser: "Neniuj uzantoj trovitaj."
|
||||||
|
@ -351,6 +351,7 @@ emailServer: "Retpoŝta servilo"
|
||||||
email: "Retpoŝto"
|
email: "Retpoŝto"
|
||||||
emailAddress: "Retpoŝta adreso"
|
emailAddress: "Retpoŝta adreso"
|
||||||
smtpConfig: "Agordoj de la servilo SMTP"
|
smtpConfig: "Agordoj de la servilo SMTP"
|
||||||
|
smtpPort: "Pordo"
|
||||||
smtpUser: "Uzantnomo"
|
smtpUser: "Uzantnomo"
|
||||||
smtpPass: "Pasvorto"
|
smtpPass: "Pasvorto"
|
||||||
wordMute: "Silentigo de vortoj"
|
wordMute: "Silentigo de vortoj"
|
||||||
|
@ -363,9 +364,9 @@ create: "Krei"
|
||||||
notificationSetting: "Agordoj de sciigoj"
|
notificationSetting: "Agordoj de sciigoj"
|
||||||
useGlobalSetting: "Oni uzas malloka agordo"
|
useGlobalSetting: "Oni uzas malloka agordo"
|
||||||
fileIdOrUrl: "Dosiera identigilo aŭ URL"
|
fileIdOrUrl: "Dosiera identigilo aŭ URL"
|
||||||
abuseReports: "Signali"
|
abuseReports: "Signaloj"
|
||||||
reportAbuse: "Signali"
|
reportAbuse: "Signalo"
|
||||||
reportAbuseOf: "Signali {name}'(o)n"
|
reportAbuseOf: "Signali kontraŭ {name}'(o)"
|
||||||
send: "Sendi"
|
send: "Sendi"
|
||||||
openInNewTab: "Malfermi en nova langeto"
|
openInNewTab: "Malfermi en nova langeto"
|
||||||
editTheseSettingsMayBreakAccount: "Redakti tiujn agordojn estas eble damaĝi konton."
|
editTheseSettingsMayBreakAccount: "Redakti tiujn agordojn estas eble damaĝi konton."
|
||||||
|
@ -667,6 +668,8 @@ _pages:
|
||||||
arg1: "Listoj"
|
arg1: "Listoj"
|
||||||
_listLen:
|
_listLen:
|
||||||
arg1: "Listoj"
|
arg1: "Listoj"
|
||||||
|
_splitStrByLine:
|
||||||
|
arg1: "Teksto"
|
||||||
types:
|
types:
|
||||||
array: "Listoj"
|
array: "Listoj"
|
||||||
stringArray: "List de teksto"
|
stringArray: "List de teksto"
|
||||||
|
@ -677,7 +680,7 @@ _notification:
|
||||||
youGotMessagingMessageFromGroup: "Retbabilan mesaĝon oni sendis al la grupo {name}"
|
youGotMessagingMessageFromGroup: "Retbabilan mesaĝon oni sendis al la grupo {name}"
|
||||||
youWereFollowed: "sksekvis vin"
|
youWereFollowed: "sksekvis vin"
|
||||||
youReceivedFollowRequest: "Vi ricevis peton de sekvado"
|
youReceivedFollowRequest: "Vi ricevis peton de sekvado"
|
||||||
yourFollowRequestAccepted: "Via peto por eksekvu estas akceptita."
|
yourFollowRequestAccepted: "Via peto por sekvado estis akceptita."
|
||||||
_types:
|
_types:
|
||||||
follow: "Sekvatoj"
|
follow: "Sekvatoj"
|
||||||
mention: "Mencioj"
|
mention: "Mencioj"
|
||||||
|
@ -685,7 +688,7 @@ _notification:
|
||||||
quote: "Citi"
|
quote: "Citi"
|
||||||
reaction: "Reagoj"
|
reaction: "Reagoj"
|
||||||
receiveFollowRequest: "Ricevita peton de sekvado"
|
receiveFollowRequest: "Ricevita peton de sekvado"
|
||||||
followRequestAccepted: "Peto por eksekvu akceptita"
|
followRequestAccepted: "Akceptita peto por sekvado"
|
||||||
_deck:
|
_deck:
|
||||||
profile: "Agordaro"
|
profile: "Agordaro"
|
||||||
_columns:
|
_columns:
|
||||||
|
|
|
@ -777,6 +777,15 @@ misskeyUpdated: "Misskeyが更新されました!"
|
||||||
whatIsNew: "更新情報を見る"
|
whatIsNew: "更新情報を見る"
|
||||||
translate: "翻訳"
|
translate: "翻訳"
|
||||||
translatedFrom: "{x}から翻訳"
|
translatedFrom: "{x}から翻訳"
|
||||||
|
accountDeletionInProgress: "アカウントの削除が進行中です"
|
||||||
|
|
||||||
|
_accountDelete:
|
||||||
|
accountDelete: "アカウントの削除"
|
||||||
|
mayTakeTime: "アカウントの削除は負荷のかかる処理であるため、作成したコンテンツの数やアップロードしたファイルの数が多いと完了までに時間がかかることがあります。"
|
||||||
|
sendEmail: "アカウントの削除が完了する際は、登録してあったメールアドレス宛に通知を送信します。"
|
||||||
|
requestAccountDelete: "アカウント削除をリクエスト"
|
||||||
|
started: "削除処理が開始されました。"
|
||||||
|
inProgress: "削除が進行中"
|
||||||
|
|
||||||
_docs:
|
_docs:
|
||||||
continueReading: "続きを読む"
|
continueReading: "続きを読む"
|
||||||
|
|
14
migration/1629288472000-fix-channel-userId.ts
Normal file
14
migration/1629288472000-fix-channel-userId.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||||
|
|
||||||
|
export class fixChannelUserId1629288472000 implements MigrationInterface {
|
||||||
|
name = 'fixChannelUserId1629288472000'
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`ALTER TABLE "channel" ALTER COLUMN "userId" DROP NOT NULL;`);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`ALTER TABLE "channel" ALTER COLUMN "userId" SET NOT NULL;`);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
15
migration/1629512953000-user-is-deleted.ts
Normal file
15
migration/1629512953000-user-is-deleted.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import {MigrationInterface, QueryRunner} from "typeorm";
|
||||||
|
|
||||||
|
export class isUserDeleted1629512953000 implements MigrationInterface {
|
||||||
|
name = 'isUserDeleted1629512953000'
|
||||||
|
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`ALTER TABLE "user" ADD "isDeleted" boolean NOT NULL DEFAULT false`);
|
||||||
|
await queryRunner.query(`COMMENT ON COLUMN "user"."isDeleted" IS 'Whether the User is deleted.'`);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "isDeleted"`);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
66
package.json
66
package.json
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <syuilotan@yahoo.co.jp>",
|
"author": "syuilo <syuilotan@yahoo.co.jp>",
|
||||||
"version": "12.88.0",
|
"version": "12.89.0",
|
||||||
"codename": "indigo",
|
"codename": "indigo",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -10,8 +10,8 @@
|
||||||
"main": "./index.js",
|
"main": "./index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node ./index.js",
|
"start": "node --experimental-json-modules ./index.js",
|
||||||
"start:test": "cross-env NODE_ENV=test node ./index.js",
|
"start:test": "cross-env NODE_ENV=test node --experimental-json-modules ./index.js",
|
||||||
"init": "npm run migrate",
|
"init": "npm run migrate",
|
||||||
"ormconfig": "node ./built/ormconfig.js",
|
"ormconfig": "node ./built/ormconfig.js",
|
||||||
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run",
|
"migrate": "ts-node ./node_modules/typeorm/cli.js migration:run",
|
||||||
|
@ -38,7 +38,6 @@
|
||||||
"lodash": "^4.17.21"
|
"lodash": "^4.17.21"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/plugin-transform-runtime": "7.14.5",
|
|
||||||
"@elastic/elasticsearch": "7.11.0",
|
"@elastic/elasticsearch": "7.11.0",
|
||||||
"@koa/cors": "3.1.0",
|
"@koa/cors": "3.1.0",
|
||||||
"@koa/multer": "3.0.0",
|
"@koa/multer": "3.0.0",
|
||||||
|
@ -74,7 +73,7 @@
|
||||||
"@types/markdown-it": "12.0.3",
|
"@types/markdown-it": "12.0.3",
|
||||||
"@types/matter-js": "0.17.5",
|
"@types/matter-js": "0.17.5",
|
||||||
"@types/mocha": "8.2.3",
|
"@types/mocha": "8.2.3",
|
||||||
"@types/node": "16.6.0",
|
"@types/node": "16.6.2",
|
||||||
"@types/node-fetch": "2.5.12",
|
"@types/node-fetch": "2.5.12",
|
||||||
"@types/nodemailer": "6.4.4",
|
"@types/nodemailer": "6.4.4",
|
||||||
"@types/nprogress": "0.2.0",
|
"@types/nprogress": "0.2.0",
|
||||||
|
@ -90,7 +89,7 @@
|
||||||
"@types/redis": "2.8.31",
|
"@types/redis": "2.8.31",
|
||||||
"@types/rename": "1.0.4",
|
"@types/rename": "1.0.4",
|
||||||
"@types/request-stats": "3.0.0",
|
"@types/request-stats": "3.0.0",
|
||||||
"@types/rimraf": "3.0.1",
|
"@types/rimraf": "3.0.2",
|
||||||
"@types/seedrandom": "2.4.28",
|
"@types/seedrandom": "2.4.28",
|
||||||
"@types/sharp": "0.28.5",
|
"@types/sharp": "0.28.5",
|
||||||
"@types/sinonjs__fake-timers": "6.0.3",
|
"@types/sinonjs__fake-timers": "6.0.3",
|
||||||
|
@ -104,8 +103,8 @@
|
||||||
"@types/webpack-stream": "3.2.12",
|
"@types/webpack-stream": "3.2.12",
|
||||||
"@types/websocket": "1.0.4",
|
"@types/websocket": "1.0.4",
|
||||||
"@types/ws": "7.4.7",
|
"@types/ws": "7.4.7",
|
||||||
"@typescript-eslint/parser": "4.29.1",
|
"@typescript-eslint/parser": "4.29.2",
|
||||||
"@vue/compiler-sfc": "3.2.3",
|
"@vue/compiler-sfc": "3.2.4",
|
||||||
"abort-controller": "3.0.0",
|
"abort-controller": "3.0.0",
|
||||||
"apexcharts": "3.27.3",
|
"apexcharts": "3.27.3",
|
||||||
"autobind-decorator": "2.4.0",
|
"autobind-decorator": "2.4.0",
|
||||||
|
@ -113,25 +112,23 @@
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"aws-sdk": "2.966.0",
|
"aws-sdk": "2.966.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"blurhash": "1.1.3",
|
"blurhash": "1.1.4",
|
||||||
"broadcast-channel": "3.7.0",
|
"broadcast-channel": "4.2.0",
|
||||||
"bull": "3.26.0",
|
"bull": "3.28.1",
|
||||||
"cacheable-lookup": "6.0.0",
|
"cacheable-lookup": "6.0.0",
|
||||||
"cafy": "15.2.1",
|
"cafy": "15.2.1",
|
||||||
"cbor": "8.0.0",
|
"cbor": "8.0.0",
|
||||||
"chalk": "4.1.2",
|
"chalk": "4.1.2",
|
||||||
"chart.js": "2.9.4",
|
"chart.js": "2.9.4",
|
||||||
"cli-highlight": "2.1.11",
|
"cli-highlight": "2.1.11",
|
||||||
"commander": "7.2.0",
|
"commander": "8.1.0",
|
||||||
"compare-versions": "3.6.0",
|
"compare-versions": "3.6.0",
|
||||||
"concurrently": "6.2.0",
|
"concurrently": "6.2.1",
|
||||||
"content-disposition": "0.5.3",
|
"content-disposition": "0.5.3",
|
||||||
"core-js": "3.16.1",
|
|
||||||
"crc-32": "1.2.0",
|
"crc-32": "1.2.0",
|
||||||
"css-loader": "6.2.0",
|
"css-loader": "6.2.0",
|
||||||
"cssnano": "5.0.7",
|
"cssnano": "5.0.8",
|
||||||
"dateformat": "4.5.1",
|
"dateformat": "4.5.1",
|
||||||
"diskusage": "1.1.3",
|
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"eslint": "7.32.0",
|
"eslint": "7.32.0",
|
||||||
"eslint-plugin-vue": "7.16.0",
|
"eslint-plugin-vue": "7.16.0",
|
||||||
|
@ -147,13 +144,10 @@
|
||||||
"gulp-replace": "1.1.3",
|
"gulp-replace": "1.1.3",
|
||||||
"gulp-terser": "2.0.1",
|
"gulp-terser": "2.0.1",
|
||||||
"gulp-tslint": "8.1.4",
|
"gulp-tslint": "8.1.4",
|
||||||
"hard-source-webpack-plugin": "0.13.1",
|
|
||||||
"hpagent": "0.1.2",
|
"hpagent": "0.1.2",
|
||||||
"html-minifier": "4.0.0",
|
|
||||||
"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",
|
||||||
"is-root": "2.1.0",
|
|
||||||
"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",
|
||||||
|
@ -178,23 +172,20 @@
|
||||||
"mfm-js": "0.19.0",
|
"mfm-js": "0.19.0",
|
||||||
"misskey-js": "0.0.6",
|
"misskey-js": "0.0.6",
|
||||||
"mocha": "8.4.0",
|
"mocha": "8.4.0",
|
||||||
"moji": "0.5.1",
|
|
||||||
"ms": "2.1.3",
|
"ms": "2.1.3",
|
||||||
"multer": "1.4.3",
|
"multer": "1.4.3",
|
||||||
"nested-property": "4.0.0",
|
"nested-property": "4.0.0",
|
||||||
"node-fetch": "2.6.1",
|
"node-fetch": "2.6.1",
|
||||||
"nodemailer": "6.6.3",
|
"nodemailer": "6.6.3",
|
||||||
"object-assign-deep": "0.4.0",
|
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"parse5": "6.0.1",
|
"parse5": "6.0.1",
|
||||||
"pg": "8.6.0",
|
"pg": "8.7.1",
|
||||||
"portscanner": "2.2.0",
|
"portscanner": "2.2.0",
|
||||||
"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",
|
||||||
"probe-image-size": "7.2.1",
|
"probe-image-size": "7.2.1",
|
||||||
"promise-limit": "2.7.0",
|
"promise-limit": "2.7.0",
|
||||||
"promise-sequential": "1.1.1",
|
|
||||||
"pug": "3.0.2",
|
"pug": "3.0.2",
|
||||||
"punycode": "2.1.1",
|
"punycode": "2.1.1",
|
||||||
"pureimage": "0.3.2",
|
"pureimage": "0.3.2",
|
||||||
|
@ -202,21 +193,19 @@
|
||||||
"random-seed": "0.3.0",
|
"random-seed": "0.3.0",
|
||||||
"ratelimiter": "3.4.1",
|
"ratelimiter": "3.4.1",
|
||||||
"re2": "1.16.0",
|
"re2": "1.16.0",
|
||||||
"reconnecting-websocket": "4.4.0",
|
|
||||||
"redis": "3.1.2",
|
"redis": "3.1.2",
|
||||||
"redis-lock": "0.1.4",
|
"redis-lock": "0.1.4",
|
||||||
"reflect-metadata": "0.1.13",
|
"reflect-metadata": "0.1.13",
|
||||||
"regenerator-runtime": "0.13.9",
|
|
||||||
"rename": "1.0.4",
|
"rename": "1.0.4",
|
||||||
"request-stats": "3.0.0",
|
"request-stats": "3.0.0",
|
||||||
"require-all": "3.0.0",
|
"require-all": "3.0.0",
|
||||||
"rimraf": "3.0.2",
|
"rimraf": "3.0.2",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"sass": "1.37.5",
|
"sass": "1.38.0",
|
||||||
"sass-loader": "12.1.0",
|
"sass-loader": "12.1.0",
|
||||||
"seedrandom": "3.0.5",
|
"seedrandom": "3.0.5",
|
||||||
"sharp": "0.28.3",
|
"sharp": "0.29.0",
|
||||||
"speakeasy": "2.0.0",
|
"speakeasy": "2.0.0",
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"style-loader": "3.2.1",
|
"style-loader": "3.2.1",
|
||||||
|
@ -230,21 +219,18 @@
|
||||||
"tinycolor2": "1.4.2",
|
"tinycolor2": "1.4.2",
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
"ts-loader": "9.2.5",
|
"ts-loader": "9.2.5",
|
||||||
"ts-node": "10.2.0",
|
"ts-node": "10.2.1",
|
||||||
"tsc-alias": "1.3.8",
|
"tsc-alias": "1.3.9",
|
||||||
"tsconfig-paths": "3.10.1",
|
"tsconfig-paths": "3.10.1",
|
||||||
"tslint": "6.1.3",
|
"tslint": "6.1.3",
|
||||||
"tslint-sonarts": "1.9.0",
|
"tslint-sonarts": "1.9.0",
|
||||||
"twemoji-parser": "13.1.0",
|
"twemoji-parser": "13.1.0",
|
||||||
"typeorm": "0.2.32",
|
"typeorm": "0.2.37",
|
||||||
"typescript": "4.3.5",
|
"typescript": "4.3.5",
|
||||||
"ulid": "2.3.0",
|
"ulid": "2.3.0",
|
||||||
"uuid": "8.3.2",
|
"uuid": "8.3.2",
|
||||||
"v-debounce": "0.1.2",
|
"v-debounce": "0.1.2",
|
||||||
"vanilla-tilt": "1.7.1",
|
"vue": "3.2.4",
|
||||||
"vue": "3.2.3",
|
|
||||||
"vue-color": "2.8.1",
|
|
||||||
"vue-json-pretty": "1.8.1",
|
|
||||||
"vue-loader": "16.5.0",
|
"vue-loader": "16.5.0",
|
||||||
"vue-prism-editor": "2.0.0-alpha.2",
|
"vue-prism-editor": "2.0.0-alpha.2",
|
||||||
"vue-router": "4.0.5",
|
"vue-router": "4.0.5",
|
||||||
|
@ -252,19 +238,17 @@
|
||||||
"vue-svg-loader": "0.17.0-beta.2",
|
"vue-svg-loader": "0.17.0-beta.2",
|
||||||
"vuedraggable": "4.0.1",
|
"vuedraggable": "4.0.1",
|
||||||
"web-push": "3.4.5",
|
"web-push": "3.4.5",
|
||||||
"webpack": "5.50.0",
|
"webpack": "5.51.0",
|
||||||
"webpack-cli": "4.7.2",
|
"webpack-cli": "4.8.0",
|
||||||
"websocket": "1.0.34",
|
"websocket": "1.0.34",
|
||||||
"ws": "8.1.0",
|
"ws": "8.2.0",
|
||||||
"xev": "2.0.1"
|
"xev": "2.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@redocly/openapi-core": "1.0.0-beta.44",
|
"@redocly/openapi-core": "1.0.0-beta.54",
|
||||||
"@types/chai": "4.2.16",
|
|
||||||
"@types/fluent-ffmpeg": "2.1.17",
|
"@types/fluent-ffmpeg": "2.1.17",
|
||||||
"chai": "4.3.4",
|
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "8.2.0",
|
"cypress": "8.3.0",
|
||||||
"start-server-and-test": "1.13.1"
|
"start-server-and-test": "1.13.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
7
src/@types/is-root.d.ts
vendored
7
src/@types/is-root.d.ts
vendored
|
@ -1,7 +0,0 @@
|
||||||
declare module 'is-root' {
|
|
||||||
function isRoot(): boolean;
|
|
||||||
|
|
||||||
namespace isRoot {} // Hack
|
|
||||||
|
|
||||||
export = isRoot;
|
|
||||||
}
|
|
25
src/argv.ts
25
src/argv.ts
|
@ -1,20 +1,19 @@
|
||||||
import { Command } from 'commander';
|
import { Command } from 'commander';
|
||||||
import config from '@/config';
|
import config from '@/config/index';
|
||||||
|
|
||||||
const program = new Command();
|
const program = new Command();
|
||||||
|
|
||||||
program
|
program.version(config.version);
|
||||||
.version(config.version)
|
program.option('--no-daemons', 'Disable daemon processes (for debbuging)');
|
||||||
.option('--no-daemons', 'Disable daemon processes (for debbuging)')
|
program.option('--disable-clustering', 'Disable clustering');
|
||||||
.option('--disable-clustering', 'Disable clustering')
|
program.option('--only-server', 'Run server only (without job queue processing)');
|
||||||
.option('--only-server', 'Run server only (without job queue processing)')
|
program.option('--only-queue', 'Pocessing job queue only (without server)');
|
||||||
.option('--only-queue', 'Pocessing job queue only (without server)')
|
program.option('--quiet', 'Suppress all logs');
|
||||||
.option('--quiet', 'Suppress all logs')
|
program.option('--verbose', 'Enable all logs');
|
||||||
.option('--verbose', 'Enable all logs')
|
program.option('--with-log-time', 'Include timestamp for each logs');
|
||||||
.option('--with-log-time', 'Include timestamp for each logs')
|
program.option('--slow', 'Delay all requests (for debbuging)');
|
||||||
.option('--slow', 'Delay all requests (for debbuging)')
|
program.option('--color', 'This option is a dummy for some external program\'s (e.g. forever) issue.');
|
||||||
.option('--color', 'This option is a dummy for some external program\'s (e.g. forever) issue.')
|
program.parse(process.argv);
|
||||||
.parse(process.argv);
|
|
||||||
|
|
||||||
if (process.env.MK_ONLY_QUEUE) program.onlyQueue = true;
|
if (process.env.MK_ONLY_QUEUE) program.onlyQueue = true;
|
||||||
if (process.env.NODE_ENV === 'test') program.disableClustering = true;
|
if (process.env.NODE_ENV === 'test') program.disableClustering = true;
|
||||||
|
|
|
@ -2,7 +2,7 @@ import * as cluster from 'cluster';
|
||||||
import * as chalk from 'chalk';
|
import * as chalk from 'chalk';
|
||||||
import Xev from 'xev';
|
import Xev from 'xev';
|
||||||
|
|
||||||
import Logger from '../services/logger';
|
import Logger from '@/services/logger';
|
||||||
import { program } from '../argv';
|
import { program } from '../argv';
|
||||||
|
|
||||||
// for typeorm
|
// for typeorm
|
||||||
|
|
|
@ -1,18 +1,25 @@
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import { dirname } from 'path';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import * as cluster from 'cluster';
|
import * as cluster from 'cluster';
|
||||||
import * as chalk from 'chalk';
|
import * as chalk from 'chalk';
|
||||||
import * as portscanner from 'portscanner';
|
import * as portscanner from 'portscanner';
|
||||||
import * as isRoot from 'is-root';
|
|
||||||
import { getConnection } from 'typeorm';
|
import { getConnection } from 'typeorm';
|
||||||
|
|
||||||
import Logger from '../services/logger';
|
import Logger from '@/services/logger';
|
||||||
import loadConfig from '@/config/load';
|
import loadConfig from '@/config/load';
|
||||||
import { Config } from '@/config/types';
|
import { Config } from '@/config/types';
|
||||||
import { lessThan } from '../prelude/array';
|
import { lessThan } from '@/prelude/array';
|
||||||
import { program } from '../argv';
|
import { program } from '../argv';
|
||||||
import { showMachineInfo } from '@/misc/show-machine-info';
|
import { showMachineInfo } from '@/misc/show-machine-info';
|
||||||
import { initDb } from '../db/postgre';
|
import { initDb } from '../db/postgre';
|
||||||
const meta = require('../meta.json');
|
|
||||||
|
//const _filename = fileURLToPath(import.meta.url);
|
||||||
|
const _filename = __filename;
|
||||||
|
const _dirname = dirname(_filename);
|
||||||
|
|
||||||
|
const meta = JSON.parse(fs.readFileSync(`${_dirname}/../meta.json`, 'utf-8'));
|
||||||
|
|
||||||
const logger = new Logger('core', 'cyan');
|
const logger = new Logger('core', 'cyan');
|
||||||
const bootLogger = logger.createSubLogger('boot', 'magenta', false);
|
const bootLogger = logger.createSubLogger('boot', 'magenta', false);
|
||||||
|
@ -39,6 +46,11 @@ function greet() {
|
||||||
bootLogger.info(`Misskey v${meta.version}`, null, true);
|
bootLogger.info(`Misskey v${meta.version}`, null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isRoot() {
|
||||||
|
// maybe process.getuid will be undefined under not POSIX environment (e.g. Windows)
|
||||||
|
return process.getuid != null && process.getuid() === 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init master process
|
* Init master process
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
|
import { 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';
|
||||||
import { unisonReload } from '@client/scripts/unison-reload';
|
import { unisonReload, reloadChannel } from '@client/scripts/unison-reload';
|
||||||
|
|
||||||
// TODO: 他のタブと永続化されたstateを同期
|
// TODO: 他のタブと永続化されたstateを同期
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ type Account = {
|
||||||
token: string;
|
token: string;
|
||||||
isModerator: boolean;
|
isModerator: boolean;
|
||||||
isAdmin: boolean;
|
isAdmin: boolean;
|
||||||
|
isDeleted: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
const data = localStorage.getItem('account');
|
const data = localStorage.getItem('account');
|
||||||
|
@ -17,22 +19,45 @@ const data = localStorage.getItem('account');
|
||||||
// TODO: 外部からはreadonlyに
|
// TODO: 外部からはreadonlyに
|
||||||
export const $i = data ? reactive(JSON.parse(data) as Account) : null;
|
export const $i = data ? reactive(JSON.parse(data) as Account) : null;
|
||||||
|
|
||||||
export function signout() {
|
export async function signout() {
|
||||||
|
waiting();
|
||||||
localStorage.removeItem('account');
|
localStorage.removeItem('account');
|
||||||
|
|
||||||
|
//#region Remove account
|
||||||
|
const accounts = await getAccounts();
|
||||||
|
accounts.splice(accounts.findIndex(x => x.id === $i.id), 1);
|
||||||
|
set('accounts', accounts);
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
//#region Remove push notification registration
|
||||||
|
try {
|
||||||
|
const registration = await navigator.serviceWorker.ready;
|
||||||
|
const push = await registration.pushManager.getSubscription();
|
||||||
|
if (!push) return;
|
||||||
|
await fetch(`${apiUrl}/sw/unregister`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify({
|
||||||
|
i: $i.token,
|
||||||
|
endpoint: push.endpoint,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
} catch (e) {}
|
||||||
|
//#endregion
|
||||||
|
|
||||||
document.cookie = `igi=; path=/`;
|
document.cookie = `igi=; path=/`;
|
||||||
location.href = '/';
|
|
||||||
|
if (accounts.length > 0) login(accounts[0].token);
|
||||||
|
else unisonReload();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getAccounts() {
|
export async function getAccounts(): Promise<{ id: Account['id'], token: Account['token'] }[]> {
|
||||||
const accountsData = localStorage.getItem('accounts');
|
return (await get('accounts')) || [];
|
||||||
const accounts: { id: Account['id'], token: Account['token'] }[] = accountsData ? JSON.parse(accountsData) : [];
|
|
||||||
return accounts;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addAccount(id: Account['id'], token: Account['token']) {
|
export async function addAccount(id: Account['id'], token: Account['token']) {
|
||||||
const accounts = getAccounts();
|
const accounts = await getAccounts();
|
||||||
if (!accounts.some(x => x.id === id)) {
|
if (!accounts.some(x => x.id === id)) {
|
||||||
localStorage.setItem('accounts', JSON.stringify(accounts.concat([{ id, token }])));
|
await set('accounts', accounts.concat([{ id, token }]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +72,7 @@ function fetchAccount(token): Promise<Account> {
|
||||||
})
|
})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
// When failed to authenticate user
|
// When failed to authenticate user
|
||||||
if (res.status >= 400 && res.status < 500) {
|
if (res.status !== 200 && res.status < 500) {
|
||||||
return signout();
|
return signout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,15 +94,22 @@ export function updateAccount(data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function refreshAccount() {
|
export function refreshAccount() {
|
||||||
fetchAccount($i.token).then(updateAccount);
|
return fetchAccount($i.token).then(updateAccount);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function login(token: Account['token']) {
|
export async function login(token: Account['token'], redirect?: string) {
|
||||||
waiting();
|
waiting();
|
||||||
if (_DEV_) console.log('logging as token ', token);
|
if (_DEV_) console.log('logging as token ', token);
|
||||||
const me = await fetchAccount(token);
|
const me = await fetchAccount(token);
|
||||||
localStorage.setItem('account', JSON.stringify(me));
|
localStorage.setItem('account', JSON.stringify(me));
|
||||||
addAccount(me.id, token);
|
await addAccount(me.id, token);
|
||||||
|
|
||||||
|
if (redirect) {
|
||||||
|
reloadChannel.postMessage('reload');
|
||||||
|
location.href = redirect;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
unisonReload();
|
unisonReload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,8 @@ export default defineComponent({
|
||||||
|
|
||||||
&:not(.noGap) {
|
&:not(.noGap) {
|
||||||
> .notes {
|
> .notes {
|
||||||
|
background: var(--bg);
|
||||||
|
|
||||||
.qtqtichx {
|
.qtqtichx {
|
||||||
background: var(--panel);
|
background: var(--panel);
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<p class="mfcuwfyp" v-else-if="empty">{{ $ts.noNotifications }}</p>
|
<p class="mfcuwfyp" v-else-if="empty">{{ $ts.noNotifications }}</p>
|
||||||
|
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<XList class="notifications" :items="items" v-slot="{ item: notification }" :no-gap="true">
|
<XList class="elsfgstc" :items="items" v-slot="{ item: notification }" :no-gap="true">
|
||||||
<XNote v-if="['reply', 'quote', 'mention'].includes(notification.type)" :note="notification.note" @update:note="noteUpdated(notification.note, $event)" :key="notification.id"/>
|
<XNote v-if="['reply', 'quote', 'mention'].includes(notification.type)" :note="notification.note" @update:note="noteUpdated(notification.note, $event)" :key="notification.id"/>
|
||||||
<XNotification v-else :notification="notification" :with-time="true" :full="true" class="_panel notification" :key="notification.id"/>
|
<XNotification v-else :notification="notification" :with-time="true" :full="true" class="_panel notification" :key="notification.id"/>
|
||||||
</XList>
|
</XList>
|
||||||
|
@ -141,4 +141,8 @@ export default defineComponent({
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: var(--fg);
|
color: var(--fg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.elsfgstc {
|
||||||
|
background: var(--panel);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -339,7 +339,12 @@ export default defineComponent({
|
||||||
this.cw = init.cw;
|
this.cw = init.cw;
|
||||||
this.useCw = init.cw != null;
|
this.useCw = init.cw != null;
|
||||||
if (init.poll) {
|
if (init.poll) {
|
||||||
this.poll = init.poll;
|
this.poll = {
|
||||||
|
choices: init.poll.choices.map(x => x.text),
|
||||||
|
multiple: init.poll.multiple,
|
||||||
|
expiresAt: init.poll.expiresAt,
|
||||||
|
expiredAfter: init.poll.expiredAfter,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
this.visibility = init.visibility;
|
this.visibility = init.visibility;
|
||||||
this.localOnly = init.localOnly;
|
this.localOnly = init.localOnly;
|
||||||
|
|
|
@ -4,6 +4,15 @@
|
||||||
|
|
||||||
import '@client/style.scss';
|
import '@client/style.scss';
|
||||||
|
|
||||||
|
//#region account indexedDB migration
|
||||||
|
import { set } from '@client/scripts/idb-proxy';
|
||||||
|
|
||||||
|
if (localStorage.getItem('accounts') != null) {
|
||||||
|
set('accounts', JSON.parse(localStorage.getItem('accounts')));
|
||||||
|
localStorage.removeItem('accounts');
|
||||||
|
}
|
||||||
|
//#endregion
|
||||||
|
|
||||||
import * as Sentry from '@sentry/browser';
|
import * as Sentry from '@sentry/browser';
|
||||||
import { Integrations } from '@sentry/tracing';
|
import { Integrations } from '@sentry/tracing';
|
||||||
import { computed, createApp, watch, markRaw } from 'vue';
|
import { computed, createApp, watch, markRaw } from 'vue';
|
||||||
|
@ -301,6 +310,13 @@ for (const plugin of ColdDeviceStorage.get('plugins').filter(p => p.active)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($i) {
|
if ($i) {
|
||||||
|
if ($i.isDeleted) {
|
||||||
|
dialog({
|
||||||
|
type: 'warning',
|
||||||
|
text: i18n.locale.accountDeletionInProgress,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if ('Notification' in window) {
|
if ('Notification' in window) {
|
||||||
// 許可を得ていなかったらリクエスト
|
// 許可を得ていなかったらリクエスト
|
||||||
if (Notification.permission === 'default') {
|
if (Notification.permission === 'default') {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="">
|
<div class="clupoqwt" v-size="{ min: [800] }">
|
||||||
<XNotifications class="_content" @before="before" @after="after" page/>
|
<XNotifications class="notifications" @before="before" @after="after" page/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -43,3 +43,17 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.clupoqwt {
|
||||||
|
&.min-width_800px {
|
||||||
|
background: var(--bg);
|
||||||
|
padding: 32px 0;
|
||||||
|
|
||||||
|
> .notifications {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -48,10 +48,10 @@ export default defineComponent({
|
||||||
title: this.$ts.accounts,
|
title: this.$ts.accounts,
|
||||||
icon: 'fas fa-users',
|
icon: 'fas fa-users',
|
||||||
},
|
},
|
||||||
storedAccounts: getAccounts().filter(x => x.id !== this.$i.id),
|
storedAccounts: getAccounts().then(accounts => accounts.filter(x => x.id !== this.$i.id)),
|
||||||
accounts: null,
|
accounts: null,
|
||||||
init: () => os.api('users/show', {
|
init: async () => os.api('users/show', {
|
||||||
userIds: this.storedAccounts.map(x => x.id)
|
userIds: (await this.storedAccounts).map(x => x.id)
|
||||||
}).then(accounts => {
|
}).then(accounts => {
|
||||||
this.accounts = accounts;
|
this.accounts = accounts;
|
||||||
}),
|
}),
|
||||||
|
@ -104,8 +104,8 @@ export default defineComponent({
|
||||||
}, 'closed');
|
}, 'closed');
|
||||||
},
|
},
|
||||||
|
|
||||||
switchAccount(account: any) {
|
async switchAccount(account: any) {
|
||||||
const storedAccounts = getAccounts();
|
const storedAccounts = await getAccounts();
|
||||||
const token = storedAccounts.find(x => x.id === account.id).token;
|
const token = storedAccounts.find(x => x.id === account.id).token;
|
||||||
this.switchAccountWithToken(token);
|
this.switchAccountWithToken(token);
|
||||||
},
|
},
|
||||||
|
|
67
src/client/pages/settings/delete-account.vue
Normal file
67
src/client/pages/settings/delete-account.vue
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
<template>
|
||||||
|
<FormBase>
|
||||||
|
<FormInfo warn>{{ $ts._accountDelete.mayTakeTime }}</FormInfo>
|
||||||
|
<FormInfo>{{ $ts._accountDelete.sendEmail }}</FormInfo>
|
||||||
|
<FormButton @click="deleteAccount" danger v-if="!$i.isDeleted">{{ $ts._accountDelete.requestAccountDelete }}</FormButton>
|
||||||
|
<FormButton disabled v-else>{{ $ts._accountDelete.inProgress }}</FormButton>
|
||||||
|
</FormBase>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineAsyncComponent, defineComponent } from 'vue';
|
||||||
|
import FormInfo from '@client/components/form/info.vue';
|
||||||
|
import FormBase from '@client/components/form/base.vue';
|
||||||
|
import FormGroup from '@client/components/form/group.vue';
|
||||||
|
import FormButton from '@client/components/form/button.vue';
|
||||||
|
import * as os from '@client/os';
|
||||||
|
import { debug } from '@client/config';
|
||||||
|
import { signout } from '@client/account';
|
||||||
|
import * as symbols from '@client/symbols';
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
components: {
|
||||||
|
FormBase,
|
||||||
|
FormButton,
|
||||||
|
FormGroup,
|
||||||
|
FormInfo,
|
||||||
|
},
|
||||||
|
|
||||||
|
emits: ['info'],
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
[symbols.PAGE_INFO]: {
|
||||||
|
title: this.$ts._accountDelete.accountDelete,
|
||||||
|
icon: 'fas fa-exclamation-triangle'
|
||||||
|
},
|
||||||
|
debug,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$emit('info', this[symbols.PAGE_INFO]);
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async deleteAccount() {
|
||||||
|
const { canceled, result: password } = await os.dialog({
|
||||||
|
title: this.$ts.password,
|
||||||
|
input: {
|
||||||
|
type: 'password'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (canceled) return;
|
||||||
|
|
||||||
|
await os.apiWithDialog('i/delete-account', {
|
||||||
|
password: password
|
||||||
|
});
|
||||||
|
|
||||||
|
await os.dialog({
|
||||||
|
title: this.$ts._accountDelete.started,
|
||||||
|
});
|
||||||
|
|
||||||
|
signout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -132,6 +132,7 @@ export default defineComponent({
|
||||||
case 'account-info': return defineAsyncComponent(() => import('./account-info.vue'));
|
case 'account-info': return defineAsyncComponent(() => import('./account-info.vue'));
|
||||||
case 'update': return defineAsyncComponent(() => import('./update.vue'));
|
case 'update': return defineAsyncComponent(() => import('./update.vue'));
|
||||||
case 'registry': return defineAsyncComponent(() => import('./registry.vue'));
|
case 'registry': return defineAsyncComponent(() => import('./registry.vue'));
|
||||||
|
case 'delete-account': return defineAsyncComponent(() => import('./delete-account.vue'));
|
||||||
case 'experimental-features': return defineAsyncComponent(() => import('./experimental-features.vue'));
|
case 'experimental-features': return defineAsyncComponent(() => import('./experimental-features.vue'));
|
||||||
}
|
}
|
||||||
if (page.value.startsWith('registry/keys/system/')) {
|
if (page.value.startsWith('registry/keys/system/')) {
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
<FormLink to="/bios" behavior="browser"><template #icon><i class="fas fa-door-open"></i></template>BIOS</FormLink>
|
<FormLink to="/bios" behavior="browser"><template #icon><i class="fas fa-door-open"></i></template>BIOS</FormLink>
|
||||||
<FormLink to="/cli" behavior="browser"><template #icon><i class="fas fa-door-open"></i></template>CLI</FormLink>
|
<FormLink to="/cli" behavior="browser"><template #icon><i class="fas fa-door-open"></i></template>CLI</FormLink>
|
||||||
|
|
||||||
<FormButton @click="closeAccount" danger>{{ $ts.closeAccount }}</FormButton>
|
<FormLink to="./delete-account"><template #icon><i class="fas fa-exclamation-triangle"></i></template>{{ $ts.closeAccount }}</FormLink>
|
||||||
</FormBase>
|
</FormBase>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -41,7 +41,6 @@ import FormButton from '@client/components/form/button.vue';
|
||||||
import * as os from '@client/os';
|
import * as os from '@client/os';
|
||||||
import { debug } from '@client/config';
|
import { debug } from '@client/config';
|
||||||
import { defaultStore } from '@client/store';
|
import { defaultStore } from '@client/store';
|
||||||
import { signout } from '@client/account';
|
|
||||||
import { unisonReload } from '@client/scripts/unison-reload';
|
import { unisonReload } from '@client/scripts/unison-reload';
|
||||||
import * as symbols from '@client/symbols';
|
import * as symbols from '@client/symbols';
|
||||||
|
|
||||||
|
@ -92,22 +91,6 @@ export default defineComponent({
|
||||||
os.popup(import('@client/components/taskmanager.vue'), {
|
os.popup(import('@client/components/taskmanager.vue'), {
|
||||||
}, {}, 'closed');
|
}, {}, 'closed');
|
||||||
},
|
},
|
||||||
|
|
||||||
closeAccount() {
|
|
||||||
os.dialog({
|
|
||||||
title: this.$ts.password,
|
|
||||||
input: {
|
|
||||||
type: 'password'
|
|
||||||
}
|
|
||||||
}).then(({ canceled, result: password }) => {
|
|
||||||
if (canceled) return;
|
|
||||||
os.api('i/delete-account', {
|
|
||||||
password: password
|
|
||||||
}).then(() => {
|
|
||||||
signout();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="cmuxhskf" v-hotkey.global="keymap">
|
<div class="cmuxhskf" v-hotkey.global="keymap" v-size="{ min: [800] }">
|
||||||
<XTutorial v-if="$store.reactiveState.tutorial.value != -1" class="tutorial _block _isolated"/>
|
<XTutorial v-if="$store.reactiveState.tutorial.value != -1" class="tutorial _block _isolated"/>
|
||||||
<XPostForm v-if="$store.reactiveState.showFixedPostForm.value" class="post-form _block _isolated" fixed/>
|
<XPostForm v-if="$store.reactiveState.showFixedPostForm.value" class="post-form _block _isolated" fixed/>
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
|
@ -19,6 +19,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="new" v-if="queue > 0"><button class="_buttonPrimary" @click="top()">{{ $ts.newNoteRecived }}</button></div>
|
<div class="new" v-if="queue > 0"><button class="_buttonPrimary" @click="top()">{{ $ts.newNoteRecived }}</button></div>
|
||||||
|
<div class="tl">
|
||||||
<XTimeline ref="tl" class="tl"
|
<XTimeline ref="tl" class="tl"
|
||||||
:key="src === 'list' ? `list:${list.id}` : src === 'antenna' ? `antenna:${antenna.id}` : src === 'channel' ? `channel:${channel.id}` : src"
|
:key="src === 'list' ? `list:${list.id}` : src === 'antenna' ? `antenna:${antenna.id}` : src === 'channel' ? `channel:${channel.id}` : src"
|
||||||
:src="src"
|
:src="src"
|
||||||
|
@ -30,6 +31,7 @@
|
||||||
@after="after()"
|
@after="after()"
|
||||||
@queue="queueUpdated"
|
@queue="queueUpdated"
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -231,6 +233,7 @@ export default defineComponent({
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
border-bottom: solid 0.5px var(--divider);
|
||||||
|
|
||||||
// 影の都合上
|
// 影の都合上
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -287,8 +290,16 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.min-width_800px {
|
||||||
> .tl {
|
> .tl {
|
||||||
border-top: solid 0.5px var(--divider);
|
background: var(--bg);
|
||||||
|
padding: 32px 0;
|
||||||
|
|
||||||
|
> .tl {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -65,7 +65,7 @@ export class Autocomplete {
|
||||||
*/
|
*/
|
||||||
private onInput() {
|
private onInput() {
|
||||||
const caretPos = this.textarea.selectionStart;
|
const caretPos = this.textarea.selectionStart;
|
||||||
const text = this.text.substr(0, caretPos).split('\n').pop();
|
const text = this.text.substr(0, caretPos).split('\n').pop()!;
|
||||||
|
|
||||||
const mentionIndex = text.lastIndexOf('@');
|
const mentionIndex = text.lastIndexOf('@');
|
||||||
const hashtagIndex = text.lastIndexOf('#');
|
const hashtagIndex = text.lastIndexOf('#');
|
||||||
|
@ -83,7 +83,7 @@ export class Autocomplete {
|
||||||
|
|
||||||
const isMention = mentionIndex != -1;
|
const isMention = mentionIndex != -1;
|
||||||
const isHashtag = hashtagIndex != -1;
|
const isHashtag = hashtagIndex != -1;
|
||||||
const isEmoji = emojiIndex != -1;
|
const isEmoji = emojiIndex != -1 && text.split(/:[a-z0-9_+\-]+:/).pop()!.includes(':');
|
||||||
|
|
||||||
let opened = false;
|
let opened = false;
|
||||||
|
|
||||||
|
|
7
src/client/scripts/get-account-from-id.ts
Normal file
7
src/client/scripts/get-account-from-id.ts
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import { get } from '@client/scripts/idb-proxy';
|
||||||
|
|
||||||
|
export async function getAccountFromId(id: string) {
|
||||||
|
const accounts = await get('accounts') as { token: string; id: string; }[];
|
||||||
|
if (!accounts) console.log('Accounts are not recorded');
|
||||||
|
return accounts.find(e => e.id === id);
|
||||||
|
}
|
38
src/client/scripts/idb-proxy.ts
Normal file
38
src/client/scripts/idb-proxy.ts
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
// FirefoxのプライベートモードなどではindexedDBが使用不可能なので、
|
||||||
|
// indexedDBが使えない環境ではlocalStorageを使う
|
||||||
|
import {
|
||||||
|
get as iget,
|
||||||
|
set as iset,
|
||||||
|
del as idel,
|
||||||
|
createStore,
|
||||||
|
} from 'idb-keyval';
|
||||||
|
|
||||||
|
const fallbackName = (key: string) => `idbfallback::${key}`;
|
||||||
|
|
||||||
|
let idbAvailable = typeof window !== 'undefined' ? !!window.indexedDB : true;
|
||||||
|
|
||||||
|
if (idbAvailable) {
|
||||||
|
try {
|
||||||
|
await createStore('keyval-store', 'keyval');
|
||||||
|
} catch (e) {
|
||||||
|
console.error('idb open error', e);
|
||||||
|
idbAvailable = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!idbAvailable) console.error('indexedDB is unavailable. It will use localStorage.');
|
||||||
|
|
||||||
|
export async function get(key: string) {
|
||||||
|
if (idbAvailable) return iget(key);
|
||||||
|
return JSON.parse(localStorage.getItem(fallbackName(key)));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function set(key: string, val: any) {
|
||||||
|
if (idbAvailable) return iset(key, val);
|
||||||
|
return localStorage.setItem(fallbackName(key), JSON.stringify(val));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function del(key: string) {
|
||||||
|
if (idbAvailable) return idel(key);
|
||||||
|
return localStorage.removeItem(fallbackName(key));
|
||||||
|
}
|
|
@ -135,7 +135,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
|
|
||||||
async openAccountMenu(ev) {
|
async openAccountMenu(ev) {
|
||||||
const storedAccounts = getAccounts().filter(x => x.id !== this.$i.id);
|
const storedAccounts = await getAccounts().then(accounts => accounts.filter(x => x.id !== this.$i.id));
|
||||||
const accountsPromise = os.api('users/show', { userIds: storedAccounts.map(x => x.id) });
|
const accountsPromise = os.api('users/show', { userIds: storedAccounts.map(x => x.id) });
|
||||||
|
|
||||||
const accountItemPromises = storedAccounts.map(a => new Promise(res => {
|
const accountItemPromises = storedAccounts.map(a => new Promise(res => {
|
||||||
|
@ -195,8 +195,8 @@ export default defineComponent({
|
||||||
}, 'closed');
|
}, 'closed');
|
||||||
},
|
},
|
||||||
|
|
||||||
switchAccount(account: any) {
|
async switchAccount(account: any) {
|
||||||
const storedAccounts = getAccounts();
|
const storedAccounts = await getAccounts();
|
||||||
const token = storedAccounts.find(x => x.id === account.id).token;
|
const token = storedAccounts.find(x => x.id === account.id).token;
|
||||||
this.switchAccountWithToken(token);
|
this.switchAccountWithToken(token);
|
||||||
},
|
},
|
||||||
|
|
|
@ -101,7 +101,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
|
|
||||||
async openAccountMenu(ev) {
|
async openAccountMenu(ev) {
|
||||||
const storedAccounts = getAccounts().filter(x => x.id !== this.$i.id);
|
const storedAccounts = await getAccounts().then(accounts => accounts.filter(x => x.id !== this.$i.id));
|
||||||
const accountsPromise = os.api('users/show', { userIds: storedAccounts.map(x => x.id) });
|
const accountsPromise = os.api('users/show', { userIds: storedAccounts.map(x => x.id) });
|
||||||
|
|
||||||
const accountItemPromises = storedAccounts.map(a => new Promise(res => {
|
const accountItemPromises = storedAccounts.map(a => new Promise(res => {
|
||||||
|
@ -161,8 +161,8 @@ export default defineComponent({
|
||||||
}, 'closed');
|
}, 'closed');
|
||||||
},
|
},
|
||||||
|
|
||||||
switchAccount(account: any) {
|
async switchAccount(account: any) {
|
||||||
const storedAccounts = getAccounts();
|
const storedAccounts = await getAccounts();
|
||||||
const token = storedAccounts.find(x => x.id === account.id).token;
|
const token = storedAccounts.find(x => x.id === account.id).token;
|
||||||
this.switchAccountWithToken(token);
|
this.switchAccountWithToken(token);
|
||||||
},
|
},
|
||||||
|
|
|
@ -121,7 +121,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
|
|
||||||
async openAccountMenu(ev) {
|
async openAccountMenu(ev) {
|
||||||
const storedAccounts = getAccounts().filter(x => x.id !== this.$i.id);
|
const storedAccounts = await getAccounts().then(accounts => accounts.filter(x => x.id !== this.$i.id));
|
||||||
const accountsPromise = os.api('users/show', { userIds: storedAccounts.map(x => x.id) });
|
const accountsPromise = os.api('users/show', { userIds: storedAccounts.map(x => x.id) });
|
||||||
|
|
||||||
const accountItemPromises = storedAccounts.map(a => new Promise(res => {
|
const accountItemPromises = storedAccounts.map(a => new Promise(res => {
|
||||||
|
@ -181,8 +181,8 @@ export default defineComponent({
|
||||||
}, 'closed');
|
}, 'closed');
|
||||||
},
|
},
|
||||||
|
|
||||||
switchAccount(account: any) {
|
async switchAccount(account: any) {
|
||||||
const storedAccounts = getAccounts();
|
const storedAccounts = await getAccounts();
|
||||||
const token = storedAccounts.find(x => x.id === account.id).token;
|
const token = storedAccounts.find(x => x.id === account.id).token;
|
||||||
this.switchAccountWithToken(token);
|
this.switchAccountWithToken(token);
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,14 +3,19 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import { dirname } from 'path';
|
||||||
import * as yaml from 'js-yaml';
|
import * as yaml from 'js-yaml';
|
||||||
import { Source, Mixin } from './types';
|
import { Source, Mixin } from './types';
|
||||||
const meta = require('../meta.json');
|
|
||||||
|
//const _filename = fileURLToPath(import.meta.url);
|
||||||
|
const _filename = __filename;
|
||||||
|
const _dirname = dirname(_filename);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Path of configuration directory
|
* Path of configuration directory
|
||||||
*/
|
*/
|
||||||
const dir = `${__dirname}/../../.config`;
|
const dir = `${_dirname}/../../.config`;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Path of configuration file
|
* Path of configuration file
|
||||||
|
@ -20,6 +25,7 @@ const path = process.env.NODE_ENV === 'test'
|
||||||
: `${dir}/default.yml`;
|
: `${dir}/default.yml`;
|
||||||
|
|
||||||
export default function load() {
|
export default function load() {
|
||||||
|
const meta = JSON.parse(fs.readFileSync(`${_dirname}/../meta.json`, 'utf-8'));
|
||||||
const config = yaml.load(fs.readFileSync(path, 'utf-8')) as Source;
|
const config = yaml.load(fs.readFileSync(path, 'utf-8')) as Source;
|
||||||
|
|
||||||
const mixin = {} as Mixin;
|
const mixin = {} as Mixin;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// TODO: 消したい
|
// TODO: 消したい
|
||||||
|
|
||||||
const interval = 30 * 60 * 1000;
|
const interval = 30 * 60 * 1000;
|
||||||
import { AttestationChallenges } from '../models';
|
import { AttestationChallenges } from '@/models/index';
|
||||||
import { LessThan } from 'typeorm';
|
import { LessThan } from 'typeorm';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import * as elasticsearch from '@elastic/elasticsearch';
|
import * as elasticsearch from '@elastic/elasticsearch';
|
||||||
import config from '@/config';
|
import config from '@/config/index';
|
||||||
|
|
||||||
const index = {
|
const index = {
|
||||||
settings: {
|
settings: {
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
import Logger from '../services/logger';
|
import Logger from '@/services/logger';
|
||||||
|
|
||||||
export const dbLogger = new Logger('db');
|
export const dbLogger = new Logger('db');
|
||||||
|
|
|
@ -3,74 +3,74 @@ const types = require('pg').types;
|
||||||
types.setTypeParser(20, Number);
|
types.setTypeParser(20, Number);
|
||||||
|
|
||||||
import { createConnection, Logger, getConnection } from 'typeorm';
|
import { createConnection, Logger, getConnection } from 'typeorm';
|
||||||
import config from '@/config';
|
import config from '@/config/index';
|
||||||
import { entities as charts } from '../services/chart/entities';
|
import { entities as charts } from '@/services/chart/entities';
|
||||||
import { dbLogger } from './logger';
|
import { dbLogger } from './logger';
|
||||||
import * as highlight from 'cli-highlight';
|
import * as highlight from 'cli-highlight';
|
||||||
|
|
||||||
import { Log } from '../models/entities/log';
|
import { Log } from '@/models/entities/log';
|
||||||
import { User } from '../models/entities/user';
|
import { User } from '@/models/entities/user';
|
||||||
import { DriveFile } from '../models/entities/drive-file';
|
import { DriveFile } from '@/models/entities/drive-file';
|
||||||
import { DriveFolder } from '../models/entities/drive-folder';
|
import { DriveFolder } from '@/models/entities/drive-folder';
|
||||||
import { AccessToken } from '../models/entities/access-token';
|
import { AccessToken } from '@/models/entities/access-token';
|
||||||
import { App } from '../models/entities/app';
|
import { App } from '@/models/entities/app';
|
||||||
import { PollVote } from '../models/entities/poll-vote';
|
import { PollVote } from '@/models/entities/poll-vote';
|
||||||
import { Note } from '../models/entities/note';
|
import { Note } from '@/models/entities/note';
|
||||||
import { NoteReaction } from '../models/entities/note-reaction';
|
import { NoteReaction } from '@/models/entities/note-reaction';
|
||||||
import { NoteWatching } from '../models/entities/note-watching';
|
import { NoteWatching } from '@/models/entities/note-watching';
|
||||||
import { NoteUnread } from '../models/entities/note-unread';
|
import { NoteUnread } from '@/models/entities/note-unread';
|
||||||
import { Notification } from '../models/entities/notification';
|
import { Notification } from '@/models/entities/notification';
|
||||||
import { Meta } from '../models/entities/meta';
|
import { Meta } from '@/models/entities/meta';
|
||||||
import { Following } from '../models/entities/following';
|
import { Following } from '@/models/entities/following';
|
||||||
import { Instance } from '../models/entities/instance';
|
import { Instance } from '@/models/entities/instance';
|
||||||
import { Muting } from '../models/entities/muting';
|
import { Muting } from '@/models/entities/muting';
|
||||||
import { SwSubscription } from '../models/entities/sw-subscription';
|
import { SwSubscription } from '@/models/entities/sw-subscription';
|
||||||
import { Blocking } from '../models/entities/blocking';
|
import { Blocking } from '@/models/entities/blocking';
|
||||||
import { UserList } from '../models/entities/user-list';
|
import { UserList } from '@/models/entities/user-list';
|
||||||
import { UserListJoining } from '../models/entities/user-list-joining';
|
import { UserListJoining } from '@/models/entities/user-list-joining';
|
||||||
import { UserGroup } from '../models/entities/user-group';
|
import { UserGroup } from '@/models/entities/user-group';
|
||||||
import { UserGroupJoining } from '../models/entities/user-group-joining';
|
import { UserGroupJoining } from '@/models/entities/user-group-joining';
|
||||||
import { UserGroupInvitation } from '../models/entities/user-group-invitation';
|
import { UserGroupInvitation } from '@/models/entities/user-group-invitation';
|
||||||
import { Hashtag } from '../models/entities/hashtag';
|
import { Hashtag } from '@/models/entities/hashtag';
|
||||||
import { NoteFavorite } from '../models/entities/note-favorite';
|
import { NoteFavorite } from '@/models/entities/note-favorite';
|
||||||
import { AbuseUserReport } from '../models/entities/abuse-user-report';
|
import { AbuseUserReport } from '@/models/entities/abuse-user-report';
|
||||||
import { RegistrationTicket } from '../models/entities/registration-tickets';
|
import { RegistrationTicket } from '@/models/entities/registration-tickets';
|
||||||
import { MessagingMessage } from '../models/entities/messaging-message';
|
import { MessagingMessage } from '@/models/entities/messaging-message';
|
||||||
import { Signin } from '../models/entities/signin';
|
import { Signin } from '@/models/entities/signin';
|
||||||
import { AuthSession } from '../models/entities/auth-session';
|
import { AuthSession } from '@/models/entities/auth-session';
|
||||||
import { FollowRequest } from '../models/entities/follow-request';
|
import { FollowRequest } from '@/models/entities/follow-request';
|
||||||
import { Emoji } from '../models/entities/emoji';
|
import { Emoji } from '@/models/entities/emoji';
|
||||||
import { ReversiGame } from '../models/entities/games/reversi/game';
|
import { ReversiGame } from '@/models/entities/games/reversi/game';
|
||||||
import { ReversiMatching } from '../models/entities/games/reversi/matching';
|
import { ReversiMatching } from '@/models/entities/games/reversi/matching';
|
||||||
import { UserNotePining } from '../models/entities/user-note-pining';
|
import { UserNotePining } from '@/models/entities/user-note-pining';
|
||||||
import { Poll } from '../models/entities/poll';
|
import { Poll } from '@/models/entities/poll';
|
||||||
import { UserKeypair } from '../models/entities/user-keypair';
|
import { UserKeypair } from '@/models/entities/user-keypair';
|
||||||
import { UserPublickey } from '../models/entities/user-publickey';
|
import { UserPublickey } from '@/models/entities/user-publickey';
|
||||||
import { UserProfile } from '../models/entities/user-profile';
|
import { UserProfile } from '@/models/entities/user-profile';
|
||||||
import { UserSecurityKey } from '../models/entities/user-security-key';
|
import { UserSecurityKey } from '@/models/entities/user-security-key';
|
||||||
import { AttestationChallenge } from '../models/entities/attestation-challenge';
|
import { AttestationChallenge } from '@/models/entities/attestation-challenge';
|
||||||
import { Page } from '../models/entities/page';
|
import { Page } from '@/models/entities/page';
|
||||||
import { PageLike } from '../models/entities/page-like';
|
import { PageLike } from '@/models/entities/page-like';
|
||||||
import { GalleryPost } from '../models/entities/gallery-post';
|
import { GalleryPost } from '@/models/entities/gallery-post';
|
||||||
import { GalleryLike } from '../models/entities/gallery-like';
|
import { GalleryLike } from '@/models/entities/gallery-like';
|
||||||
import { ModerationLog } from '../models/entities/moderation-log';
|
import { ModerationLog } from '@/models/entities/moderation-log';
|
||||||
import { UsedUsername } from '../models/entities/used-username';
|
import { UsedUsername } from '@/models/entities/used-username';
|
||||||
import { Announcement } from '../models/entities/announcement';
|
import { Announcement } from '@/models/entities/announcement';
|
||||||
import { AnnouncementRead } from '../models/entities/announcement-read';
|
import { AnnouncementRead } from '@/models/entities/announcement-read';
|
||||||
import { Clip } from '../models/entities/clip';
|
import { Clip } from '@/models/entities/clip';
|
||||||
import { ClipNote } from '../models/entities/clip-note';
|
import { ClipNote } from '@/models/entities/clip-note';
|
||||||
import { Antenna } from '../models/entities/antenna';
|
import { Antenna } from '@/models/entities/antenna';
|
||||||
import { AntennaNote } from '../models/entities/antenna-note';
|
import { AntennaNote } from '@/models/entities/antenna-note';
|
||||||
import { PromoNote } from '../models/entities/promo-note';
|
import { PromoNote } from '@/models/entities/promo-note';
|
||||||
import { PromoRead } from '../models/entities/promo-read';
|
import { PromoRead } from '@/models/entities/promo-read';
|
||||||
import { program } from '../argv';
|
import { program } from '../argv';
|
||||||
import { Relay } from '../models/entities/relay';
|
import { Relay } from '@/models/entities/relay';
|
||||||
import { MutedNote } from '../models/entities/muted-note';
|
import { MutedNote } from '@/models/entities/muted-note';
|
||||||
import { Channel } from '../models/entities/channel';
|
import { Channel } from '@/models/entities/channel';
|
||||||
import { ChannelFollowing } from '../models/entities/channel-following';
|
import { ChannelFollowing } from '@/models/entities/channel-following';
|
||||||
import { ChannelNotePining } from '../models/entities/channel-note-pining';
|
import { ChannelNotePining } from '@/models/entities/channel-note-pining';
|
||||||
import { RegistryItem } from '../models/entities/registry-item';
|
import { RegistryItem } from '@/models/entities/registry-item';
|
||||||
import { Ad } from '../models/entities/ad';
|
import { Ad } from '@/models/entities/ad';
|
||||||
import { PasswordResetRequest } from '@/models/entities/password-reset-request';
|
import { PasswordResetRequest } from '@/models/entities/password-reset-request';
|
||||||
|
|
||||||
const sqlLogger = dbLogger.createSubLogger('sql', 'white', false);
|
const sqlLogger = dbLogger.createSubLogger('sql', 'white', false);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import * as redis from 'redis';
|
import * as redis from 'redis';
|
||||||
import config from '@/config';
|
import config from '@/config/index';
|
||||||
|
|
||||||
export function createConnection() {
|
export function createConnection() {
|
||||||
return redis.createClient(
|
return redis.createClient(
|
||||||
|
|
41
src/docs/ar-SA/features/mute-and-block.md
Normal file
41
src/docs/ar-SA/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# تم كتمها / تم حجبها
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## اكتم
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## احجب
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/ar-SA/features/word-mute.md
Normal file
20
src/docs/ar-SA/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# ワードミュート
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## مثيل الخادم
|
## مثيل الخادم
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## إيموجي مخصص
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## اكتم
|
## اكتم
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## قائمة الانتظار
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## علِق
|
## علِق
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
41
src/docs/cs-CZ/features/mute-and-block.md
Normal file
41
src/docs/cs-CZ/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# ミュートとブロック
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Ztlumit
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Zablokovat
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/cs-CZ/features/word-mute.md
Normal file
20
src/docs/cs-CZ/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# ワードミュート
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## Instance
|
## Instance
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## Vlastní emoji
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## サイレンス
|
## サイレンス
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## Fronta úloh
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## Zmrazit
|
## Zmrazit
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
41
src/docs/da-DK/features/mute-and-block.md
Normal file
41
src/docs/da-DK/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# ミュートとブロック
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## ミュート
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## ブロック
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/da-DK/features/word-mute.md
Normal file
20
src/docs/da-DK/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# ワードミュート
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## インスタンス
|
## インスタンス
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## カスタム絵文字
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## サイレンス
|
## サイレンス
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## ジョブキュー
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## 凍結
|
## 凍結
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
41
src/docs/de-DE/features/mute-and-block.md
Normal file
41
src/docs/de-DE/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Stummschaltungen und Blockierungen
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Stummschalten
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Blockieren
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/de-DE/features/word-mute.md
Normal file
20
src/docs/de-DE/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Wort-Stummschaltung
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -1,4 +1,4 @@
|
||||||
# サードパーティアプリのリスト
|
# Liste von Drittanbieter-Apps
|
||||||
## クライアント
|
## クライアント
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# 更新履歴
|
# Änderungshistorie
|
||||||
<div class="info">ℹ️ このサーバーの更新履歴です。Misskeyの最新のリリースについては、<a href="https://github.com/misskey-dev/misskey/blob/master/CHANGELOG.md" target="_blank">GitHub</a>をご確認ください。</div>
|
<div class="info">ℹ️ このサーバーの更新履歴です。Misskeyの最新のリリースについては、<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. -->
|
||||||
|
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# 用語集
|
# Glossar
|
||||||
Misskeyに関する用語集です。
|
Misskeyに関する用語集です。
|
||||||
|
|
||||||
## ActivityPub
|
## ActivityPub
|
||||||
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## Instanz
|
## Instanz
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## Benutzerdefinierte Emojis
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## Instanzweit stummschalten
|
## Instanzweit stummschalten
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## Job-Warteschlange
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## Sperren
|
## Sperren
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# リンク集
|
# Links
|
||||||
|
|
||||||
## Webサイト
|
## Webサイト
|
||||||
- [Official Discord](https://discord.gg/Wp8gVStHW3) - Misskey公式Discordサーバー
|
- [Official Discord](https://discord.gg/Wp8gVStHW3) - Misskey公式Discordサーバー
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# 不具合の報告
|
# Fehler melden
|
||||||
不具合と思われる状況に遭遇したときは、まず[トラブルシューティング](./troubleshooting)をご一読ください。 それでも問題が解決しないときは、以下の情報を含めて[フォーラム](https://forum.misskey.io/)に投稿してください。 投稿することで、解決策が見つかったり、不具合と判断されれば開発チームによって修正が行われます。
|
不具合と思われる状況に遭遇したときは、まず[トラブルシューティング](./troubleshooting)をご一読ください。 それでも問題が解決しないときは、以下の情報を含めて[フォーラム](https://forum.misskey.io/)に投稿してください。 投稿することで、解決策が見つかったり、不具合と判断されれば開発チームによって修正が行われます。
|
||||||
|
|
||||||
## 含める情報
|
## 含める情報
|
||||||
|
|
41
src/docs/en-US/features/mute-and-block.md
Normal file
41
src/docs/en-US/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Mutes and Blocks
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Mute
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Block
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/en-US/features/word-mute.md
Normal file
20
src/docs/en-US/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Word mute
|
||||||
|
Through setting up word mutes, you can make notes satisfying set conditions not appear on your timeline anymore.
|
||||||
|
|
||||||
|
There are two types of word mutes: soft and hard.Below is an explanation of the setup process and effect of both.
|
||||||
|
|
||||||
|
## Soft word mute
|
||||||
|
With soft mutes, the word mute is processed within the client (app) you are using.
|
||||||
|
|
||||||
|
When a note meets the set conditions, it will be hidden behind text stating "(username) said something".
|
||||||
|
You can display the note as it was by clicking on this text.
|
||||||
|
|
||||||
|
## Hard word mute
|
||||||
|
With hard mutes, the server judges whether the content of a new incoming note meets the set conditions similar to antennas, and will completely exclude it from your timeline if so.
|
||||||
|
|
||||||
|
To summarize, a hard word mute has the following features:
|
||||||
|
|
||||||
|
* Only new notes created after configuration will be affected by the mute.
|
||||||
|
* If the conditions are changed, previously hard muted notes will still remain muted.
|
||||||
|
* Timelines will not be filled with "(...) said something".
|
||||||
|
* Hard mutes will function even for apps without functionality for soft mutes.
|
|
@ -23,3 +23,6 @@ Only administrators can add, edit or delete custom emoji. If you'd like to do ei
|
||||||
|
|
||||||
## "I want to develop a Bot."
|
## "I want to develop a Bot."
|
||||||
It is possible to develop a Bot using the Misskey API. Please, [see here](../advanced/develop-bot).
|
It is possible to develop a Bot using the Misskey API. Please, [see here](../advanced/develop-bot).
|
||||||
|
|
||||||
|
## Which service does the note translation function use?
|
||||||
|
[DeepL](https://www.deepl.com/) is being used for this.
|
||||||
|
|
|
@ -49,14 +49,20 @@ Those users amongst all existing ones who are continually using their account.
|
||||||
## Instance
|
## Instance
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## Custom Emoji
|
||||||
|
Emoji provided by your server.Emoji that are not specifically provided by your server but are available by default are called "Unicode Emoji".
|
||||||
|
|
||||||
## Control Panel
|
## Control Panel
|
||||||
The settings screen of an instance.
|
todo
|
||||||
|
|
||||||
## Server
|
## Server
|
||||||
todo
|
todo
|
||||||
|
|
||||||
## Silence
|
## Silence
|
||||||
A state in which the visibility of the notes by said user cannot be set to "Public" anymore.Can be set for individual users by Moderators.For details, see [here.](../features/silence)
|
A state in which the visibility of the notes by said user cannot be set to "Public" anymore.Can be set for individual users by the discretion of Moderators.For details, see [here.](../features/silence)
|
||||||
|
|
||||||
|
## Job Queue
|
||||||
|
A system used for sequentially broadcasting activities to other servers etc.
|
||||||
|
|
||||||
## Suspend
|
## Suspend
|
||||||
A state which makes the account of a user unusable.
|
A state which makes the account of a user unusable.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# A collection of links
|
# Links
|
||||||
|
|
||||||
## Websites
|
## Websites
|
||||||
- [Official Discord](https://discord.gg/Wp8gVStHW3) - The official Discord server for Misskey
|
- [Official Discord](https://discord.gg/Wp8gVStHW3) - The official Discord server for Misskey
|
||||||
|
|
|
@ -76,7 +76,7 @@ No.Misskey is a project completely different from Mastodon or other alike projec
|
||||||
### Are there any apps for iOS / Android available?
|
### Are there any apps for iOS / Android available?
|
||||||
While no official Misskey app for either OS exists, there are several third-party applications. For details, please check [here](./apps).
|
While no official Misskey app for either OS exists, there are several third-party applications. For details, please check [here](./apps).
|
||||||
|
|
||||||
However, functionality of third-party applications will inevitably lag behind the official Web client, so unless you really want to use a native application, we recommend the official Web client instead. As the Misskey Web client supports PWA, it is possible to make it act as if it was a native application instead. For details regarding this, please check [here](todo).
|
However, functionality of third-party applications will inevitably lag behind the official Web client, so unless you really want to use a native application, we recommend the official Web client instead. As the Misskey Web client supports PWA, it is also possible to make it act as if it was a native application instead. For details regarding this, please check [here](todo).
|
||||||
|
|
||||||
### Where can I download Misskey's logo or icon?
|
### Where can I download Misskey's logo or icon?
|
||||||
(Coming soon)
|
(Coming soon)
|
||||||
|
|
41
src/docs/eo-UY/features/mute-and-block.md
Normal file
41
src/docs/eo-UY/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Silentigatoj kaj blokatoj
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Silentigi
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Bloki
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/eo-UY/features/word-mute.md
Normal file
20
src/docs/eo-UY/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Silentigo de vortoj
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -50,30 +50,36 @@ Ai estas oficiala maskoto de Misskey.
|
||||||
todo
|
todo
|
||||||
|
|
||||||
## Ŝaltpodio
|
## Ŝaltpodio
|
||||||
インスタンスの設定画面のこと。
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
|
## コントロールパネル
|
||||||
|
todo
|
||||||
|
|
||||||
## Servilo
|
## Servilo
|
||||||
todo
|
todo
|
||||||
|
|
||||||
## Mutigi
|
## Mutigi
|
||||||
A state in which the visibility of the notes by said user cannot be set to "Publika" anymore.Can be set for individual users by Moderators.Rigardu por sciu pli tie[.](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## Disko
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## Flostigi
|
## Flostigi
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
## Disko
|
## Miskiisto
|
||||||
Misskeyにアップロードしたファイルを管理する機能。詳細は[こちら。](../features/drive)
|
Misskeyにアップロードしたファイルを管理する機能。詳細は[こちら。](../features/drive)
|
||||||
|
|
||||||
## Notoj
|
## Notoj
|
||||||
Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note)
|
Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note)
|
||||||
|
|
||||||
## Miskiisto
|
## Transa aŭ fora
|
||||||
Uzuloj de Misskey.
|
Misskeyを使う人のこと。
|
||||||
|
|
||||||
## Moderigisto
|
## Moderigisto
|
||||||
スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。
|
スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。
|
||||||
|
|
||||||
## Transa aŭ fora
|
## Transa
|
||||||
他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。
|
他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。
|
||||||
|
|
||||||
## Kunfederaĵo
|
## Kunfederaĵo
|
||||||
|
|
41
src/docs/es-ES/features/mute-and-block.md
Normal file
41
src/docs/es-ES/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Silenciar y bloquear
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Silenciar
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Bloquear
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/es-ES/features/word-mute.md
Normal file
20
src/docs/es-ES/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Silenciar palabras
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## Instancia
|
## Instancia
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## Emojis personalizados
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## Silenciar
|
## Silenciar
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## Cola de trabajos
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## Suspender
|
## Suspender
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
41
src/docs/fr-FR/features/mute-and-block.md
Normal file
41
src/docs/fr-FR/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Masqué·e·s / Bloqué·e·s
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Masquer
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Bloquer
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
|
@ -12,7 +12,7 @@
|
||||||
<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>
|
||||||
|
|
||||||
## Partager
|
## Renoter
|
||||||
既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノートをRenoteと呼びます。 自分がフォローしているユーザーの、気に入ったノートを自分のフォロワーに共有したい場合や、過去の自分のノートを再度共有したい場合に使います。 同じノートに対して無制限にRenoteを行うことができますが、あまり連続して使用すると迷惑になる場合もあるので、注意しましょう。
|
既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノートをRenoteと呼びます。 自分がフォローしているユーザーの、気に入ったノートを自分のフォロワーに共有したい場合や、過去の自分のノートを再度共有したい場合に使います。 同じノートに対して無制限にRenoteを行うことができますが、あまり連続して使用すると迷惑になる場合もあるので、注意しましょう。
|
||||||
<div class="warn">⚠️ 公開範囲がフォロワーやダイレクトのノートはRenoteできません</div>
|
<div class="warn">⚠️ 公開範囲がフォロワーやダイレクトのノートはRenoteできません</div>
|
||||||
|
|
||||||
|
|
20
src/docs/fr-FR/features/word-mute.md
Normal file
20
src/docs/fr-FR/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Filtre de mots
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -2,9 +2,9 @@
|
||||||
Vous trouverez ici les questions les plus fréquentes sur l'utilisation de Misskey. Les questions fréquentes concernant Misskey en tant que projet sont publiées [sur cette page](./misskey).
|
Vous trouverez ici les questions les plus fréquentes sur l'utilisation de Misskey. Les questions fréquentes concernant Misskey en tant que projet sont publiées [sur cette page](./misskey).
|
||||||
|
|
||||||
## « Existe-t-il des appli pour Android / iOS ? »
|
## « Existe-t-il des appli pour Android / iOS ? »
|
||||||
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
|
Bien qu'il n'existe d'application Misskey officielle pour aucun OS, différentes applications développées par des tiers sont disponibles. [Voir ici](./apps) pour plus de détails.
|
||||||
|
|
||||||
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
|
Cependant, à moins que vous ne soyez particulièrement déterminé·e à utiliser une application dédiée, l'utilisation du client Web officiel est vivement recommandée du fait que les applications développées par des tiers seront forcément en retard par rapport à celui-ci. Par ailleurs, étant donné que le client Web de Misskey est compatible avec une PWA, il peut adopter le comportement d'une application native. [Voir ici](todo) pour plus d'informations.
|
||||||
|
|
||||||
## « Ne peut-on pas utiliser un client Mastodon pour se connecter à Misskey ? »
|
## « Ne peut-on pas utiliser un client Mastodon pour se connecter à Misskey ? »
|
||||||
Étant donné que Misskey n'est pas compatible avec l'API Mastodon, sauf cas exceptionnels, il n'est pas possible d'utiliser un client Mastodon pour Misskey.
|
Étant donné que Misskey n'est pas compatible avec l'API Mastodon, sauf cas exceptionnels, il n'est pas possible d'utiliser un client Mastodon pour Misskey.
|
||||||
|
@ -23,3 +23,6 @@ Seul·e·s les administrateur·rice·s peuvent ajouter, éditer ou effacer des
|
||||||
|
|
||||||
## « Je veux créer un Bot. »
|
## « Je veux créer un Bot. »
|
||||||
Vous pouvez développer un Bot en utilisant l'API de Misskey. Plus d'informations sur [cette page](../advanced/develop-bot).
|
Vous pouvez développer un Bot en utilisant l'API de Misskey. Plus d'informations sur [cette page](../advanced/develop-bot).
|
||||||
|
|
||||||
|
## « Quel est le service utilisé pour la fonctionnalité de traduction des notes ? »
|
||||||
|
Il s'agit de [DeepL](https://www.deepl.com/).
|
||||||
|
|
|
@ -34,7 +34,7 @@ Misskeyに関する用語集です。
|
||||||
## NSFW
|
## NSFW
|
||||||
(読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。
|
(読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。
|
||||||
|
|
||||||
## Partager
|
## Renoter
|
||||||
(読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note)
|
(読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note)
|
||||||
|
|
||||||
## STL
|
## STL
|
||||||
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## Instance
|
## Instance
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## Émojis personnalisés
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## Mettre en sourdine
|
## Mettre en sourdine
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## File d’attente
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## Suspendre
|
## Suspendre
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
|
@ -75,9 +75,9 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
|
||||||
いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
|
いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
|
||||||
|
|
||||||
### « Existe-t-il des appli pour Android / iOS ? »
|
### « Existe-t-il des appli pour Android / iOS ? »
|
||||||
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
|
Bien qu'il n'existe d'application Misskey officielle pour aucun OS, différentes applications développées par des tiers sont disponibles. [Voir ici](./apps) pour plus de détails.
|
||||||
|
|
||||||
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
|
Cependant, à moins que vous ne soyez particulièrement déterminé·e à utiliser une application dédiée, l'utilisation du client Web officiel est vivement recommandée du fait que les applications développées par des tiers seront forcément en retard par rapport à celui-ci. Par ailleurs, étant donné que le client Web de Misskey est compatible avec une PWA, il peut adopter le comportement d'une application native. [Voir ici](todo) pour plus d'informations.
|
||||||
|
|
||||||
### Misskeyのロゴ、アイコンはどこで入手できますか?
|
### Misskeyのロゴ、アイコンはどこで入手できますか?
|
||||||
(準備中)
|
(準備中)
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
# Résolution des problèmes
|
# Résolution des problèmes
|
||||||
<div class="info">ℹ️ N'hésitez pas à consulter les <a href="./faq">Questions fréquentes</a> en complément de cette page.</div>
|
<div class="info">ℹ️ N'hésitez pas à consulter les <a href="./faq">Questions fréquentes</a> en complément de cette page.</div>
|
||||||
|
|
||||||
問題が発生したときは、まずこちらをご確認ください。 該当する項目が無い、もしくは手順を試しても効果がない場合は、サーバーの管理者に連絡するか[不具合を報告](./report-issue)してください。
|
Lorsque vous rencontrez un problème, nous vous prions de lire cette page tout d'abord. Si toutefois aucun des paragraphes ci-dessous ne correspond à votre problème, ou bien si vous n'arrivez pas à le résoudre en suivant les instructions détaillées ici, nous vous invitons à contacter l'administrateur·rice de votre instance ou à [Signaler un bug](./report-issue).
|
||||||
|
|
||||||
## Le client ne démarre pas
|
## Le client ne démarre pas
|
||||||
ほとんどの場合、お使いのブラウザまたはOSのバージョンが古いことが原因です。 ブラウザおよびOSのバージョンを最新のものに更新してから、再度試してみてください。
|
Généralement, ce problème est dû au fait que vous utilisez une version trop ancienne de votre navigateur ou de votre système d'exploitation. Effectuez les mises à jour pour chacun d'eux vers leurs versions les plus récentes, puis essayez à nouveau.
|
||||||
|
|
||||||
これは稀ですが、それでも起動しない場合は、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。
|
Cela arrive rarement, mais si votre client ne démarre toujours pas après cela, le problème vient du cache. Dans ce cas, videz le cache et essayez à nouveau.
|
||||||
|
|
||||||
## ページが読み込めない
|
## La page ne charge pas
|
||||||
クライアントが起動するもののページが読み込めないというエラーが出る場合は、ネットワークに問題がないか確認してください。また、サーバーがダウンしていないか確認してください。
|
Si votre client démarre mais qu'un message d'erreur apparaît lors du chargement de la page, assurez-vous qu'il ne s'agit pas d'un problème de connexion au réseau. Assurez-vous également que votre serveur n'est pas temporairement inaccessible.
|
||||||
|
|
||||||
これは稀ですが、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。
|
Bien que cela arrive rarement, il se peut que le cache soit à l'origine du problème. Dans ce cas, videz le cache et essayez à nouveau.
|
||||||
|
|
||||||
まだ問題がある場合は、サーバーの問題と思われるのでサーバーの管理者に連絡してください。
|
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
|
||||||
以下を試してみてください:
|
以下を試してみてください:
|
||||||
|
@ -31,10 +31,10 @@
|
||||||
点滅は、未読のコンテンツがあることを示しています。通常点滅が消えない場合は、コンテンツを遡ると未読なコンテンツが残っています。 すべて既読にしたと思われるのに、それでもなお点滅が続く場合(おそらく不具合と思われます)は設定から強制的にすべて既読扱いにすることができます。
|
点滅は、未読のコンテンツがあることを示しています。通常点滅が消えない場合は、コンテンツを遡ると未読なコンテンツが残っています。 すべて既読にしたと思われるのに、それでもなお点滅が続く場合(おそらく不具合と思われます)は設定から強制的にすべて既読扱いにすることができます。
|
||||||
|
|
||||||
## La fonction « Renoter » ne fonctionne pas
|
## La fonction « Renoter » ne fonctionne pas
|
||||||
フォロワー限定のノートはRenoteすることはできません。
|
Les notes dont l'audience est limitée aux « Abonné·e·s uniquement » ne peuvent pas être renotées.
|
||||||
|
|
||||||
## Des éléments spécifiques de l'interface ne s'affichent pas
|
## Des éléments spécifiques de l'interface ne s'affichent pas
|
||||||
広告ブロッカーを使用しているとそのような不具合が発生することがあります。Misskeyではオフにしてご利用ください。
|
広告ブロッカーを使用しているとそのような不具合が発生することがあります。Misskeyではオフにしてご利用ください。
|
||||||
|
|
||||||
## Certaines parties de l'interface ne sont pas traduites
|
## Certaines parties de l'interface ne sont pas traduites
|
||||||
ほとんどの場合、単に翻訳が間に合っていないだけで、不具合ではありません。翻訳が終わるまでお待ちください。 [翻訳に参加](./misskey)していただくことも可能です。
|
La plupart du temps, cela n'est pas un bug mais simplement un problème de traduction qui n'a pas encore été faite. Merci de patienter jusqu'à ce que la traduction de la portion en question soit achevée. Vous pouvez également [aider à traduire](./misskey) Misskey.
|
||||||
|
|
41
src/docs/ht-HT/features/mute-and-block.md
Normal file
41
src/docs/ht-HT/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# ミュートとブロック
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## ミュート
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## ブロック
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/ht-HT/features/word-mute.md
Normal file
20
src/docs/ht-HT/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# ワードミュート
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## インスタンス
|
## インスタンス
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## カスタム絵文字
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## サイレンス
|
## サイレンス
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## ジョブキュー
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## 凍結
|
## 凍結
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
41
src/docs/id-ID/features/mute-and-block.md
Normal file
41
src/docs/id-ID/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Bisukan / Blokir
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Bisukan
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Blokir
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/id-ID/features/word-mute.md
Normal file
20
src/docs/id-ID/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Bisukan kata
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## Instansi
|
## Instansi
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## Emoji kustom
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## Bungkam
|
## Bungkam
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## Antrian kerja
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## Bekukan
|
## Bekukan
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
41
src/docs/it-IT/features/mute-and-block.md
Normal file
41
src/docs/it-IT/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# Silenziati / Bloccati
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## Silenzia
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## Blocca
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
20
src/docs/it-IT/features/word-mute.md
Normal file
20
src/docs/it-IT/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Filtri parole
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -23,3 +23,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -49,6 +49,9 @@ Misskeyに関する用語集です。
|
||||||
## Istanza
|
## Istanza
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## Emoji personalizzati
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ todo
|
||||||
## Silenzia
|
## Silenzia
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## Coda di lavoro
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## Sospendi
|
## Sospendi
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
20
src/docs/ja-JP/features/word-mute.md
Normal file
20
src/docs/ja-JP/features/word-mute.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# ワードミュート
|
||||||
|
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
|
||||||
|
|
||||||
|
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
|
||||||
|
|
||||||
|
## ソフトワードミュート
|
||||||
|
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
|
||||||
|
|
||||||
|
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。
|
||||||
|
クリックすると元の通りに表示されます。
|
||||||
|
|
||||||
|
## ハードワードミュート
|
||||||
|
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
|
||||||
|
|
||||||
|
つまり、ハードワードミュートには、以下のような特徴があります。
|
||||||
|
|
||||||
|
* 条件設定後、新しい投稿のみがミュートの対象になります。
|
||||||
|
* 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
|
||||||
|
* 「○○が何かを言いました」でタイムラインが埋まることがありません。
|
||||||
|
* ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。
|
|
@ -28,3 +28,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
|
||||||
|
|
||||||
## Botを開発したい
|
## Botを開発したい
|
||||||
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
|
||||||
|
|
||||||
|
## ノートの翻訳機能はどのサービスを使用していますか?
|
||||||
|
[DeepL](https://www.deepl.com/)を使用しています。
|
||||||
|
|
|
@ -59,6 +59,9 @@ Misskeyの看板娘(公式キャラクター)です。
|
||||||
## インスタンス
|
## インスタンス
|
||||||
todo
|
todo
|
||||||
|
|
||||||
|
## カスタム絵文字
|
||||||
|
サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
|
||||||
|
|
||||||
## コントロールパネル
|
## コントロールパネル
|
||||||
インスタンスの設定画面のこと。
|
インスタンスの設定画面のこと。
|
||||||
|
|
||||||
|
@ -68,6 +71,9 @@ todo
|
||||||
## サイレンス
|
## サイレンス
|
||||||
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
|
||||||
|
|
||||||
|
## ジョブキュー
|
||||||
|
アクティビティ配送などを順番に行うためのシステム。
|
||||||
|
|
||||||
## 凍結
|
## 凍結
|
||||||
アカウントが使用不可に設定されている状態。
|
アカウントが使用不可に設定されている状態。
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# LTL/STL/GTLの無効化
|
# LTL/STL/GTLの無効化
|
||||||
Misskeyでは、LTL/STL/GTLをそれぞれ無効化することができます。有効/無効を切り替えるには、インスタンスコントロールパネルで設定します。
|
Misskeyでは、LTL/STL/GTLをそれぞれ無効化することができるで。有効/無効を切り替えるんは、インスタンスコントロールパネルで設定しいや。
|
||||||
|
|
||||||
LTLやSTLは、そのインスタンス全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。 しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。 サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。 もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。
|
LTLやSTLでは、そのインスタンス全員の投稿が見えるから、新規のユーザーにとってはユーザー探す必要がのうなって、興味のあるユーザーを見つけやすいゆう利点があるで。 でも同時にな、フォロー機能が活用されんくなったり、不適切な投稿が目につきやすうなったり、チャットみたいにのうて内輪感ができて逆に新規ユーザーがあんまし参加せんようなるないなデメリットも持ち合わせとうで。 サーバーによってメリット/デメリットどっちがようさんあるかはちゃうから、オプションとして無効にできるようなっとんねん。 デメリットの方が上回っとう思たら、それらのタイムラインを無効化することも検討しいや。
|
||||||
|
|
||||||
<div class="warn">⚠️ 無効化を行うと、ユーザーが困惑し、短期的に見て利用者が減る可能性があります。そのため、無効化の際は影響を慎重に検討し、事前に説明してフォローを整える期間を一定程度設けることを推奨します。</div>
|
<div class="warn">⚠️無効化したら、ユーザーがややこしがって短期的に見て利用者が減るかもわからへん。せやから、無効化するゆう時は影響をよう検討して、事前に説明してフォローを整える期間を一定程度設けるんを推奨するで。</div>
|
||||||
|
|
||||||
なお、管理者/モデレーターは、これらのタイムラインの無効化状態は適用されず、引き続き利用することが可能です。
|
ちなみに、管理者/モデレーターは、これらのタイムラインの無効化状態は適用されんと、引き続き利用できるで。
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# よくある質問
|
# ようある質問
|
||||||
ここでは、サーバー管理者向けのよくある質問を掲載しています。
|
ここでは、サーバー管理者向けのようある質問を掲載しとうで。
|
||||||
|
|
||||||
## デフォルトテーマを設定したい
|
## デフォルトテーマを設定したい
|
||||||
現在、デフォルトテーマ設定機能は実装されていません。
|
今んとこ、デフォルトテーマ設定機能は実装されとらへん。
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# AiScript
|
# AiScript
|
||||||
AiScriptは、Misskeyで使用できるスクリプト言語です。
|
AiScriptは、Misskeyで使用できるスクリプト言語や。
|
||||||
|
|
||||||
<div class="info">ℹ️ AiScript実装はMisskeyとは別リポジトリで、<a href="https://github.com/syuilo/aiscript" target="_blank">オープンソースで公開されています。</a></div>
|
<div class="info">ℹ️ AiScript実装はMisskeyとは別リポジトリで、<a href="https://github.com/syuilo/aiscript" target="_blank">オープンソースで公開されようで。</a></div>
|
||||||
|
|
||||||
## 使い方
|
## どないして使うん?
|
||||||
AiScriptの構文や組み込み関数などのドキュメントは、[こちら](https://github.com/syuilo/aiscript/tree/master/docs)で公開されています。
|
AiScriptの構文や組み込み関数などのドキュメントは、[こちら](https://github.com/syuilo/aiscript/tree/master/docs)で公開されよる。
|
||||||
|
|
41
src/docs/ja-KS/features/mute-and-block.md
Normal file
41
src/docs/ja-KS/features/mute-and-block.md
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# ミュートとブロック
|
||||||
|
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。 また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。 ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートとブロックは併用できます。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。</div>
|
||||||
|
|
||||||
|
設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
|
||||||
|
|
||||||
|
## ミュート
|
||||||
|
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
|
||||||
|
|
||||||
|
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
|
||||||
|
- そのユーザーからの通知
|
||||||
|
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
|
||||||
|
- など
|
||||||
|
|
||||||
|
ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="info">ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。</div>
|
||||||
|
|
||||||
|
## ブロック
|
||||||
|
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
|
||||||
|
|
||||||
|
- フォローする
|
||||||
|
- ユーザーリストに追加する
|
||||||
|
- 返信する、Renoteする
|
||||||
|
- リアクションする、アンケートに投票する
|
||||||
|
- メッセージを送信する
|
||||||
|
- など
|
||||||
|
|
||||||
|
また、
|
||||||
|
|
||||||
|
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
|
||||||
|
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
|
||||||
|
|
||||||
|
ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
|
||||||
|
|
||||||
|
<div class="warn">⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。</div>
|
||||||
|
|
||||||
|
<div class="warn">⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。</div>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue