diff --git a/.config/example.yml b/.config/example.yml
index c179395966..b996a83fb5 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 a47804ab07..0664ecd110 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 8f8c5a13ab..2809cd2ca4 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 a6f988f8d7..def7baa1a8 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 25e7fc8b20..b889d96eb3 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 6cb1b34997..1aea8b5459 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 d7be15bd4f..96e64c322e 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 4ea4ba4628..eef68aa0d1 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 b15e704c7f..213657ce1f 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 5243a83777..8429465b5b 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 537232d37f..a66e527db0 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 6d80269a4f..dd0fe95cce 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-18.16.0
+20.3.1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 45dc0e3c90..438436f01a 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 f6b3804f84..62bc11cd99 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 fb389659bc..5431c28aad 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 2aae4bb865..ab4388c2eb 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 43205ac1c4..ed1749e321 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 2e4f93e848..8e61c70484 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 b29871c363..7e5c2c8dc3 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 a0a2450054..be0aed6524 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 40bae90b5e..dc5807b2dd 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 aabebb3abf..69d495d86f 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 9f56189f3e..276bd6f984 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 b6ffba6cc7..de5195ab4f 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 3a050889c8..3a032a1167 100644
--- a/packages/frontend/src/components/MkSubNoteContent.vue
+++ b/packages/frontend/src/components/MkSubNoteContent.vue
@@ -15,9 +15,12 @@
{{ i18n.ts.poll }}
-