diff --git a/.config/example.yml b/.config/example.yml
index c179395966f5..b996a83fb50a 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 a47804ab07a0..0664ecd110a4 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 8f8c5a13ab72..2809cd2ca469 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 a6f988f8d7c7..def7baa1a8f1 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 25e7fc8b201e..b889d96eb39c 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 6cb1b34997ed..1aea8b54595e 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 d7be15bd4f09..96e64c322e46 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 4ea4ba462873..eef68aa0d166 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 b15e704c7fa3..213657ce1f44 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 5243a837778b..8429465b5b41 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 537232d37fc4..a66e527db059 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 6d80269a4f04..dd0fe95cce55 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-18.16.0
+20.3.1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 45dc0e3c905c..438436f01a86 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 f6b3804f84f9..62bc11cd996b 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 fb389659bc93..5431c28aad96 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 2aae4bb865ba..ab4388c2ebd2 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 43205ac1c482..ed1749e321fb 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 2e4f93e8489b..8e61c70484c7 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 b29871c3635e..7e5c2c8dc30f 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 a0a2450054b1..be0aed652498 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 40bae90b5e49..dc5807b2dd3e 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 aabebb3abf75..69d495d86f7d 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 9f56189f3efc..276bd6f98433 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 b6ffba6cc708..de5195ab4fde 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 3a050889c8d6..3a032a116754 100644
--- a/packages/frontend/src/components/MkSubNoteContent.vue
+++ b/packages/frontend/src/components/MkSubNoteContent.vue
@@ -15,9 +15,12 @@
{{ i18n.ts.poll }}
-