diff --git a/.config/example.yml b/.config/example.yml
index c17939596..b996a83fb 100644
--- a/.config/example.yml
+++ b/.config/example.yml
@@ -30,6 +30,10 @@ url: https://example.tld/
# The port that your Misskey server should listen on.
port: 3000
+# You can also use UNIX domain socket.
+# socket: /path/to/misskey.sock
+# chmodSocket: '777'
+
# ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────
@@ -78,6 +82,8 @@ redis:
#pass: example-pass
#prefix: example-prefix
#db: 1
+ # You can specify more ioredis options...
+ #username: example-username
#redisForPubsub:
# host: localhost
@@ -86,6 +92,8 @@ redis:
# #pass: example-pass
# #prefix: example-prefix
# #db: 1
+# # You can specify more ioredis options...
+# #username: example-username
#redisForJobQueue:
# host: localhost
@@ -94,6 +102,8 @@ redis:
# #pass: example-pass
# #prefix: example-prefix
# #db: 1
+# # You can specify more ioredis options...
+# #username: example-username
# ┌───────────────────────────┐
#───┘ MeiliSearch configuration └─────────────────────────────
@@ -104,6 +114,7 @@ redis:
# apiKey: ''
# ssl: true
# index: ''
+# scope: local
# ┌───────────────┐
#───┘ ID generation └───────────────────────────────────────────
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index a47804ab0..0664ecd11 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -6,7 +6,7 @@
"features": {
"ghcr.io/devcontainers-contrib/features/pnpm:2": {},
"ghcr.io/devcontainers/features/node:1": {
- "version": "18.16.0"
+ "version": "20.3.1"
}
},
"forwardPorts": [3000],
diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml
index 8f8c5a13a..2809cd2ca 100644
--- a/.devcontainer/docker-compose.yml
+++ b/.devcontainer/docker-compose.yml
@@ -2,7 +2,7 @@ version: '3.8'
services:
app:
- build:
+ build:
context: .
dockerfile: Dockerfile
diff --git a/.editorconfig b/.editorconfig
index a6f988f8d..def7baa1a 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -6,6 +6,10 @@ indent_size = 2
charset = utf-8
insert_final_newline = true
end_of_line = lf
+trim_trailing_whitespace = true
+
+[*.md]
+trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_style = space
diff --git a/.github/ISSUE_TEMPLATE/01_bug-report.md b/.github/ISSUE_TEMPLATE/01_bug-report.md
index 25e7fc8b2..b889d96eb 100644
--- a/.github/ISSUE_TEMPLATE/01_bug-report.md
+++ b/.github/ISSUE_TEMPLATE/01_bug-report.md
@@ -54,7 +54,7 @@ Please include errors from the developer console and/or server log files if you
* Installation Method or Hosting Service:
* Misskey: 13.x.x
-* Node: 18.x.x
+* Node: 20.x.x
* PostgreSQL: 15.x.x
* Redis: 7.x.x
* OS and Architecture:
diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml
index 6cb1b3499..1aea8b545 100644
--- a/.github/workflows/storybook.yml
+++ b/.github/workflows/storybook.yml
@@ -37,7 +37,7 @@ jobs:
with:
version: 8
run_install: false
- - name: Use Node.js 18.x
+ - name: Use Node.js 20.x
uses: actions/setup-node@v3.6.0
with:
node-version-file: '.node-version'
diff --git a/.github/workflows/test-backend.yml b/.github/workflows/test-backend.yml
index d7be15bd4..96e64c322 100644
--- a/.github/workflows/test-backend.yml
+++ b/.github/workflows/test-backend.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
matrix:
- node-version: [18.x]
+ node-version: [20.x]
services:
postgres:
diff --git a/.github/workflows/test-frontend.yml b/.github/workflows/test-frontend.yml
index 4ea4ba462..eef68aa0d 100644
--- a/.github/workflows/test-frontend.yml
+++ b/.github/workflows/test-frontend.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
matrix:
- node-version: [18.x]
+ node-version: [20.x]
steps:
- uses: actions/checkout@v3.3.0
@@ -51,7 +51,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- node-version: [18.x]
+ node-version: [20.x]
browser: [chrome]
services:
diff --git a/.github/workflows/test-misskey-js.yml b/.github/workflows/test-misskey-js.yml
index b15e704c7..213657ce1 100644
--- a/.github/workflows/test-misskey-js.yml
+++ b/.github/workflows/test-misskey-js.yml
@@ -16,7 +16,7 @@ jobs:
strategy:
matrix:
- node-version: [18.x]
+ node-version: [20.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
diff --git a/.github/workflows/test-production.yml b/.github/workflows/test-production.yml
index 5243a8377..8429465b5 100644
--- a/.github/workflows/test-production.yml
+++ b/.github/workflows/test-production.yml
@@ -16,7 +16,7 @@ jobs:
strategy:
matrix:
- node-version: [18.x]
+ node-version: [20.x]
steps:
- uses: actions/checkout@v3.3.0
diff --git a/.gitignore b/.gitignore
index 537232d37..a66e527db 100644
--- a/.gitignore
+++ b/.gitignore
@@ -64,3 +64,6 @@ temp
*.blend3
*.blend4
*.blend5
+
+# VSCode addon
+.favorites.json
diff --git a/.node-version b/.node-version
index 6d80269a4..dd0fe95cc 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-18.16.0
+20.3.1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 45dc0e3c9..438436f01 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,70 @@
-->
+## 13.x.x (unreleased)
+
+### General
+- 招待機能を改善しました
+ * 過去に発行した招待コードを確認できるようになりました
+ * ロールごとに招待コードの発行数制限と制限対象期間、有効期限を設定できるようになりました
+ * 招待コードを作成したユーザーと使用したユーザーを確認できるようになりました
+- ユーザーにロールが期限付きでアサインされている場合、その期限をユーザーのモデレーションページで確認できるようになりました
+- identicon生成を無効にしてパフォーマンスを向上させることができるようになりました
+- サーバーのマシン情報の公開を無効にしてパフォーマンスを向上させることができるようになりました
+
+### Client
+- deck UIのカラムのメニューからアンテナとリストの編集画面を開けるように
+- ドライブファイルのメニューで画像をクロップできるように
+- 画像を動画と同様に簡単に隠せるように
+- Enhance: ノートの埋め込みが複数画像と動画を表示されるように
+- オリジナル画像を保持せずにアップロードする場合webpでアップロードされるように(Safari以外)
+- 見たことのあるRenoteを省略して表示をオンのときに自分のnoteのrenoteを省略するように
+- フォルダーやファイルに対しても開発者モード使用時、IDをコピーできるように
+- 引用対象を「もっと見る」で展開した場合、「閉じる」で畳めるように
+- プロフィールURLをコピーできるボタンを追加 #11190
+- `CURRENT_URL`で現在表示中のURLを取得できるように(AiScript)
+- ユーザーのContextMenuに「アンテナに追加」ボタンを追加
+- フォローやお気に入り登録をしていないチャンネルを開く時は概要ページを開くように
+- 画面ビューワをタップした場合、マウスクリックと同様に画像ビューワを閉じるように
+- オフライン時の画面にリロードボタンを追加
+- Renote時に公開範囲のデフォルト設定が適用されるように
+- Deckで非ルートページにアクセスした際に簡易UIで表示しない設定を追加
+- ロール設定画面でロールIDを確認できるように
+- コンテキストメニュー表示時のパフォーマンスを改善
+- フォロー/フォロワー非公開時の表示を改善
+- 本文にMFMが含まれている場合に自動でたたまれる機能が、返信先や引用RNにも適用されるように
+ - position は対象外になりました
+- AiScriptを0.15.0に更新
+- Fix: サーバーメトリクスが90度傾いている
+- Fix: 非ログイン時にクレデンシャルが必要なページに行くとエラーが出る問題を修正
+- Fix: sparkle内にリンクを入れるとクリック不能になる問題の修正
+- Fix: ZenUIでポップアップの表示位置がおかしい問題を修正
+- Fix: ページ遷移でスクロール位置が保持されない問題を修正
+- Fix: フォルダーのページネーションが機能しない #11180
+- Fix: 長い文章を投稿する際、プレビューが画面からはみ出る問題を修正
+- Fix: システムフォント設定が正しく反映されない問題を修正
+- Fix: アンケート終了時のプッシュ通知が正しく表示されない問題を修正
+- Fix: MasterVolumeが0の時だけでなく各通知音の音量設定が0のときも、HTMLAudioElement.playが実行されないように変更
+
+### Server
+- JSON.parse の回数を削減することで、ストリーミングのパフォーマンスを向上しました
+- nsfwjs のモデルロードを排他することで、重複ロードによってメモリ使用量が増加しないように
+- 連合の配送ジョブのパフォーマンスを向上(ロック機構の見直し、Redisキャッシュの活用)
+- featuredノートのsignedGet回数を減らしました
+- ActivityPubの署名用鍵長を2048bitに変更しパフォーマンスを向上(新規アカウントのみ)
+- リモートサーバーのセンシティブなファイルのキャッシュだけを無効化できるオプションを追加
+- MeilisearchにIndexするノートの範囲を設定できるように
+- Export notes with file detail
+- Add unix socket support
+- 設定ファイルでioredisの全てのオプションを指定可能に
+- Fix: エクスポートしたカスタム絵文字のzipが大きいと読み込めない問題を修正
+- Fix: リモートサーバーに無意味なActivityPubの配信を行うことがあるのを修正
+- Fix: Remove Meilisearch index when notes are deleted
+- Fix: 非英語環境でのPostgreSQLのエラーハンドリングを修正
+- Fix: インスタンスのアイコンがbase64の場合の挙動を修正
+- Fix: ローカルの `Person` を指す `acct` URI を解析するときのバグを修正しました
+- Fix: 無効化されたアンテナが再度有効化されないことがある問題を修正
+
## 13.13.2
### General
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f6b3804f8..62bc11cd9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -106,7 +106,7 @@ If your language is not listed in Crowdin, please open an issue.
![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg)
## Development
-During development, it is useful to use the
+During development, it is useful to use the
```
pnpm dev
@@ -150,7 +150,7 @@ Prepare DB/Redis for testing.
```
docker compose -f packages/backend/test/docker-compose.yml up
```
-Alternatively, prepare an empty (data can be erased) DB and edit `.config/test.yml`.
+Alternatively, prepare an empty (data can be erased) DB and edit `.config/test.yml`.
Run all test.
```
@@ -214,30 +214,13 @@ Misskey uses [Storybook](https://storybook.js.org/) for UI development.
### Setup & Run
-#### Universal
-
-##### Setup
-
-```bash
-pnpm --filter misskey-js build
-pnpm --filter frontend tsc -p .storybook && (node packages/frontend/.storybook/preload-locale.js & node packages/frontend/.storybook/preload-theme.js)
-```
-
-##### Run
-
-```bash
-node packages/frontend/.storybook/generate.js && pnpm --filter frontend storybook dev
-```
-
-#### macOS & Linux
-
-##### Setup
+#### Setup
```bash
pnpm --filter misskey-js build
```
-##### Run
+#### Run
```bash
pnpm --filter frontend storybook-dev
diff --git a/Dockerfile b/Dockerfile
index fb389659b..5431c28aa 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.4
-ARG NODE_VERSION=18.16.0-bullseye
+ARG NODE_VERSION=20.3.1-bullseye
# build assets & compile TypeScript
diff --git a/README.md b/README.md
index 2aae4bb86..ab4388c2e 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,9 @@
-
+
**🌎 **[Misskey](https://misskey-hub.net/)** is an open source, decentralized social media platform that's free forever! 🚀**
-
+
---
@@ -21,7 +21,7 @@
-
+
---
[![codecov](https://codecov.io/gh/misskey-dev/misskey/branch/develop/graph/badge.svg?token=R6IQZ3QJOL)](https://codecov.io/gh/misskey-dev/misskey)
diff --git a/assets/title_float.svg b/assets/title_float.svg
index 43205ac1c..ed1749e32 100644
--- a/assets/title_float.svg
+++ b/assets/title_float.svg
@@ -23,13 +23,13 @@
diff --git a/packages/frontend/src/components/MkLink.vue b/packages/frontend/src/components/MkLink.vue
index 2e4f93e84..8e61c7048 100644
--- a/packages/frontend/src/components/MkLink.vue
+++ b/packages/frontend/src/components/MkLink.vue
@@ -1,6 +1,6 @@
diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue
index b29871c36..7e5c2c8dc 100644
--- a/packages/frontend/src/components/MkMediaImage.vue
+++ b/packages/frontend/src/components/MkMediaImage.vue
@@ -20,7 +20,7 @@
- {{ i18n.ts.sensitive }}{{ defaultStore.state.enableDataSaverMode ? ` (${i18n.ts.image}${image.size ? ' ' + bytes(image.size) : ''})` : '' }}
+ {{ i18n.ts.sensitive }}{{ defaultStore.state.enableDataSaverMode ? ` (${i18n.ts.image}${image.size ? ' ' + bytes(image.size) : ''})` : '' }}
{{ defaultStore.state.enableDataSaverMode && image.size ? bytes(image.size) : i18n.ts.image }}
{{ i18n.ts.clickToShow }}
@@ -30,9 +30,10 @@
+
@@ -113,6 +114,21 @@ function showMenu(ev: MouseEvent) {
align-items: center;
}
+.hide {
+ display: block;
+ position: absolute;
+ border-radius: 6px;
+ background-color: var(--fg);
+ color: var(--accentLighten);
+ font-size: 12px;
+ opacity: .5;
+ padding: 5px 8px;
+ text-align: center;
+ cursor: pointer;
+ top: 12px;
+ right: 12px;
+}
+
.hiddenTextWrapper {
display: table-cell;
text-align: center;
@@ -137,8 +153,8 @@ function showMenu(ev: MouseEvent) {
backdrop-filter: var(--blur, blur(15px));
color: #fff;
font-size: 0.8em;
- width: 32px;
- height: 32px;
+ width: 28px;
+ height: 28px;
text-align: center;
bottom: 10px;
right: 10px;
diff --git a/packages/frontend/src/components/MkMediaList.vue b/packages/frontend/src/components/MkMediaList.vue
index a0a245005..be0aed652 100644
--- a/packages/frontend/src/components/MkMediaList.vue
+++ b/packages/frontend/src/components/MkMediaList.vue
@@ -113,8 +113,10 @@ onMounted(() => {
right: 0,
},
imageClickAction: 'close',
- tapAction: 'toggle-controls',
+ tapAction: 'close',
bgOpacity: 1,
+ showAnimationDuration: 100,
+ hideAnimationDuration: 100,
pswpModule: PhotoSwipe,
});
diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue
index 40bae90b5..dc5807b2d 100644
--- a/packages/frontend/src/components/MkMediaVideo.vue
+++ b/packages/frontend/src/components/MkMediaVideo.vue
@@ -17,8 +17,8 @@
controls
@contextmenu.stop
>
-
-
+
+
+
diff --git a/packages/frontend/src/components/MkReactionsViewer.reaction.vue b/packages/frontend/src/components/MkReactionsViewer.reaction.vue
index aabebb3ab..69d495d86 100644
--- a/packages/frontend/src/components/MkReactionsViewer.reaction.vue
+++ b/packages/frontend/src/components/MkReactionsViewer.reaction.vue
@@ -6,7 +6,7 @@
:class="[$style.root, { [$style.reacted]: note.myReaction == reaction, [$style.canToggle]: canToggle, [$style.large]: defaultStore.state.largeNoteReactions }]"
@click="toggleReaction()"
>
-
+
{{ count }}
diff --git a/packages/frontend/src/components/MkRetentionLineChart.vue b/packages/frontend/src/components/MkRetentionLineChart.vue
index 9f56189f3..276bd6f98 100644
--- a/packages/frontend/src/components/MkRetentionLineChart.vue
+++ b/packages/frontend/src/components/MkRetentionLineChart.vue
@@ -90,6 +90,7 @@ onMounted(async () => {
ticks: {
callback: (value, index, values) => value + '%',
},
+ min: 0,
},
},
interaction: {
diff --git a/packages/frontend/src/components/MkSignupDialog.rules.vue b/packages/frontend/src/components/MkSignupDialog.rules.vue
index b6ffba6cc..de5195ab4 100644
--- a/packages/frontend/src/components/MkSignupDialog.rules.vue
+++ b/packages/frontend/src/components/MkSignupDialog.rules.vue
@@ -9,7 +9,10 @@
{{ i18n.ts.invitationRequiredToRegister }}
- {{ i18n.ts.pleaseConfirmBelowBeforeSignup }}
+
+
{{ i18n.ts.pleaseConfirmBelowBeforeSignup }}
+
{{ i18n.ts.beSureToReadThisAsItIsImportant }}
+
{{ i18n.ts.serverRules }}
@@ -19,7 +22,7 @@
- {{ i18n.ts.agree }}
+ {{ i18n.ts.agree }}
@@ -28,7 +31,7 @@
{{ i18n.ts.termsOfService }}
- {{ i18n.ts.agree }}
+ {{ i18n.ts.agree }}
@@ -37,7 +40,7 @@
{{ i18n.ts.basicNotesBeforeCreateAccount }}
- {{ i18n.ts.agree }}
+ {{ i18n.ts.agree }}
{{ i18n.ts.pleaseAgreeAllToContinue }}
@@ -52,13 +55,14 @@
diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue
index 3a050889c..3a032a116 100644
--- a/packages/frontend/src/components/MkSubNoteContent.vue
+++ b/packages/frontend/src/components/MkSubNoteContent.vue
@@ -15,9 +15,12 @@
{{ i18n.ts.poll }}
-