diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c872b15e9..230bdeb51 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -30,7 +30,7 @@ jobs: submodules: true - uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false - uses: actions/setup-node@v4.0.2 with: @@ -57,7 +57,7 @@ jobs: submodules: true - uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false - uses: actions/setup-node@v4.0.2 with: @@ -83,7 +83,7 @@ jobs: submodules: true - uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false - uses: actions/setup-node@v4.0.2 with: diff --git a/.github/workflows/test-backend.yml b/.github/workflows/test-backend.yml index fbb46c818..a75f81b18 100644 --- a/.github/workflows/test-backend.yml +++ b/.github/workflows/test-backend.yml @@ -44,8 +44,10 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false + - name: Install FFmpeg + uses: FedericoCarboni/setup-ffmpeg@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.2 with: @@ -94,7 +96,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.2 diff --git a/.github/workflows/test-frontend.yml b/.github/workflows/test-frontend.yml index cace38efa..06cac6304 100644 --- a/.github/workflows/test-frontend.yml +++ b/.github/workflows/test-frontend.yml @@ -36,7 +36,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.2 diff --git a/.github/workflows/test-production.yml b/.github/workflows/test-production.yml index b30a3d67b..d0053bc94 100644 --- a/.github/workflows/test-production.yml +++ b/.github/workflows/test-production.yml @@ -26,7 +26,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.2 diff --git a/.github/workflows/validate-api-json.yml b/.github/workflows/validate-api-json.yml index 2f0fbb433..6a458ca46 100644 --- a/.github/workflows/validate-api-json.yml +++ b/.github/workflows/validate-api-json.yml @@ -27,7 +27,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v3 with: - version: 8 + version: 9 run_install: false - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index dc80ed5a3..e3ad101cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,18 @@ - Enhance: URLプレビューの有効化・無効化を設定できるように #13569 - Enhance: アンテナでBotによるノートを除外できるように (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/545) +- Enhance: クリップのノート数を表示するように +- Enhance: コンディショナルロールの条件として以下を新たに追加 (#13667) + - 猫ユーザーか + - botユーザーか + - サスペンド済みユーザーか + - 鍵アカウントユーザーか + - 「アカウントを見つけやすくする」が有効なユーザーか - Fix: Play作成時に設定した公開範囲が機能していない問題を修正 +- Fix: 正規化されていない状態のhashtagが連合されてきたhtmlに含まれているとhashtagが正しくhashtagに復元されない問題を修正 ### Client +- Feat: アップロードするファイルの名前をランダム文字列にできるように - Enhance: 自分のノートの添付ファイルから直接ファイルの詳細ページに飛べるように - Enhance: 広告がMisskeyと同一ドメインの場合はRouterで遷移するように - Enhance: リアクション・いいねの総数を表示するように @@ -19,6 +28,16 @@ - Enhance: ページのデザインを変更 - Enhance: 2要素認証(ワンタイムパスワード)の入力欄を改善 - Enhance: 「今日誕生日のフォロー中ユーザー」ウィジェットを手動でリロードできるように +- Enhance: 映像・音声の再生にブラウザのネイティブプレイヤーを使用できるように +- Enhance: 映像・音声の再生メニューに「再生速度」「ループ再生」「ピクチャインピクチャ」を追加 +- Enhance: 映像・音声の再生にキーボードショートカットが使えるように +- Enhance: ノートについているリアクションの「もっと!」から、リアクションの一覧を表示できるように +- Enhance: リプライにて引用がある場合テキストが空でもノートできるように + - 引用したいノートのURLをコピーしリプライ投稿画面にペーストして添付することで達成できます +- Enhance: フォローするかどうかの確認ダイアログを出せるように +- Enhance: Playを手動でリロードできるように +- Enhance: 通報のコメント内のリンクをクリックした際、ウィンドウで開くように +- Chore: AiScriptを0.18.0にバージョンアップ - Fix: 一部のページ内リンクが正しく動作しない問題を修正 - Fix: 周年の実績が閏年を考慮しない問題を修正 - Fix: ローカルURLのプレビューポップアップが左上に表示される @@ -29,12 +48,32 @@ - Fix: コードブロックのシンタックスハイライトで使用される定義ファイルをCDNから取得するように #13177 - CDNから取得せずMisskey本体にバンドルする場合は`pacakges/frontend/vite.config.ts`を修正してください。 - Fix: タイムゾーンによっては、「今日誕生日のフォロー中ユーザー」ウィジェットが正しく動作しない問題を修正 +- Fix: CWのみの引用リノートが詳細ページで純粋なリノートとして誤って扱われてしまう問題を修正 +- Fix: ノート詳細ページにおいてCW付き引用リノートのCWボタンのラベルに「引用」が含まれていない問題を修正 +- Fix: ダイアログの入力で字数制限に違反していてもEnterキーが押せてしまう問題を修正 +- Fix: ダイレクト投稿の宛先が保存されない問題を修正 +- Fix: Playのページを離れたときに、Playが正常に初期化されない問題を修正 +- Fix: ページのOGP URLが間違っているのを修正 +- Fix: リバーシの対局を正しく共有できないことがある問題を修正 +- Fix: 通知をグループ化している際に、人数が正常に表示されないことがある問題を修正 ### Server - Enhance: エンドポイント`antennas/update`の必須項目を`antennaId`のみに - Enhance: misskey-dev/summaly@5.1.0の取り込み(プレビュー生成処理の効率化) - Fix: フォローリクエストを作成する際に既存のものは削除するように (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/440) +- Fix: エンドポイント`notes/translate`のエラーを改善 +- Fix: CleanRemoteFilesProcessorService report progress from 100% (#13632) +- Fix: 一部の音声ファイルが映像ファイルとして扱われる問題を修正 +- Fix: リプライのみの引用リノートと、CWのみの引用リノートが純粋なリノートとして誤って扱われてしまう問題を修正 +- Fix: 登録にメール認証が必須になっている場合、登録されているメールアドレスを削除できないように + (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/606) +- Fix: Add Cache-Control to Bull Board +- Fix: nginx経由で/files/にRangeリクエストされた場合に正しく応答できないのを修正 +- Fix: 一部のタイムラインのストリーミングでインスタンスミュートが効かない問題を修正 +- Fix: グローバルタイムラインで返信が表示されないことがある問題を修正 +- Fix: リノートをミュートしたユーザの投稿のリノートがミュートされる問題を修正 +- Fix: AP Link等は添付ファイル扱いしないようになど (#13754) ## 2024.3.1 diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index c2d92e166..281f2e6cc 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -30,9 +30,13 @@ Cypress.Commands.add('visitHome', () => { }) Cypress.Commands.add('resetState', () => { + // iframe.contentWindow.indexedDB.deleteDatabase() がchromeのバグで使用できないため、indexedDBを無効化している。 + // see https://github.com/misskey-dev/misskey/issues/13605#issuecomment-2053652123 + /* cy.window().then(win => { win.indexedDB.deleteDatabase('keyval-store'); }); + */ cy.request('POST', '/api/reset-db', {}).as('reset'); cy.get('@reset').its('status').should('equal', 204); cy.reload(true); diff --git a/locales/en-US.yml b/locales/en-US.yml index ec90c0ad9..a8940a520 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -487,6 +487,7 @@ usernameInvalidFormat: "You can use upper- and lowercase letters, numbers, and u tooShort: "Too short" tooLong: "Too long" weakPassword: "Weak password" +leakedPassword: "This password has been leaked {n} times in other services" normalPassword: "Average password" strongPassword: "Strong password" passwordMatched: "Matches" @@ -2021,7 +2022,7 @@ _2fa: backupCodesSavedConfirmTitle: "Did you save your backup codes?" backupCodesSavedConfirmDescription: "If you lose both your two-factor authentication app and backup codes, YOU WILL LOSE ACCESS TO YOUR ACCOUNT.\nKeep them safe and secure, and do not share them with anyone.\n\n$[x2 Two-factor authentication settings CANNOT be changed by anyone other than yourself, $[fg.color=red AND THE ADMINISTRATOR CANNOT DISABLE IT EITHER.]]" backupCodesSavedConfirmChecked: "I have saved my backup codes" - howto2fa: "If you are having trouble setting up, please refer to {link}." + detailedGuide: "If you are having trouble setting up, please refer to {link}." _permissions: "read:account": "View your account information" "write:account": "Edit your account information" @@ -2435,6 +2436,9 @@ _webhookSettings: renote: "When renoted" reaction: "When receiving a reaction" mention: "When being mentioned" + reportCreated: "When abuse report is created" + reportResolved: "When abuse report is resolved" + reportAutoResolved: "When abuse report is automatically resolved" _moderationLogTypes: createRole: "Role created" deleteRole: "Role deleted" diff --git a/locales/index.d.ts b/locales/index.d.ts index 370049963..5e8998e36 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -1964,6 +1964,10 @@ export interface Locale extends ILocale { * 弱いパスワード */ "weakPassword": string; + /** + * このパスワードは他のサービスで{n}回以上流出しています + */ + "leakedPassword": ParameterizedString<"n">; /** * 普通のパスワード */ @@ -5015,6 +5019,30 @@ export interface Locale extends ILocale { * バックアップコードを使う */ "useBackupCode": string; + /** + * アプリを起動 + */ + "launchApp": string; + /** + * 動画・音声の再生にブラウザのUIを使用する + */ + "useNativeUIForVideoAudioPlayer": string; + /** + * オリジナルのファイル名を保持 + */ + "keepOriginalFilename": string; + /** + * この設定をオフにすると、アップロード時にファイル名が自動でランダム文字列に置き換えられます。 + */ + "keepOriginalFilenameDescription": string; + /** + * 説明文はありません + */ + "noDescription": string; + /** + * フォローの際常に確認する + */ + "alwaysConfirmFollow": string; /** * 通報の種類 */ @@ -6783,6 +6811,26 @@ export interface Locale extends ILocale { * リモートユーザー */ "isRemote": string; + /** + * 猫ユーザー + */ + "isCat": string; + /** + * botユーザー + */ + "isBot": string; + /** + * サスペンド済みユーザー + */ + "isSuspended": string; + /** + * 鍵アカウントユーザー + */ + "isLocked": string; + /** + * 「アカウントを見つけやすくする」が有効なユーザー + */ + "isExplorable": string; /** * アカウント作成から~以内 */ @@ -7761,13 +7809,9 @@ export interface Locale extends ILocale { */ "step1": ParameterizedString<"a" | "b">; /** - * 次に、表示されているQRコードをアプリでスキャンします。 + * 次に、表示されているQRコードをアプリでスキャンするか、ボタンをクリックして端末上でアプリを開きます。 */ "step2": string; - /** - * QRコードをクリックすると、お使いの端末にインストールされている認証アプリやキーリングに登録できます。 - */ - "step2Click": string; /** * デスクトップアプリを使用する場合は次のURIを入力します */ @@ -7878,7 +7922,7 @@ export interface Locale extends ILocale { /** * 設定方法でお困りの際は、{link}を参照してください。 */ - "howto2fa": ParameterizedString<"link">; + "detailedGuide": ParameterizedString<"link">; }; "_permissions": { /** @@ -9084,6 +9128,14 @@ export interface Locale extends ILocale { * ボタン */ "button": string; + /** + * 動的ブロック + */ + "dynamic": string; + /** + * このブロックは廃止されています。今後は{play}を利用してください。 + */ + "dynamicDescription": ParameterizedString<"play">; /** * ノート埋め込み */ @@ -9484,6 +9536,18 @@ export interface Locale extends ILocale { * メンションされたとき */ "mention": string; + /** + * 通報が登録されたとき + */ + "reportCreated": string; + /** + * 通報が解決されたとき + */ + "reportResolved": string; + /** + * 通報が自動解決されたとき + */ + "reportAutoResolved": string; }; }; "_abuse": { @@ -10156,6 +10220,20 @@ export interface Locale extends ILocale { */ "summaryProxyDescription2": string; }; + "_mediaControls": { + /** + * ピクチャインピクチャ + */ + "pip": string; + /** + * 再生速度 + */ + "playbackRate": string; + /** + * ループ再生 + */ + "loop": string; + }; "_skebStatus": { "_genres": { /** diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 4348df93e..90c6f0843 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -487,6 +487,7 @@ usernameInvalidFormat: "a~z、A~Z、0~9、_が使えます" tooShort: "短すぎます" tooLong: "長すぎます" weakPassword: "弱いパスワード" +leakedPassword: "このパスワードは他のサービスで{n}回以上流出しています" normalPassword: "普通のパスワード" strongPassword: "強いパスワード" passwordMatched: "一致しました" @@ -1249,6 +1250,12 @@ gameRetry: "リトライ" notUsePleaseLeaveBlank: "使用しない場合は空欄にしてください" useTotp: "ワンタイムパスワードを使う" useBackupCode: "バックアップコードを使う" +launchApp: "アプリを起動" +useNativeUIForVideoAudioPlayer: "動画・音声の再生にブラウザのUIを使用する" +keepOriginalFilename: "オリジナルのファイル名を保持" +keepOriginalFilenameDescription: "この設定をオフにすると、アップロード時にファイル名が自動でランダム文字列に置き換えられます。" +noDescription: "説明文はありません" +alwaysConfirmFollow: "フォローの際常に確認する" abuseReportCategory: "通報の種類" selectCategory: "カテゴリを選択" reportComplete: "通報完了" @@ -1753,6 +1760,11 @@ _role: roleAssignedTo: "マニュアルロールにアサイン済み" isLocal: "ローカルユーザー" isRemote: "リモートユーザー" + isCat: "猫ユーザー" + isBot: "botユーザー" + isSuspended: "サスペンド済みユーザー" + isLocked: "鍵アカウントユーザー" + isExplorable: "「アカウントを見つけやすくする」が有効なユーザー" createdLessThan: "アカウント作成から~以内" createdMoreThan: "アカウント作成から~経過" followersLessThanOrEq: "フォロワー数が~以下" @@ -2040,8 +2052,7 @@ _2fa: alreadyRegistered: "既に設定は完了しています。" registerTOTP: "認証アプリの設定を開始" step1: "まず、{a}や{b}などの認証アプリをお使いのデバイスにインストールします。" - step2: "次に、表示されているQRコードをアプリでスキャンします。" - step2Click: "QRコードをクリックすると、お使いの端末にインストールされている認証アプリやキーリングに登録できます。" + step2: "次に、表示されているQRコードをアプリでスキャンするか、ボタンをクリックして端末上でアプリを開きます。" step2Uri: "デスクトップアプリを使用する場合は次のURIを入力します" step3Title: "確認コードを入力" step3: "アプリに表示されている確認コード(トークン)を入力します。" @@ -2068,7 +2079,7 @@ _2fa: backupCodesSavedConfirmTitle: "バックアップコードを保存しましたか?" backupCodesSavedConfirmDescription: "二要素認証アプリとバックアップコードの両方を紛失した場合、アカウントにアクセスできなくなります。\n誰とも共有せず、適切な方法で保管してください。\n\n$[x2 二要素認証設定は自分以外の誰にも変更できませんので、$[fg.color=red 運営チームも無効化することはできません。]]" backupCodesSavedConfirmChecked: "バックアップコードを保存しました" - howto2fa: "設定方法でお困りの際は、{link}を参照してください。" + detailedGuide: "設定方法でお困りの際は、{link}を参照してください。" _permissions: "read:account": "アカウントの情報を見る" @@ -2396,6 +2407,8 @@ _pages: section: "セクション" image: "画像" button: "ボタン" + dynamic: "動的ブロック" + dynamicDescription: "このブロックは廃止されています。今後は{play}を利用してください。" note: "ノート埋め込み" _note: @@ -2513,6 +2526,9 @@ _webhookSettings: renote: "Renoteされたとき" reaction: "リアクションがあったとき" mention: "メンションされたとき" + reportCreated: "通報が登録されたとき" + reportResolved: "通報が解決されたとき" + reportAutoResolved: "通報が自動解決されたとき" _abuse: _resolver: @@ -2704,6 +2720,11 @@ _urlPreviewSetting: summaryProxyDescription: "Misskey本体ではなく、サマリープロキシを使用してプレビューを生成します。" summaryProxyDescription2: "プロキシには下記パラメータがクエリ文字列として連携されます。プロキシ側がこれらをサポートしない場合、設定値は無視されます。" +_mediaControls: + pip: "ピクチャインピクチャ" + playbackRate: "再生速度" + loop: "ループ再生" + _skebStatus: _genres: art: "イラスト" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index f56ecdadd..fd9433044 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -486,6 +486,7 @@ usernameInvalidFormat: "a~z, A~Z, 0-9, _를 사용할 수 있습니다" tooShort: "너무 짧습니다" tooLong: "너무 깁니다" weakPassword: "약한 비밀번호" +leakedPassword: "이 비밀번호는 다른 서비스에서 {n}회 이상 유출되었습니다" normalPassword: "좋은 비밀번호" strongPassword: "강한 비밀번호" passwordMatched: "일치합니다" @@ -1999,7 +2000,7 @@ _2fa: backupCodesSavedConfirmTitle: "백업 코드를 저장했습니까?" backupCodesSavedConfirmDescription: "인증 앱과 백업 코드를 모두 분실하면\n계정에 액세스할 수 없게 됩니다.\n자신만이 알 수 있도록 안전한 장소에 보관해 주십시오.\n\n$[x2 2단계 인증 설정은\n본인만이 변경할 수 있으며, $[fg.color=red 운영팀도 해제할 수 없습니다.]]" backupCodesSavedConfirmChecked: "백업 코드를 저장했습니다" - howto2fa: "설정 방법에 대한 자세한 내용은 {link}를 참조하세요." + detailedGuide: "설정 방법에 대한 자세한 내용은 {link}를 참조하세요." _permissions: "read:account": "계정의 정보를 봅니다" "write:account": "계정의 정보를 변경합니다" @@ -2411,6 +2412,9 @@ _webhookSettings: renote: "누군가 내 글을 리노트했을 때" reaction: "누군가 내 노트에 리액션했을 때" mention: "누군가 나를 멘션했을 때" + reportCreated: "신고가 생성되었을 때" + reportResolved: "신고가 해결되었을 때" + reportAutoResolved: "신고가 자동으로 해결되었을 때" _moderationLogTypes: createRole: "역할 생성" deleteRole: "역할 삭제" diff --git a/package.json b/package.json index b9fd8d749..efba96bab 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "misskey", - "version": "2024.3.1-host.6", + "version": "2024.3.1-host.7", "codename": "nasubi", "repository": { "type": "git", "url": "https://github.com/MisskeyIO/misskey.git" }, - "packageManager": "pnpm@8.15.6", + "packageManager": "pnpm@9.0.6", "workspaces": [ "packages/frontend", "packages/backend", @@ -46,30 +46,30 @@ "cleanall": "pnpm clean-all" }, "resolutions": { - "@tensorflow/tfjs-core": "4.17.0", + "@tensorflow/tfjs-core": "4.18.0", "chokidar": "3.6.0", "lodash": "4.17.21", "sharp": "0.33.3" }, "dependencies": { - "cssnano": "6.1.2", + "cssnano": "7.0.1", "execa": "8.0.1", "js-yaml": "4.1.0", "postcss": "8.4.38", - "terser": "5.30.3", + "terser": "5.30.4", "typescript": "5.4.5" }, "devDependencies": { "@types/node": "20.12.7", - "@typescript-eslint/eslint-plugin": "7.6.0", - "@typescript-eslint/parser": "7.6.0", + "@typescript-eslint/eslint-plugin": "7.7.1", + "@typescript-eslint/parser": "7.7.1", "cross-env": "7.0.3", - "cypress": "13.7.3", + "cypress": "13.8.1", "eslint": "8.57.0", "ncp": "2.0.0", "start-server-and-test": "2.0.3" }, "optionalDependencies": { - "@tensorflow/tfjs-core": "4.17.0" + "@tensorflow/tfjs-core": "4.18.0" } } diff --git a/packages/backend/assets/redoc.html b/packages/backend/assets/redoc.html index a9ebf662f..2557b4532 100644 --- a/packages/backend/assets/redoc.html +++ b/packages/backend/assets/redoc.html @@ -19,6 +19,6 @@