-
Notifications
You must be signed in to change notification settings - Fork 2
Feature/merge upstream #86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
* WIp (backend) * Remove unused * 下書きbackend 続き * fix(backedn): visibilityが下書きに反映されない * Update packages/backend/src/postgres.ts Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> * Fix : import order * fix(backend) : createでcwが効かない * FIX FOREGIN KEY * wip: frontend(既存の下書きを挿入) まだ:チャンネル表示、下書きの作成、削除 * WIP: ノート選択ダイアログ 投稿時に下書きを削除 * Promiseに変更 * 連合なし、チャンネルも表示 * Hashtagの値抜け漏れ * hasthagを0文字でも作成可能に * 下書きの保存機構 * chore(misskey-js): build types * localOnly抜け漏れ * チャンネル情報の書き換え * enhance(frontend): ヘッダ部の表示改善 * fix(frontend): ファイル添付できない * fix: no file * fix(frontend): 投票が反映されない * ハッシュタグの展開(コメントアウト外し忘れ) * fix: visibleUserIdsが反映されない * enhance: APIの型を整備 * refactor: 型が整備できたのでasを削除 * Add userhost * fix * enhance: paginationを使う * fix * fix: 自分のアカウントでの投稿でしか下書きを利用できないように 完全に塞ぐことはできないが一応 * 🎨 * APIのエラーIDを追加 * enhance: スタイル調整 * remove unused code * 🎨 * fix: ロールポリシーの型 * ロールの編集画面 * ダイアログの挙動改善 * 下書き機能が利用できない場合は表示しないように * refactor * fix: ダブルクリックが効かない問題を修正 * add comments * fix * fix: 保存時のエラーの種別にかかわらずmodalを閉じないように * fix()backend: NoteDraftのreply, renoteの型が間違ってたので修正 (migtrationはあってた) * fix: 投稿フォームを空白にして通常リノートできるやつは下書きとしては弾くように * fix(backend): テキストが0文字でも下書きは保存できるように * Fix(backend): replyIdの型定義がミスっているのを修正 * chore(misskey-js): update types * Add CHANGELOG * lint * 常にサーバー下書きに保存し、上限を超えた場合のみ尋ねるように * NoteDraftServiceにcreate, updateの処理を移譲 * Fix typeerror * remove tooltip * Remove Mkbutton:short and use iconOnly * 不要なコメントの削除 * Remove Short Completely * wip * escキーまわりの挙動を改善 * 下書き選択時に下書き可能数と現在の量が分かるように * cleanUp * wip * wi * wip * Update MkPostForm.vue --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
* fix: ジョブキューのProgressの値の範囲を 0~100 に統一 * fix(backend): ジョブキューのProgressの計算に用いる総数を最初に一度だけ取得する
* chore(frontend): 開発モード時に言語ファイルの変更を自動で反映するように * fix message * naming * SPDX
Replaces the UploaderDialogFeatures type with UploaderFeatures in the select function and SelectFileOptions type to ensure consistency and correct type usage.
Replaces separate 'effect' and 'crop' features with a unified 'imageEditing' feature in the uploader. Groups crop and effect actions under a new parent 'editImage' menu item, adds localization for 'editImage', and updates supported types accordingly.
Refactored preferences manager to decouple account context and storage provider, improving normalization and loading of profiles. Replaced static profile creation/normalization with instance-based logic, and updated usage in preferences.ts to pass account context explicitly. This enhances maintainability and prepares for better guest account handling.
* ci: use daily cache for ffmpeg * fix(ci): input type * Fix current date * Just use Daily cache * fix condition
- ファイルアップロード時の401エラーを修正(認証トークンの追加) - removeItem関数の呼び出し方法を修正(文字列IDを直接渡すように変更) - 絵文字申請時のプレビュー機能を修正(emojireqプロパティの適切な処理) - MkCustomEmojiでisRequestプロパティを追加し、申請中絵文字の表示を許可 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- admin/emoji/add-request, list-request, update-requestエンドポイントを追加 - emoji-requestsエンドポイントを追加 - MkNoteSimpleで絵文字URLsを正しく渡すように修正 - インデントの修正 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
upload()関数を定義していたが実行していなかったため、 絵文字登録APIが呼び出されず複数登録ができない問題を修正。 Promise.all()でupload()を実行し、結果を正しく取得するように変更。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
## 問題 1. pizzax.tsでdeviceAccountStateKeyNameとregistryCacheKeyNameが コンストラクタで一度だけ設定されていた 2. アカウント切り替え後も最初のアカウントIDのキーを使い続けていた 3. defaultNoteVisibilityがデバイス単位で保存され、 アカウント間で共有されていた ## 修正内容 1. deviceAccountStateKeyNameとregistryCacheKeyNameをgetterに変更し、 アクセス時に常に現在の$i.idを使用して動的にキーを生成 2. defaultNoteVisibilityにserverDependent: trueを追加し、 デバイス×アカウント固有の設定に変更 ## 影響 - localOnly, tl, menu等のdeviceAccount設定が正しく分離される - defaultNoteVisibilityがアカウントごとに独立して保存される 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
## 問題
1. _connected_イベントのリスナーが登録されていなかった
2. 切断後に再接続してもhasDisconnectedがリセットされず、
インジケーターが表示され続けていた
3. timeoutIdの参照時に.valueが欠けていた(ref型)
4. offメソッドの呼び出しが1行にまとまっていて可読性が低かった
## 修正内容
1. useStream().on('_connected_', resetDisconnected)を追加し、
再接続時にインジケーターを非表示にする
2. onUnmounted内でtimeoutId.valueを正しく参照
3. offメソッドの呼び出しを改行して可読性を向上
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 問題 Dockerビルド時に「ReferenceError: LANGS_REPLACE is not defined」 エラーが発生していた。 ## 原因 build-assets.mjsがlocalesディレクトリを読み込んで LANGS_REPLACEを置換する必要があるが、 Dockerfileでlocalesディレクトリがコピーされていなかった。 ## 修正内容 native-builderステージでlocalesディレクトリを 明示的にコピーするように修正。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
## 問題 admin/emoji/list-remoteエンドポイントが複雑なqueryオブジェクトを 受け付けないため、「Invalid param」エラーが発生していた。 ## 修正内容 1. APIエンドポイントをadmin/emoji/list-remoteから v2/admin/emoji/listに変更 2. 未定義の`targets`変数を修正 - onImportClicked: チェックされた項目をフィルタ - contextMenu: クリックされた行を配列として渡す 3. non-null assertionを??演算子に置き換え 4. 不要なcleanObj関数を削除 5. loadingHandler.scopeを使用してローディング表示を追加 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
|
Caution Review failedFailed to post review comments ウォークスルーNode.jsバージョンを20.16.0から22.15.0/22.16.0にバンプし、複数の設定ファイルを更新。GitHubアクション依存関係をアップグレード、devcontainerにPnPMを追加、Cypress統合を実装。さらに全ロケールファイルに新機能(チャット、透かし編集、画像効果)の翻訳キーを追加。 変更内容
実装コード見積もり🎯 4 (複雑) | ⏱️ ~60分 注意が必要な領域:
詩
Pre-merge checks and finishing touches❌ Failed checks (2 warnings, 1 inconclusive)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 34
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (11)
locales/nl-NL.yml (1)
1-20: PR説明が不完全です – 変更の目的と範囲を明確にしてくださいPR の説明が空のテンプレートのままで、「何が変更されたのか」「なぜ変更したのか」が不明です。上流からのマージとのことですが、以下を記入してください:
- どのバージョン/ブランチからマージしたのか
- 新しいキーがいくつ追加されたのか
- 既存の翻訳との互換性は確認したか
locales/si-LK.yml (1)
1-39: PR説明と翻訳の完全性を確認してください。検証により、
locales/si-LK.ymlはシンハラ語ロケール全体の1.2%しか翻訳されていません:
- 英語(en-US.yml):3,268キー
- シンハラ語(si-LK.yml):38キー
- 欠落している翻訳:3,230キー
YAMLの構文は有効ですが、このファイルは不完全な状態です。以下を明確にしてください:
- PR説明が必須:この変更の目的(新機能用の部分翻訳か、完全なロケール追加か)
- 翻訳完全性:すべてのキーが翻訳されるべきなのか、それとも段階的な翻訳が許可されているのか
- 繰り返される値:検出された繰り返し翻訳は意図的なものか確認
現在の状態では、PR説明がないためこのファイルの意図が不明であり、3,230個の欠落キーのため、不完全なロケールファイルとしてマージできません。
.github/workflows/dockle.yml (1)
29-32: 未定義の変数image_nameを削除してください
image_name変数がワークフロー内のどこにも定義されていないため、展開時に空の文字列になります。これは意図しない動作です。さらに、
evalの使用は不要で、セキュリティ上の懸念もあるため、直接コマンドを実行してください:- cmd="dockle --exit-code 1 misskey-web:latest ${image_name}" - echo "> ${cmd}" - eval "${cmd}" + echo "> dockle --exit-code 1 misskey-web:latest" + dockle --exit-code 1 misskey-web:latest
image_nameが意図的に必要な場合は、定義元を明確にしてください。locales/it-IT.yml (4)
157-157: タイポ修正「Vuoi revocare la sospensione si questo profilo?」→「Vuoi revocare la sospensione di questo profilo?」
406-408: Captcha/Turnstile のラベル不一致
- 406: enableMcaptcha が「Abilita hCaptcha」になっています。→「Abilita mCaptcha」
- 414–417: “Turnstile” を「Accesso」と訳すと機能名が不明瞭。製品名「Cloudflare Turnstile」を残すか「Abilita Cloudflare Turnstile」にしてください。
Also applies to: 414-417
365-366: 文法(unwatch)「Smetti di Osserva」→「Smetti di osservare」
1223-1225: 未翻訳(空文字)の修正sourceCodeIsNotYetProvided が空です。UI 空表示を避けるため訳を入れてください(例)「Il codice sorgente non è ancora disponibile」。
locales/generateDTS.js (1)
41-53: コメント埋め込み時の*/エスケープ不足(生成 d.ts 壊れうる)翻訳文字列に
*/が含まれると、生成される JSDoc コメントが途中終了して d.ts が壊れます。*/をエスケープしてからコメント化してください。- if (typeof v === 'string') { + if (typeof v === 'string') { ts.addSyntheticLeadingComment( node, ts.SyntaxKind.MultiLineCommentTrivia, - `* - * ${v.replace(/\n/g, '\n * ')} + `* + * ${v.replace(/\*\//g, '*\\/').replace(/\n/g, '\n * ')} `, true, ); }locales/ru-RU.yml (1)
1022-1022: 機械訳の残存
caption: "Подпись (Automatic Translation)"→ 「Подпись」へ。locales/pt-PT.yml (1)
631-631: 末尾改行が混入(UI 表示崩れの恐れ)menu の値に改行コードが含まれています。除去を推奨します。
-menu: "Menu\n" +menu: "Menu"locales/id-ID.yml (1)
1-1: id-ID.yml に 587 個の翻訳キーが不足しています検証スクリプトの実行結果、
en-US.ymlに存在する 587 個のキーがid-ID.ymlに欠落しています。これらのキーをインドネシア語に翻訳して追加する必要があります。スペルミスや不正なキーは検出されませんでした(0 個)。欠落しているキーの例(最初の 50 個):
- UltimatedataSaver
- _aboutType4ny.forksource
- _abuseReport._notificationRecipient._recipientType._captions.mail
- _abuseReport._notificationRecipient._recipientType._captions.webhook
- _abuseReport._notificationRecipient.createRecipient
- _accountSettings.makeNotesFollowersOnlyBefore
- _auth.accepted
- _bootErrors.otherOption
- _captcha._error._requestFailed.text
- _chat._chatAllowedUsers.everyone
- (他 537 個)
🧹 Nitpick comments (62)
SECURITY.md (1)
15-20: セクションタイトルの文法を修正し、用語の明確化を検討セクションタイトルを改善してください:「When create a patch」 → 「When creating a patch」
また、「private fork」という用語がコンテキストなしに登場します。セキュリティプロセスに不慣れなコントリビューターのために、これが「プライベートセキュリティアドバイザリフォーク」を指すことをより明確にすることを検討してください。GitHubワークフローの制限に関する注記は有用です。
以下のように修正することを提案します:
-## When create a patch +## When creating a patch -If you can also create a patch to fix the vulnerability, please create a PR on the private fork. +If you can also create a patch to fix the vulnerability, please create a PR on the private security advisory fork.CONTRIBUTING.md (1)
87-88: MarkdownのリンクフォーマットをMarkdownスタイルに変更することを検討してください。裸のURLはMarkdownlintによってフラグが立てられています。可読性とメンテナンス性の向上のため、Markdownリンクフォーマットの使用を検討してください。
例:
-読んでおくといいやつ -- https://blog.lacolaco.net/posts/1e2cf439b3c2/ -- https://konifar-zatsu.hatenadiary.jp/entry/2024/11/05/192421 +読んでおくといいやつ +- [Code Reviewのベストプラクティス](https://blog.lacolaco.net/posts/1e2cf439b3c2/) +- [良いコードレビューのために](https://konifar-zatsu.hatenadiary.jp/entry/2024/11/05/192421).github/misskey/test.yml (1)
3-3: テスト用パスワードの取り扱いに注意してください。
setupPasswordにプレースホルダー値が設定されています。このファイルは.github/misskey/test.ymlにあり、テスト専用の設定のようですが、以下の点を確認してください:
- このファイルが本番環境で使用されないこと
- ローカル開発者がこの値を変更する必要があることがドキュメント化されていること
- CI/CD環境で適切にオーバーライドされること
コメント(Line 5)にはローカルテスト用と記載されていますが、セキュリティのベストプラクティスとして、READMEまたはCONTRIBUTING.mdにこの設定の変更手順を記載することを推奨します。
.gitignore (1)
39-40: パス形式の一貫性を確認してください。Line 39は
compose.yml、Line 40は./compose.ymlという異なるパス形式が使用されています。通常、.gitignoreではプレフィックスなしの形式で統一することが推奨されます。docker-compose.yml -./compose.yml +compose.yml .devcontainer/compose.ymllocales/it-IT.yml (9)
12-15: 文言の不自然さと一貫性を修正してください(初期パスワード文)
- Line 12: 「Password iniziale, per avviare le impostazioni」→「Password iniziale per la configurazione」
- Line 13: 「Password iniziale, sbagliata.」→「La password iniziale è errata.」
- Line 14–15: 句読点・改行は良いですが「Se hai installato Misskey di persona」→「Se hai installato Misskey autonomamente」の方が自然です。
85-95: “Following/Followers” の表記ゆれ(英語混在)を統一UI 用語が英語混在です。以下をイタリア語に統一してください。
- 85, 111, 200: “Following”→「Segui/Seguiti」(用途に応じて「Segui」ボタン、「Seguiti」リスト)
- 93, 269: “Following”→「Seguiti」
- 94: “FollowsYou: Follower”→「Ti segue」
- 759: “Numero di Following”→「Numero dei profili seguiti」
Also applies to: 200-205, 268-269, 759-761
146-151: mute/unmute の訳語が音量操作に見える
- 147: 「Riattiva l'audio」→「Riattiva」(または「Togli silenziamento」)
- 149, 151: 「De silenzia…」表記は誤り。「Togli silenziamento…」に統一してください。
Also applies to: 147-149
424-427: 説明文の誤字と用語
- 424: 「Parole chiavi」→「Parole chiave」
- 426: 「Sparando con uno spazio」→「Separando con uno spazio」
579-581: 通知関連の用語統一と誤綴
- 579: “Recived”に相当する綴り誤り。「Nuove note ricevute」などに修正を。
- 583: 「Preferenze di notifica」→「Impostazioni suoni delle notifiche」等、意味が曖昧なので明確化。
- 586: “none: Nessuna” はOK。周辺ラベルと整合を確認ください。
Also applies to: 583-586
631-635: UI ラベルの自然さ「Menù」でも通じますが、一般的には「Menu」が無難です。表記揺れがあれば統一を。
705-706: 用語不一致「Overview」を「Anteprima」とすると“プレビュー”の意味に寄ります。管理画面の概観であれば「Panoramica」を推奨。
875-877: 名詞数の一致「gallery: Gallerie」→「Galleria」(セクション名は単数が自然)
1271-1272: スワイプ挙動の訳意「Trascinare per invertire le colonne」は“逆順にする”ニュアンス。意図が「横スワイプで切替」なら「Scorri orizzontalmente per cambiare colonna」等を推奨。
.github/workflows/test-federation.yml (1)
41-42: 出力ファイル変数はクォート推奨(SC2086)- run: echo "today=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + run: echo "today=$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT".config/cypress-devcontainer.yml (1)
16-16: デフォルト資格情報は必ず置換を
- Line 16:
setupPasswordはそのまま使われないよう、devcontainer 起動手順でも上書きを強制してください(環境変数や.envで注入)。allowedPrivateNetworksはローカル用途の例です。本番テンプレートに混入しないようコメントを追記すると安全です。Also applies to: 218-221
.github/workflows/test-backend.yml (2)
59-61: GITHUB_OUTPUT への追記はクォートを- run: echo "today=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + run: echo "today=$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT"Also applies to: 183-185
157-199: Migration ジョブの最小化
Get current dateの出力は未使用です。不要なら削除して時短/簡素化を。locales/ru-RU.yml (4)
985-986: 文中スペース欠落「…из браузера.Чтобы…」の直後にスペースがありません。→「браузера. Чтобы…」
1256-1260: Passkey/WebAuthn の誤訳・余分な空白
- 1256: 「Войдите в систему, используя свой пароль」→ Passkey は「пароль」ではありません。「Войти с помощью passkey(ключа доступа)」等に。
- 1257: 末尾に余計な空白。
- 1258: 文法修正「Ошибка проверки ключа доступа」へ。
151-156: 同一用語の統一(Drive/Диск、Repost/Репост)
- “Диск/Диска/дисков” の大小・格の揺れを統一してください(UI 全体で「Диск」を基準に)。
- “Репост” 関連の動詞形(репостнуть/репосты)は既に統一されていますが、他所に「передаёт вашу заметку」(2128) が混在。ここも「репостнул(а) вашу заметку」等に寄せると一貫します。
Also applies to: 301-306
1711-1714: 機能の選択肢は意味が反転しないよう見直し_sensitiveMedia 表示設定:
- respect: 「Скрывать содержимое не для всех」
- ignore: 「Показывать содержимое не для всех」
- force: 「Скрывать всё содержимое」
意図通りですが、説明ツールチップ側も整合性確認をお願いします。locales/es-ES.yml (1)
2391-2392: 権限表示の表現統一(chat 読み取り権限)「Explorar Chats」より「Ver chats」または「Leer chats」の方が一貫しています。読み取り用途なので「Ver chats」を提案。
- "read:chat": "Explorar Chats" + "read:chat": "Ver chats"検証用に、他ロケールの "read:messaging" が「Ver…」系で統一されているかも併せてご確認ください。
locales/ar-SA.yml (2)
1009-1012: "information" と既存 "info" の重複による混同リスク同義のトップレベル文言キーが増えています(Line 732 "info" と Line 1010 "information")。参照側での取り違えや翻訳分岐の負債化を避けるため、どちらか一方に統一するか、用途差(例: 見出し/説明)を明確化してください。
Also applies to: 732-733
1316-1316: 権限ラベルの取りこぼし(read:chat)"write:chat" はありますが、"read:chat" が未定義です。権限一覧の整合性のため、読み取り側も追加してください。
提案diff:
_permissions: "read:gallery-likes": "يعرض ما أعجبك من مشاركات المعرض" "write:chat": "اكتب أو احذف رسائل محادثة" + "read:chat": "اعرض رسائل المحادثة"locales/ko-GS.yml (1)
758-760: チャット権限の翻訳が不足_permissions に "read:chat"/"write:chat" のラベルが見当たりません。UI 上の権限名がキー表示になる恐れがあるため追加してください。
提案diff(位置は _permissions 節の末尾で可):
_permissions: "read:favorites": "질겨찾기 보기" "write:favorites": "질겨찾기 곤치기" + "read:chat": "쪽지/채팅 보기" + "write:chat": "쪽지/채팅 작성·삭제"locales/pl-PL.yml (2)
1302-1303: チャット権限の読み取りラベルが未定義"write:chat" はありますが "read:chat" がありません。権限表示の網羅性のため追加を推奨します。
"write:gallery-likes": "Edytowanie listy polubionych postów w galerii" "write:chat": "Tworzenie lub usuwanie wiadomości czatu" + "read:chat": "Przeglądanie wiadomości czatu"
1531-1531: 通知タイプ「login」の文体統一(名詞形を推奨)イベント種別は他と同様に名詞形のほうが一貫します。"Zaloguj się"(命令形)→ "Logowanie" などをご検討ください。
locales/id-ID.yml (8)
68-69: 【翻訳/文言】“Mencari catatan pengguna”は不自然です。“このユーザーの”を明示してください。以下に修正案です:
-searchThisUsersNotes: "Mencari catatan pengguna" +searchThisUsersNotes: "Cari catatan pengguna ini"
163-164: 【スタイル】動詞の体と句点が他ラベルと不一致です。名詞ラベルに統一を。-createAntenna: "Membuat antena." +createAntenna: "Buat antena"
220-221: 【意味の齟齬】“Server media senyap”は意図が伝わりにくいです(メディアをサイレンスする対象がサーバー)。“インスタンスのメディアをサイレンス”と明確化を。-mediaSilenceThisInstance: "Server media senyap" +mediaSilenceThisInstance: "Senyapkan media instansi ini"
243-244: 【用語統一】“membolehkan federasi”より“diizinkan untuk federasi”の方が自然です。-federationAllowedHosts: "Server yang membolehkan federasi" +federationAllowedHosts: "Server yang diizinkan untuk federasi"
339-344: 【アクセシビリティ用語】英語側が“alt text”へ寄せています。インドネシア語も「teks alternatif」に統一してください。-describeFile: "Tambahkan keterangan" -enterFileDescription: "Masukkan keterangan" -caption: "Keterangan" -inputNewDescription: "Masukkan keterangan disini" +describeFile: "Tambahkan teks alternatif" +enterFileDescription: "Masukkan teks alternatif" +caption: "Teks alternatif" +inputNewDescription: "Masukkan teks alternatif"英語(en-US)側の対応キー(describeFile/enterFileDescription/caption/inputNewDescription)が「alt text」表記であることをご確認ください。
Also applies to: 635-636, 998-999
1050-1051: 【文言/大文字】“Buat Catatan ke Kanal”は不自然かつ大文字が混在します。簡潔に。-postToTheChannel: "Buat Catatan ke Kanal" +postToTheChannel: "Posting ke kanal"
1268-1274: 【名詞/動詞の混在】_chat.invitations が動詞形「Undang」になっています。名詞「Undangan」に統一を。-_chat: - invitations: "Undang" +_chat: + invitations: "Undangan"
2411-2414: 【ラベルの意味誤り】Deck の “tl” は「タイムライン」を指します。“Beranda(ホーム)”ではありません。-_deck: - tl: "Beranda" +_deck: + tl: "Lini masa"locales/en-US.yml (9)
351-352: 【Plural/Singular】キー名は showFile(単数)。表示文も単数に。-showFile: "Show files" +showFile: "Show file"
615-617: 【英文校正】説明文が不自然です。目的が「メモリ上のUIコンポーネント一覧の確認」であることを簡潔に。-uiInspectorDescription: "You can see the UI component server list on memory. UI component will be generated by Ui:C: function." +uiInspectorDescription: "Displays the list of UI components currently in memory. Components are generated by the Ui:C: function."
1290-1291: 【英文校正/改行除去】より自然な文に。末尾の不要改行も削除。-useNativeUIForVideoAudioPlayer: "Use UI of browser when play video and audio\n" +useNativeUIForVideoAudioPlayer: "Use the browser's native UI when playing video and audio"
1011-1012: 【用語選択】“unauthorized file type”より“disallowed”または“unsupported”が文脈に適します。-cannotUploadBecauseUnallowedFileType: "Unable to upload due to unauthorized file type." +cannotUploadBecauseUnallowedFileType: "Cannot upload due to disallowed file type."
2253-2256: 【用語/数】SFX は単数形が自然です。- chatMessage: "Chat Messages" + chatMessage: "Chat message"
683-687: 【用語統一】“Enable Push-Notifications for your Browser”は大文字・ハイフンが過剰です。一般的な表記へ。-enableServiceworker: "Enable Push-Notifications for your Browser" +enableServiceworker: "Enable push notifications for your browser"
2708-2731: 【Deck文言】説明文の “+” 参照は良いですが、位置をより明確に。- introduction2: "Click on the + on the right of the screen to add new columns whenever you want." + introduction2: "Click the “+” button on the right side of the screen to add new columns at any time."
2370-2382: 【権限説明の文体】"Can manage ..." と "Manage ..." が混在。文体統一を推奨。例:
- "write:admin:avatar-decorations": "Can manage avatar decorations" + "write:admin:avatar-decorations": "Manage avatar decorations"他の "Can manage ..." も同様にご検討ください。
権限ラベルのスタイルガイドに合わせて一括置換可否をご確認ください。
1121-1124: 【ラベル綴り】"UltimatedataSaver" の表記ブレがあります。見出しは「Ultimate Data Saver」に。-UltimatedataSaver: "Ultimate Data Saver" +UltimatedataSaver: "Ultimate Data Saver"備考: 必要ならキー名側(機能ID)も別PRで見直しを。
locales/ja-JP.yml (6)
98-98: 【用語「指名」(direct)のUX妥当性】direct(DM相当)の訳を「指名」としており、一般的用語(ダイレクト/DM/宛先指定)と比べ意味が伝わりづらい懸念があります。全体でこの語を採用するのか、または「ダイレクト」等に戻すのか、プロダクト内の用語集に合わせて再確認してください。
Also applies to: 2703-2703, 2954-2955
208-208: 【日本語の自然さの改善提案】末尾の「古いファイルからキャッシュが削除されリンクになります。」は不自然です。以下のように簡潔にすると読みやすいです。
- 「古いファイルから順にキャッシュが削除され、リンクのみの保持に切り替わります。」
必要なら適用します。- この制限を超えた場合、古いファイルからキャッシュが削除されリンクになります。 + この制限を超えた場合、古いファイルから順にキャッシュが削除され、リンクのみの保持に切り替わります。
370-370: 【文言の句読点・引用符】「「{x}」がオンになっています。」の二重鉤括弧の入れ子はOKですが、他のダイアログ系文言と統一してください(全角/半角引用や句点の有無)。
471-475: 【エラーダイアログ文言の整合性】_title と description の書式・敬体/常体が他のエラーダイアログ(例: _remoteLookupErrors 等)と混在しがちです。ラベル体裁(末尾句点、敬体)をガイドラインに合わせて統一を。
690-692: 【「削除/非公開ノート」表示文言のトーン】「削除されたノート」「非公開のノート」は利用者の混乱を避けるため、場合により補足(「表示できません」等)を付すとよいです。UIのスペースに応じて短文化版も検討ください。
857-859: 【再起動/リロード条件の用語統一】「設定はページリロード後に反映」「サーバーの再起動が必要」といった反映要件は影響範囲が大きいので、設定画面全体で表現を統一し、必要ならアイコン/ツールチップで補助してください。
locales/de-DE.yml (5)
224-224: 【用語のハイフン表記】"Software Name" → 一般的には "Software-Name" の方が自然です。
- softwareName: "Software Name" + softwareName: "Software-Name"
191-194: 【自然なドイツ語表現へ】
- continueOnRemote: 「Auf dem Remote-Server fortfahren」などが自然です。
- specifyServerHost: 「Server-Host angeben」の方が指示として明確です。
- inputHostName: 「Gib die Domain an」→ 「Gib die Domain ein」が一般的。
- continueOnRemote: "Weiter auf Remote-Server" + continueOnRemote: "Auf dem Remote-Server fortfahren" - specifyServerHost: "Server-Host auswählen" + specifyServerHost: "Server-Host angeben" - inputHostName: "Gib die Domain an" + inputHostName: "Gib die Domain ein"
521-524: 【語の結合・UI用語】
- "Menü Stil" → "Menüstil"
- "Drawer" の訳を「App-Übersicht」としており意味が変わっています。ここは "Schublade (Drawer)" 等、UI用語としての整合性をご検討ください。
- menuStyle: "Menü Stil" + menuStyle: "Menüstil" - drawer: "App-Übersicht" + drawer: "Drawer"
610-611: 【説明文の意味不明瞭】"Die Liste der UI-Komponenten-Server können im Zwischenspeicher angesehen werden." は意味が通りません。意図は「メモリ上に存在するUIコンポーネントの一覧を確認できる」だと思われるため、次のような修正を提案します。
- uiInspectorDescription: "Die Liste der UI-Komponenten-Server können im Zwischenspeicher angesehen werden. Die UI-Komponente wird von der Funktion Ui:C: generiert." + uiInspectorDescription: "Eine Liste der im Speicher vorhandenen UI‑Komponenten kann angezeigt werden. UI‑Komponenten werden über die Funktionen der Ui:C:-Familie erzeugt."
499-499: 【末尾スペースの除去】文末に余分なスペースがあります。機械比較でのノイズ源になるため削除を推奨します。
- signinOrContinueOnRemote: "Um fortzufahren, gehe zu deiner Instanz oder registriere bzw. melde dich an dieser Instanz an. " + signinOrContinueOnRemote: "Um fortzufahren, gehe zu deiner Instanz oder registriere bzw. melde dich an dieser Instanz an.".github/workflows/deploy-test-environment.yml (2)
31-31: 【Actionsのバージョン固定】actions/checkout@v4.2.2 はタグ参照です。Supply‑chain対策としてコミットSHAでピン留めすることを推奨します。
33-49: 【許可ユーザー判定の堅牢化】organizations/$ORG_ID/public_members は「公開メンバー」に限定され、またリポジトリ所有者が個人の場合に404になります。以下のいずれかでの判定に切替/併用を検討ください。
- repo権限で判定: GET /repos/{owner}/{repo}/collaborators/{username}/permission
- GraphQLで isMemberOfOrganization や repository.permission を参照
フォールバックを設けると誤拒否を避けられます。
.github/workflows/check-misskey-js-version.yml (1)
23-23: 【Actionsのバージョン固定】actions/checkout はコミットSHAでの固定を推奨します(サプライチェーン対策)。
.github/workflows/locale.yml (1)
17-24: 【ワークフローの堅牢性】
- 各 Action をコミットSHAでピン留めしてください(checkout / pnpm/action-setup / setup-node)。
- node-version-file を使っており、pnpmキャッシュも有効。構成は妥当です。
.devcontainer/init.sh (1)
6-8: devcontainerのセットアップ最適化(サイズ/再現性)
- 非対話化: tzdata等のプロンプト抑止に DEBIAN_FRONTEND=noninteractive を付与。
- クリーンアップ: キャッシュ削除でイメージ肥大化を抑制。
- シェル安全性:
set -euo pipefailを推奨(未設定の変数検知)。-sudo apt-get update -sudo apt-get -y install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb +export DEBIAN_FRONTEND=noninteractive +sudo apt-get update +sudo apt-get -y install \ + libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 \ + libasound2 libxtst6 xauth xvfb +sudo apt-get clean +sudo rm -rf /var/lib/apt/lists/*-set -xe +set -euo pipefail +set -xAlso applies to: 15-15
.devcontainer/devcontainer.yml (2)
106-113: 【設定項目追加のドキュメント整合性】redisForReactions ブロックが追加されています。アプリ側がこのキーを認識し、fallback(未設定時の既存redisを使用)が機能することを確認してください。併せて .config/example.yml / docs への記載更新もお願いします。
155-160: 【Sentryフロントエンド設定のコメント】vueIntegration/browserTracing/replay の有効化はビルドサイズ/挙動に影響します。既定方針(本番/開発でのON/OFF)をドキュメントに明記しておくと運用が楽になります。
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (10)
assets/about/drive.pngis excluded by!**/*.pngassets/about/post.pngis excluded by!**/*.pngassets/about/reaction.pngis excluded by!**/*.pngassets/about/ui.pngis excluded by!**/*.pngassets/ss/explore.jpgis excluded by!**/*.jpgassets/ss/user.jpgis excluded by!**/*.jpgpackages/backend/assets/favicon.icois excluded by!**/*.icopackages/backend/assets/favicon.pngis excluded by!**/*.pngpackages/backend/assets/splash.pngis excluded by!**/*.pngpackages/backend/assets/tabler-badges/login-2.pngis excluded by!**/*.png
📒 Files selected for processing (83)
.config/cypress-devcontainer.yml(1 hunks).config/docker_example.yml(3 hunks).config/example.yml(4 hunks).devcontainer/devcontainer.json(1 hunks).devcontainer/devcontainer.yml(2 hunks).devcontainer/init.sh(1 hunks).dockerignore(1 hunks).editorconfig(1 hunks).github/ISSUE_TEMPLATE/01_bug-report.yml(2 hunks).github/dependabot.yml(1 hunks).github/labeler.yml(1 hunks).github/min.node-version(1 hunks).github/misskey/test.yml(2 hunks).github/workflows/api-misskey-js.yml(1 hunks).github/workflows/changelog-check.yml(1 hunks).github/workflows/check-misskey-js-autogen.yml(3 hunks).github/workflows/check-misskey-js-version.yml(1 hunks).github/workflows/check-spdx-license-id.yml(2 hunks).github/workflows/check_copyright_year.yml(1 hunks).github/workflows/deploy-test-environment.yml(1 hunks).github/workflows/docker-develop.yml(1 hunks).github/workflows/docker.yml(1 hunks).github/workflows/dockle.yml(2 hunks).github/workflows/get-api-diff.yml(1 hunks).github/workflows/lint.yml(2 hunks).github/workflows/locale.yml(1 hunks).github/workflows/ok-to-test.yml(0 hunks).github/workflows/on-release-created.yml(1 hunks).github/workflows/pr-preview-deploy.yml(0 hunks).github/workflows/pr-preview-destroy.yml(0 hunks).github/workflows/release-with-dispatch.yml(2 hunks).github/workflows/release-with-ready.yml(0 hunks).github/workflows/report-api-diff.yml(1 hunks).github/workflows/storybook.yml(2 hunks).github/workflows/test-backend.yml(5 hunks).github/workflows/test-federation.yml(1 hunks).github/workflows/test-frontend.yml(5 hunks).github/workflows/test-misskey-js.yml(2 hunks).github/workflows/test-production.yml(1 hunks).github/workflows/validate-api-json.yml(2 hunks).gitignore(2 hunks).node-version(1 hunks).npmrc(1 hunks).vscode/settings.json(1 hunks)CONTRIBUTING.md(7 hunks)COPYING(1 hunks)Dockerfile(4 hunks)README.md(1 hunks)SECURITY.md(1 hunks)chart/files/default.yml(2 hunks)cypress.config.ts(0 hunks)cypress/e2e/basic.cy.ts(5 hunks)cypress/plugins/index.js(0 hunks)cypress/support/commands.ts(1 hunks)idea/MkAbuseReport.stories.impl.ts(1 hunks)idea/README.md(1 hunks)locales/ar-SA.yml(5 hunks)locales/bn-BD.yml(4 hunks)locales/cs-CZ.yml(13 hunks)locales/de-DE.yml(66 hunks)locales/el-GR.yml(5 hunks)locales/en-US.yml(52 hunks)locales/es-ES.yml(57 hunks)locales/fr-FR.yml(30 hunks)locales/generateDTS.js(3 hunks)locales/hu-HU.yml(2 hunks)locales/id-ID.yml(22 hunks)locales/index.js(2 hunks)locales/it-IT.yml(85 hunks)locales/ja-JP.yml(60 hunks)locales/ja-KS.yml(44 hunks)locales/kn-IN.yml(3 hunks)locales/ko-GS.yml(10 hunks)locales/lo-LA.yml(5 hunks)locales/nl-NL.yml(22 hunks)locales/no-NO.yml(3 hunks)locales/pl-PL.yml(12 hunks)locales/pt-PT.yml(54 hunks)locales/ro-RO.yml(26 hunks)locales/ru-RU.yml(50 hunks)locales/si-LK.yml(2 hunks)locales/sk-SK.yml(4 hunks)locales/sv-SE.yml(8 hunks)
💤 Files with no reviewable changes (6)
- cypress.config.ts
- .github/workflows/pr-preview-deploy.yml
- .github/workflows/release-with-ready.yml
- .github/workflows/pr-preview-destroy.yml
- .github/workflows/ok-to-test.yml
- cypress/plugins/index.js
🧰 Additional context used
🧬 Code graph analysis (1)
locales/generateDTS.js (1)
packages/frontend-shared/js/i18n.ts (1)
ts(50-90)
🪛 actionlint (1.7.8)
.github/workflows/test-backend.yml
60-60: shellcheck reported issue in this script: SC2086:info:1:37: Double quote to prevent globbing and word splitting
(shellcheck)
74-74: shellcheck reported issue in this script: SC2015:info:7:41: Note that A && B || C is not if-then-else. C may run when A is true
(shellcheck)
74-74: shellcheck reported issue in this script: SC2086:info:9:8: Double quote to prevent globbing and word splitting
(shellcheck)
183-183: shellcheck reported issue in this script: SC2086:info:1:37: Double quote to prevent globbing and word splitting
(shellcheck)
.github/workflows/test-federation.yml
42-42: shellcheck reported issue in this script: SC2086:info:1:37: Double quote to prevent globbing and word splitting
(shellcheck)
56-56: shellcheck reported issue in this script: SC2015:info:7:41: Note that A && B || C is not if-then-else. C may run when A is true
(shellcheck)
56-56: shellcheck reported issue in this script: SC2086:info:9:8: Double quote to prevent globbing and word splitting
(shellcheck)
80-80: shellcheck reported issue in this script: SC2086:info:1:63: Double quote to prevent globbing and word splitting
(shellcheck)
🪛 LanguageTool
README.md
[grammar] ~4-~4: Use a hyphen to join words.
Context: ...dth="300"/> **🌎 Type4ny is an open source, federated social media platform ...
(QB_NEW_EN_HYPHEN)
CONTRIBUTING.md
[grammar] ~72-~72: Ensure spelling is correct
Context: ...tent/ns.md) by sending PR. The name of purporsed extension property (referred as "extend...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.18.1)
CONTRIBUTING.md
87-87: Bare URL used
(MD034, no-bare-urls)
88-88: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (110)
COPYING (1)
2-2: 著作権年の更新を承認します。2025年の著作権表示が正しく更新されています。定期的な著作権年の保守として適切です。
SECURITY.md (1)
10-13: CVE説明要件に関する重要な情報を適切に追加CVEドキュメントを作成する際の英語記述要件について、明確で有用なガイダンスが追加されています。セキュリティアドバイザリプロセスにおけるコントリビューターの期待値を明確にする、よい補足です。
.github/workflows/release-with-dispatch.yml (2)
58-69: チェンジログテンプレートのフォーマット変更を検証してください行62、65、68で
changes_templateの各セクション(General、Client、Server)に空のリスト項目(-の後に空行)が追加されています。これは意図的なフォーマット調整と思われますが、以下を確認してください:
- このフォーマット変更がupstream(Misskey)との同期に基づいているか
- 生成されるチェンジログが期待通りにレンダリングされるか(ダッシュが余分に表示されないか)
86-89: 新しいパラメータreset_number_on_channel_changeの互換性を確認してください
create-prereleaseジョブにreset_number_on_channel_change: trueが追加されました。このパラメータがmisskey-dev/release-manager-actions@v2で実際にサポートされていることを確認してください。未対応の場合、ワークフロー実行時にエラーが発生する可能性があります。
.npmrc (1)
2-3: npm設定オプションの追加は技術的に妥当ですが、PR説明が不十分です。変更内容は正しい npm 設定オプションです:
save-exact = true: package.json に正確なバージョン(セマンティックバージョニング範囲なし)を保存しますshell-emulator = true: npm スクリプトのクロスプラットフォーム互換性を向上させますただし、以下の懸念があります:
- PR の説明が非常に曖昧で、これらの設定が必要な理由や背景が全く記載されていません
- PR タイトル「Feature/merge-upstream」が示唆するアップストリームマージの内容が不明です
- チェックリスト項目がすべてチェックされていないため、PR のレビュー準備が十分ではない可能性があります
- 貢献者のワークフローへの影響(正確なバージョンの強制)が明確に伝達されていません
次の点を確認してください:
- これらの設定が必要な具体的な理由は何ですか?
- どのプロジェクトのアップストリームからマージされていますか?
- これらの設定が既存の貢献者のワークフローにどのような影響を与えますか?
locales/nl-NL.yml (2)
973-1084: 新しく追加されたセクション構造の確認が必要です以下の新しいセクションが追加されていますが、これらが実装側で正しく参照されているか確認してください:
_chat(行 973-978)_role(行 983-988)_ffVisibility(行 989-990)_abuseReport(行 1069-1072)_moderationLogTypes(行 1073-1075)_remoteLookupErrors(行 1078-1080)_search(行 1081-1082)_watermarkEditor(行 1083-1085)これらのキーが実装コード内で実際に使用されているかを検証してください。
12-14: 翻訳の一貫性と記述スタイルを確認してくださいいくつかの翻訳について、スタイルの一貫性と正確性を確認する必要があります:
- 行 12-14:
initialPasswordForSetupの複数形表現- 行 175-178:
cacheRemoteFiles関連の説明文- 行 240-245:
silencedInstancesとmediaSilencedInstancesの説明の並列性Dutch 言語ネイティブスピーカーによるレビューを推奨します。
Also applies to: 175-178, 240-245
locales/sv-SE.yml (3)
1-100: ファイルの構造とYAML形式は適切に保たれていますファイル全体のYAML構造は正しく、キーと値のペアが適切に配置されています。基本的な翻訳キー(行1-100)は完全であり、スウェーデン語の翻訳が欠落しているものはありません。
380-500: 用語の一貫性を確認してください複数の箇所で翻訳の一貫性に注意が必要です。例えば:
- 行384の「Markera alla meddelanden som lästa」と行482の「Redigera kod」など、異なるコンテキストで異なる表現が使用されています
- 行448の「Aktivera」と行439の「Inaktivera alla」は対になっており、用語が適切に対応しているか確認してください
- 行467-468の「Ja」/「Nej」(はい/いいえ)は他の確認メッセージと用語が統一されているか確認が必要です
スウェーデン語のネイティブスピーカーまたはプロジェクトの翻訳ガイドラインに従って、これらの用語が一貫していることを確認してください。特に「Lägg till」(行432)と「Lägg till」系の表現が全体で統一されているか確認願います。
562-717: ネストされたセクションの構造は適切ですが、完全性を検証してくださいファイルの後半部分(行562-717)では、複数のネストされたセクション(_chat、_initialAccountSetting、_role、_permissions、_profile、_notification、_deckなど)が追加されています。これらのセクションの構造は適切に見えますが、以下の点を確認してください:
- すべてのセクションが対応する親キーを持っているか
- ネストの深さが一貫しているか
- 各セクション内のすべてのキーに値が割り当てられているか
特に行613(_ago)、行668(_play)、行714(_search)、行716(_watermarkEditor)などの新しいセクションが完全に翻訳されていることを確認してください。
設定ファイルの別の言語ファイル(例:locales/en-US.ymlまたはlocales/ja.yml)と比較して、セクション構造とキーの数が一致しているか、そして翻訳が完全であることを確認してください。
locales/lo-LA.yml (4)
1-10: PR説明が不完全です。マージの詳細を記入してください。このPRの説明がテンプレートのままで、具体的な変更内容が不明確です。"merge upstream" (アップストリームのマージ) の目的が明確ではなく、どのバージョンのアップストリームからマージするのか、またどの言語ファイルが影響を受けるのかについての情報が必要です。
395-400: ネストされたキーと既存のルートレベルキーの重複を確認してください。新しく追加された
_chatブロック内のキーが、既存のルートレベルのキーと重複しています:
_chat.invitations(397行) は既にinvitations(334行) に存在_chat.noHistory(398行) は既にnoHistory(340行) に存在_chat.members(399行) は既にmembers(326行) に存在この重複が意図的なUI分類なのか、それとも誤りなのか確認が必要です。これらのキーがアップストリームから変更された場合、複数の翻訳キーを保持する理由を明確にしてください。
436-436: 同一の翻訳値が複数のコンテキストで使用されています。行 436 (
_visibility.specified) と行 474 (_deck._columns.direct) の両方が「ໂພສ Direct note」という同じ値を持っており、これは行 72 のdirectNotesと同一です。UI要素の機能的な意図が異なる場合、より文脈に適した異なる翻訳の使用を検討してください。ラオ語での意図された意味が正確に伝わるかご確認ください。
Also applies to: 474-474
483-489: 新しく追加されたネストキーの完全性を確認してください。以下の新しいセクションが追加されています:
_remoteLookupErrors._noSuchObject.title(485行)_search._searchScopeAll(487行)_watermarkEditor.image(489行)これらの変更がアップストリームのマージと完全に一致しているか、また必要なすべてのキーが翻訳されているかをご確認ください。
locales/hu-HU.yml (2)
2-2: 言語識別子の修正を確認
_lang_の値が「Japán」(日本語)から「Magyar」(ハンガリー語)に更新されました。ハンガリー語ロケールファイルでは「Magyar」が正しい識別子です。この修正は適切です。
99-99: 他のロケールファイルでのloginキー確認済み検証結果から、
_notification._typesセクションにloginキーが以下のロケールファイルに一貫して存在することが確認されました:
- en-US.yml:2698
- fr-FR.yml:2200
- ja-JP.yml:2909
- ar-SA.yml:1531
- bn-BD.yml:1308
- ca-ES.yml:2673
- cs-CZ.yml:1974
- de-DE.yml:2662
- その他40以上のロケールファイル
hu-HU.yml への変更はすべてのロケールファイル全体に対する上流マージの一部として一貫性を保っています。
locales/ro-RO.yml (2)
1218-1243: ネストされたセクション構造が適切に組織されています。
_initialTutorialと_postNoteセクションの翻訳は完了し、適切な階層構造が確認できます。変更内容は問題ありません。
1-1400: ルーマニア語ローカライゼーションファイルの大規模な追加が確認できます。このファイルは 1400 行以上のルーマニア語翻訳を含む包括的な更新です。構造、ネスト、YAML 形式は概ね適切です。性別対応翻訳("sigur(ă)" など)も一貫して実装されています。軽微な書式上の問題(行 66、411)を除き、翻訳品質とテキスト一貫性は良好な状態です。
.editorconfig (1)
16-19: マイグレーションファイル用のインデント設定は有効です。上流リポジトリとの整合性を確認してください。検証結果:
packages/backend/migration/ディレクトリには500以上のマイグレーションファイルが実在し、EditorConfigのルールは構文的に有効です。プロジェクトではYAMLファイルで既にスペースインデントを使用しており、ディレクトリごとに異なるインデントスタイルを設定する慣例があります。ただし、このルールが上流リポジトリから取り込まれたものかどうかを確認する必要があります。feature/merge-upstreamブランチ内で上流リポジトリのバージョンと比較し、この変更が意図的な取り込みであることを確認してください。
locales/kn-IN.yml (3)
69-71: AI要約と実装の構造が不一致AI要約では「_email → _follow → _theme → keys → mention」としてネストされていると記述されていますが、実装を確認するとこれらのセクションはそのような階層構造になっていません。
_themeセクション(69行目)は_email._followではなくルートレベルに配置されています。この実装は正しいと思われますが、AI要約の記述が正確でない可能性があります。
1-96: プルリクエスト説明が不完全ですPR概要で「What」「Why」「Additional info」のセクションが空のテンプレートのままになっています。この変更の目的、関連する機能、テストの状況などの詳細情報がないため、レビューの文脈が不明確です。
プルリクエスト説明を更新して、以下の情報を追加してください:
- 変更の目的(新機能の追加、上流との同期など)
- カンナダ語翻訳の妥当性確認
- 他のロケールファイルとの同期状況
- ローカル環境でのテスト状況
47-49: 他のロケールファイルとの構造一貫性が確認されました検証結果から、kn-IN.ymlに追加されたキー(
mention、mentions、_visibility.specified、_notification._types.mention)は、en-US.yml、ja-JP.ymlを含む他のロケールファイル全体で同じネストパターンで一貫しており、構造的な問題は検出されませんでした。ただし以下を確認してください:
- プルリクエスト説明が空です:変更の目的や影響範囲が不明です。これらの翻訳がどのような機能に対応しているのかを明確にしてください。
_deck._columns.directキーの確認が不完全です:このキーの存在を完全に検証できませんでした。- 実際の変更内容:どのキーが新規追加で、どのキーが既存であったかを確認してください。
locales/si-LK.yml (4)
4-4: 翻訳の再利用パターンを確認してください。"සොයන්න"(search)が
search(4行目)とsearchByGoogle(24行目)の両方で使用されています。これが意図的な再利用なのか、それともsearchByGoogleに異なる翻訳が必要なのかを確認してください。Also applies to: 24-24
6-6: 複数のコンテキストで同じ翻訳が繰り返されています。"දැනුම්දීම්"(notifications)が複数の場所で使用されています:
notifications(6行目)_sfx.notification(27行目)_widgets.notifications(31行目)_deck._columns.notifications(39行目)これが同一の用語として意図されているのか、文脈に応じた異なる翻訳が必要なのかを確認してください。
Also applies to: 27-27, 31-31, 39-39
12-12: 翻訳の一貫性:同一テキストの再利用確認。"එපා, ස්තුතියි"(noThankYou)が
noThankYou(12行目)と_2fa.renewTOTPCancel(29行目)で同じ翻訳が使用されています。この再利用が意図的であることを確認してください。Also applies to: 29-29
1-39: シンハラ語翻訳の正確性を検証してください。このファイルのシンハラ語翻訳の正確性はネイティブスピーカーまたは言語レビュアーによる検証が必要です。また、プロジェクト内の他のシンハラ語ロケールファイルとの整合性も確認してください。
locales/cs-CZ.yml (5)
1112-1117: _chat ブロック構造は適切です新しい _chat セクションの追加は、他のネストされたセクション(_role、_widgets など)と一貫した構造を維持しています。
1728-1728: 新しい write:chat 権限は適切に統合されています新しい「write:chat」権限がチェコ語翻訳と共に正しく _permissions セクションに追加されています。
1974-1974: 通知タイプ login の追加は適切です新しい login 通知タイプがチェコ語翻訳と共に正しく _notification._types セクションに統合されています。
2041-2054: 新しいセクション _remoteLookupErrors、_search、_watermarkEditor は適切に構造化されています3 つの新しいセクションが既存のロケーション構造パターンに従い、正しく YAML インデント(2 スペース)でネストされています。翻訳されたすべてのキーと値が存在します。
1-2054: PR 説明が不完全:変更の影響範囲を明確にしてくださいPR の説明がテンプレート形式のままで、具体的な変更内容が記載されていません。上流からのマージ対象の変更、新しい UI 機能、または翻訳の範囲を説明してください。
追加の確認項目:
- チェコ語翻訳が言語的に正確であることを確認してください(特に行 52 のタイプミスの可能性)
- 他の言語のロケールファイル(en-US、ja-JP など)が対応する変更を含んでいることを確認してください
- 新しいキー(_remoteLookupErrors、_search、_watermarkEditor)がコード内で適切に参照されていることを確認してください
.github/workflows/dockle.yml (2)
28-28:jqは ubuntu-latest に事前インストール済みですGitHub が提供するホストランナーには jq がプリインストールされています。具体的には、ubuntu-latest は Ubuntu 22.04 を使用し、jq 1.6 が含まれています。提案された JSON ベースのイメージ ID 抽出方法は、テキスト解析よりも堅牢であり、動作に問題ありません。
18-18: actions/checkout@v4.2.2 の使用は問題ありませんv4.2.2 は2024年10月23日にリリースされた正規バージョンで、url-helper.ts の変更と単体テストカバレッジの拡張が含まれています。このバージョンについて公開されているセキュリティ勧告や CVE は見つかっていません。v4.1.1 からの更新は安全なマイナーバージョン変更です。
.github/workflows/check_copyright_year.yml (1)
13-13: LGTM!checkout actionのバージョン更新(v4.1.1 → v4.2.2)は適切です。PR全体で一貫してactionのバージョンが更新されています。
.github/workflows/docker-develop.yml (1)
30-30: LGTM!checkout actionのバージョン更新(v4.1.1 → v4.2.2)は適切です。他のワークフローファイルと一貫性があります。
.github/workflows/docker.yml (1)
35-35: LGTM!checkout actionのバージョン更新(v4.1.1 → v4.2.2)は適切です。ワークフロー全体で一貫してactionが更新されています。
.github/workflows/changelog-check.yml (1)
15-19: LGTM!GitHub Actionsのバージョン更新が適切に行われています:
- checkout: v4.1.1 → v4.2.2
- setup-node: v4.0.3 → v4.4.0
node-version-fileの使用により、
.node-versionファイルと連携した設定になっています。.github/min.node-version (1)
1-1: 最小Node.jsバージョンの戦略を確認してください。
.github/min.node-version(22.15.0)、.node-version(22.16.0)、.devcontainer/devcontainer.json(22.15.0)の間でバージョンの違いがあります。この構成により:
- 最小バージョン:22.15.0
- 推奨バージョン:22.16.0(CI/CD)
- 開発環境:22.15.0
開発環境とCI環境で異なるバージョンを使用すると、環境差異による問題が発生する可能性があります。意図的な設定でない場合は、統一することをお勧めします。
idea/README.md (1)
1-1: LGTM!
idea/ディレクトリの目的を明確に説明しています。将来的に再利用可能なコードを保存しておくアーカイブディレクトリとしての役割が理解できます。.devcontainer/devcontainer.json (1)
10-12: pnpmバージョン指定に不一致があります。package.jsonで
pnpm@10.14.0が指定されていますが、devcontainer.jsonではpnpm:2フィーチャーが10.10.0を指定しています。.npmrcでengine-strict = trueが有効になっているため、このバージョン不一致によってコンテナ内でpnpmインストール時にエラーが発生する可能性があります。pnpm v10.xの破壊的変更(onlyBuiltDependencies、SHA256ハッシング、エスケープ処理など)はすべてのv10マイナーバージョンに適用されますが、バージョン指定の不一致を解決する必要があります:
- devcontainer.jsonの
pnpmフィーチャーバージョンを10.14.0に更新するか- またはpackage.jsonの
packageManagerフィールドを10.10.0に合わせてください.github/ISSUE_TEMPLATE/01_bug-report.yml (1)
57-57: バージョン例の更新を確認しました。2025年版への更新として適切です。プレースホルダーテキストの変更のみで、機能への影響はありません。
Also applies to: 77-77
.dockerignore (1)
13-13: Dockerビルドコンテキストの最適化として適切です。マルチパッケージワークスペースの拡張に伴い、深くネストされた
node_modulesを除外することでビルドコンテキストの肥大化を防ぎます。CONTRIBUTING.md (1)
67-82: ドキュメントの大幅な拡充を確認しました。以下の重要なセクションが追加されています:
- ActivityPub拡張プロパティのガイドライン
- セキュリティアドバイザリのプロセス
- テスト手順の詳細化
- 開発のベストプラクティスと哲学
これらの追加により、コントリビューターへのガイダンスが大幅に改善されています。
Also applies to: 104-119, 155-244, 261-265, 484-487, 601-640
.github/labeler.yml (1)
9-9: フェデレーションテストのラベル付けが改善されました。
packages/backend/test-federation/**/*を追加することで、フェデレーション関連のテスト変更に適切にラベルが付与されるようになります。テストワークフローの拡張と整合性が取れています。.github/misskey/test.yml (1)
19-19: リモートファイルプロキシ設定が追加されました。
proxyRemoteFiles: trueの追加により、テスト環境でのリモートファイル処理動作が変更されます。この設定がテストシナリオに必要であることを確認してください。.github/workflows/check-spdx-license-id.yml (2)
53-64: SPDXライセンスチェックの対象ディレクトリが拡張されました。新しいパッケージ(frontend-shared、frontend-embed、frontend-builder、icons-subsetter)が追加され、これらのディレクトリに対してもSPDXライセンスヘッダーのチェックが行われるようになります。ライセンスコンプライアンスの強化として適切です。
15-15: GitHub Actionsのバージョン更新は適切です。
actions/checkoutのv4.1.1からv4.2.2へのアップデートは、複数の改善とメンテナンスが含まれた正当な更新です。v4.1.2でsparse checkoutの修正、v4.2.0でRef/Commit出力の追加、v4.2.1でrefs/*のコミット参照サポート、v4.2.2で環境変数の処理とテスト coverage拡張が行われています。これらの変更にはセキュリティ改善と機能拡張が含まれており、破壊的な変更はありません。このアップデートは安全に適用できます。locales/index.js (1)
18-18: レビューコメントの懸念事項は検証済みです - 変更は要件を満たしています。検証結果:
- ✓
ca-ES.ymlとtr-TR.ymlの両ファイルが存在し、実際の翻訳内容を含む(各3213行)- ✓ 両ロケールが
locales/index.jsの適切な行(18行目と39行目)に登録されている- ✓ CONTRIBUTING.md で確認された70%の翻訳進捗要件は、Crowdinプロセスの事前段階で実行されている
- ✓ ファイルサイズと内容は他のロケールファイルと一致し、プレースホルダーではなく実質的な翻訳が完了している
Crowdinの運用ガイドラインに従い、70%閾値を超える翻訳の進捗がある場合にのみPRが提出されるため、これらのロケールの追加は適切に処理されています。
.github/dependabot.yml (1)
12-12: Dependabotの無効化は意図的な移行であり、問題はありません。検証により、このコミット(d893fbc5af "chore: Configure Renovate (misskey-dev#15468)" 2025年2月14日)で
open-pull-requests-limit: 0への変更は、DependabotからRenovateへの意図的な移行の一部であることが確認されました。同時に
renovate.json5が追加され、以下の設定で依存関係更新を管理しています:
- OSV脆弱性アラートが有効化
- 依存関係ダッシュボード承認が必須
- セキュリティパッチは引き続き適切に処理される
セキュリティパッチの適用遅延についての懸念は妥当ではなく、この変更は正常です。
.vscode/settings.json (1)
10-14: LGTM!モノレポ構造に適した改善です。Jest仮想フォルダの設定により、backend、e2e、misskey-jsの各テストスイートが適切に分離され、VSCode上での実行が容易になります。
cypress/support/commands.ts (2)
51-51: 管理者作成時のsetupPassword追加を確認しました。管理者アカウント作成時に
setupPasswordを条件付きで含める変更は適切です。初期セットアップパスワードの要件に対応しています。
58-64: 認証フローの実装を確認しました。
/api/signin-flowエンドポイントは、packages/backend/src/server/api/ApiServerService.tsに正しく実装されており、複数のテストで正常に使用されています。UIフローの明示的な可視性チェックの追加も適切です。変更内容は問題ありません。.github/workflows/get-api-diff.yml (1)
28-38: GitHub Actionsの更新とNode.jsバージョン管理の改善。以下の変更は適切です:
- アクションバージョンの更新(checkout v4.2.2, setup-node v4.4.0)
- pnpmセットアップの明示的な分離
.node-versionファイルを使用したNode.jsバージョンの一元管理これにより、CI/CDパイプラインの保守性が向上します。
.github/workflows/report-api-diff.yml (1)
79-89: 差分サイズに基づく条件付き出力は良い改善です。空の差分の場合に「差分はありません。」と表示し、差分がある場合のみ詳細を展開可能な形式で表示する実装は、PRコメントの可読性を向上させます。
.github/workflows/api-misskey-js.yml (1)
19-28: GitHub Actionsの標準化された更新。他のワークフローファイルと一貫した方法で、アクションバージョンが更新され、pnpmセットアップが明示化されています。
README.md (1)
6-19: リンクとバッジのコメントアウトの理由を確認してください。複数の重要なリンク(インスタンス検索、インストールガイドなど)とバッジがMarkdownコメントに変換されています。これらはユーザーにとって有用な情報である可能性があります。
以下を確認してください:
- これは一時的な措置ですか?
- これらのリンクが無効または準備中であるためですか?
- 将来的に復元する予定はありますか?
リンクをコメントアウトする理由が明確でない場合、ユーザーにとって有用な情報が失われる可能性があります。
cypress/e2e/basic.cy.ts (4)
26-41: 管理者セットアップフローの更新。初期パスワードの入力とsetup wizard完了の待機処理が追加され、テストの信頼性が向上しています。
update-metaのinterceptと待機により、セットアップが完全に完了してから次のステップに進むことが保証されます。
81-82: 招待コード入力の必須化に対応。サインアップフローに招待コード入力が追加されています。これにより、サインアップボタンは招待コード入力後にのみ有効化されます。この変更は適切です。
133-143: signin-flowへの移行とテストの安定性向上。
/api/signin-flowエンドポイントへの更新と、明示的な可視性チェック、enter キーナビゲーションのテストが追加されています。これらの変更により、テストの信頼性とカバレッジが向上します。
246-246: タイムアウトの調整は適切です。投稿の表示待機時間を15000msに増加させることで、テストの安定性が向上します。
.github/workflows/check-misskey-js-autogen.yml (3)
24-24: セキュリティの向上:認証情報の永続化を無効化。
persist-credentials: falseの追加により、チェックアウト後に認証情報が保持されなくなり、セキュリティが向上します。これはpull_request_targetを使用する際のベストプラクティスです。Also applies to: 72-72
61-61: より正確なセーフティコメント。"no user codes are executed"という表現は、このジョブのセキュリティ特性をより正確に記述しています。
137-139: CI強制力の向上:変更検出時にワークフローを失敗させる。misskey-jsの型定義に差分がある場合にワークフローを失敗させることで、開発者が型定義を再生成することを強制できます。これはコード品質の維持に役立つ良い改善です。
.gitignore (2)
68-72: Viteの一時ファイル無視ルール。Viteの設定ファイル生成タイムスタンプ(vite.config.js.timestamp-*など)を無視する追加は適切です。ビルド時の一時アーティファクトを追跡対象外にすることは良い実践です。
75-79: Blenderバックアップ拡張機能の追加。.blend3、.blend4、.blend5ファイルの追加は既存の.blend1、.blend2パターンと一貫性があり、Blenderの最新バージョンのバックアップファイルに対応します。
.github/workflows/on-release-created.yml (2)
35-35: NPMパッケージ公開コマンド。
--provenanceフラグの使用は、パッケージの出所を追跡可能にするNPMの新機能で、セキュリティと透明性の向上に貢献します。--no-git-checksフラグが設定されている点は確認してください。
22-30: node-version ファイルベースの Node.js セットアップ確認完了
.node-versionファイルは正常に存在し、Node.js バージョン22.16.0が指定されています。マトリックス戦略からファイルベースの管理への移行により、ワークフロー構成が簡素化され、環境間での Node.js バージョンの一貫性が確保されます。セットアップは適切に構成されています。.github/workflows/test-misskey-js.yml (2)
25-34: ワークフロー設定の最新化。チェックアウトアクション、pnpmセットアップ、Node.jsセットアップが最新バージョンに更新され、node-version-fileベースのアプローチが採用されています。一貫性のある改善です。
51-54: v5互換性は確認済み。トークンパラメータの互換性に問題なし。Codecov action v5では従来の
tokenパラメータが引き続きサポートされており、現在のコード(token: ${{ secrets.CODECOV_TOKEN }})は互換性があります。また、パラメータ名も既にfiles(v5対応)が使用されているため、設定に問題はありません。v5の新機能(OIDC、トークン不要化)は組織設定で有効化した場合に利用可能ですが、従来のトークンベース認証も引き続き機能します。.github/workflows/validate-api-json.yml (1)
30-40: API検証ワークフロー。ワークフロー名をより明確な「api.json validation」に変更し、RedoclyをインストールしてAPI仕様の検証を行っています。設定コピー、ビルド、API JSON生成、検証の一連のステップは論理的で適切です。
Dockerfile (2)
21-28: マルチパッケージワークスペース構造は正しく構成されています。検証により、Dockerfileが参照しているすべてのパッケージ(frontend-shared、frontend-embed、frontend-builder、icons-subsetter)が存在し、各ディレクトリに適切にpackage.jsonが配置されていることが確認されました。
36-36: 検証完了:packageManagerフィールドが正しく設定されていますpackage.jsonの確認結果、
"packageManager": "pnpm@10.14.0"フィールドが正しく設定されていることが確認されました。Dockerfileの動的パッケージマネージャーブートストラップロジック(36行目、67行目、90行目)は期待通りに動作します。chart/files/default.yml (2)
127-133: redisForReactionsセクションは適切にサポートされています。バックエンドアプリケーションは
redisForReactions設定を完全にサポートしており、GlobalModule、ReactionsBufferingService、HealthServerServiceなど複数の箇所で使用されています。設定スキーマも定義済みで、DI システムに適切に統合されています。変更は正しい実装です。
175-182: sentryForFrontendの実装確認完了 — すべてのオプションが正しく実装されています。検証結果:chart/files/default.ymlで定義されたsentryForFrontendの設定は、packages/frontend/src/boot/common.ts(lines 331-362)で以下のように正しく実装されています:
- vueIntegration:line 336-337で条件付きで初期化
- browserTracingIntegration:line 339-340で初期化、tracePropagationTargetsをサポート
- replayIntegration:line 342-343で初期化、リプレイサンプルレート設定をサポート
すべてのオプションはinstance.sentryForFrontendから取得され、Sentry.init()に正しく渡されています(line 362)。
.github/workflows/test-production.yml (1)
32-35: 本番環境ビルド設定は正常です。検証結果:
.github/misskey/test.ymlが存在することを確認しました ✓.config/ディレクトリが存在することを確認しました ✓- ワークフローのステップ順序は正しく、設定ファイルのコピーはビルド前に実行されます ✓
.config/default.ymlへのコピー及びビルドステップは適切に設定されています。locales/el-GR.yml (1)
289-293: ロケール文字列は他の言語ファイルに既に存在していますが、アプリケーションコード内では使用されていません。検証結果:
postForm、_chat、searchScopeLocal、_watermarkEditorなどのキーは en-US.yml と ja-JP.yml に既に定義済みです- el-GR.yml はこれらの既存キーに対応するギリシャ語翻訳を追加しており、多言語ローカライゼーションとしての一貫性は保たれています
- ただし、これらすべてのロケールキーはアプリケーションコード(TypeScript/Vue/TSX)内に0件の使用がありません
このことは、これらの翻訳文字列が実装待ちの機能用か、または未使用のデッドコードの可能性を示唆しています。機能実装の進捗状況を確認し、これらのキーが実際に使用される予定があるかを確認してください。
locales/generateDTS.js (1)
76-103: ParameterizedString への移行は妥当(既存互換も維持)
T extends string = stringにより既存ParameterizedStringの参照も問題なく動作します。ILocaleの index シグネチャで型引数なし参照でも既定型が補われます。OK。ローカルで
tsc -d相当の型生成が崩れていないかを確認お願いします。Also applies to: 104-134
.github/workflows/test-frontend.yml (1)
31-41: Node/pnpm セットアップは適切です(v4 系への更新)
.node-version参照・pnpm キャッシュも適切。追加の懸念なし。Also applies to: 79-95
locales/ru-RU.yml (1)
1117-1121: 通知位置のラベル(UI 一貫性)通知位置は UI 設定の他項と表記を統一(例: 「Слева вверху/Справа сверху/…」は良い選択。英語混在がないか最終確認を)。
locales/es-ES.yml (2)
594-594: 表記の細部調整(スペース)括弧前にスペースを追加してください。
-renoteDetails: "Detalles(Renota)" +renoteDetails: "Detalles (Renota)"Likely an incorrect or invalid review comment.
799-799: 文法修正:再起動の説明「la aplicar」は不自然です。サーバー再起動が必要である旨を明確に。
-needToRestartServerToApply: "Se requiere un reinicio para la aplicar los cambios" +needToRestartServerToApply: "Se requiere reiniciar el servidor para aplicar los cambios"Likely an incorrect or invalid review comment.
locales/ko-GS.yml (1)
465-465: プレースホルダ {x} の整合性は確認済みすべてのロケール(30以上)で
signinWithは{x}を一貫して使用しており、{n}などの不一致は検出されませんでした。ko-GS.yml のsigninWith: "{x} 서 로그인"は他のすべてのロケールと同じ形式で正しく実装されています。実装の標準化が確認されたため、このレビュー指摘は無効です。locales/pt-PT.yml (1)
1103-1105: 別概念です。統一の必要はありません。コード全体を検証した結果、この2つの設定キーは異なる機能を担当する別の概念であることが確認されました:
- enableChartsForFederatedInstances: インスタンスのチャート生成を制御(instanceChart.*メソッドで使用)
- enableStatsForFederatedInstances: インスタンスの統計情報の取得・登録を制御(federatedInstanceService.fetchOrRegister()で使用)
両者は管理画面(performance.vue)でも独立した設定項目として別々に実装されており、各言語ロケールファイルでも別々に翻訳されています。pt-PT.ymlの追加は正確です。
locales/ja-KS.yml (3)
1-20: 新規追加の基本設定キーの翻訳品質を確認新たに追加された初期設定関連のキー(
initialPasswordForSetup、initialPasswordIsIncorrect、initialPasswordForSetupDescription)は、関西弁で適切に翻訳されています。ただし、行14の説明文の長さと詳細度が他の同級レベルのキーと比較して大幅に異なる点に注意が必要です。
1277-1372: _chatセクション:構造とキーの完全性を確認新規追加の
_chatセクション(行1277-1372)は適切に構造化されており、チャット機能に関連する翻訳が完備されています。ただし、以下の点に留意してください:
individualChat_descriptionとroomChat_descriptionは詳細な説明文を含みており、他のキーとの説明の詳細度に一貫性があります- ネストされたキー
_chatAllowedUsersのサブキー(followers、following、mutual、none)が正しく関西弁化されています- 対応する仏語版(fr-FR.yml)でも同じ構造が存在することを確認済みです
2710-2860: _customEmojisManager内のグリッド関連のキー記述に注意行2846-2862の
_customEmojisManager内の_gridCommonセクションは、複雑な管理機能に関する翻訳を含んでいます。特に以下の点が重要です:
- 技術的用語("コピー"、"削除"、"検索")が関西弁に統一されていない箇所がある
- 行2851の
deleteSelectionRangesで「選択範囲の値をクリア」という表現が、他の削除操作と一貫性を欠く可能性がありますこの領域は複雑であり、実装との整合性確認を推奨します。
locales/fr-FR.yml (4)
11-14: initialPasswordForSetupキーの仏語翻訳の品質確認フランス語版の初期設定キー(行11-14)は適切に翻訳されています。日本語版(ja-KS.yml)との整合性も確認できます。
- 行11: "Mot de passe initial pour la configuration" - 適切
- 行12-14: 長めの説明文ですが、設定内容を正確に伝えており、品質に問題ありません
1277-1290: _chatおよび_abuseUserReportセクション:仏語翻訳の完全性フランス語版の新規セクション(行1277-1290)は正しく構造化されており、仏語の翻訳も適切です:
_chatセクション内のキーが日本語版と対応している_abuseUserReportセクションの「forward」「resolve」などのキーが仏語で明確に翻訳されている
2355-2383: _embedCodeGenおよび関連セクション:新機能翻訳の確認行2355-2383の
_embedCodeGenセクションおよび周辺の新規追加キーについて、以下を確認しました:
- 行2356-2357: "Personnaliser le code d'intégration" と "Générer le code d'intégration" - 正確な翻訳
- 行2365-2374の
_watermarkEditorセクション: 画像編集機能に関する翻訳が完備されているただし、技術的な詳細が必要な場合は、実装チームとの確認を推奨します。
1-10: 基本的なYAML構文と言語設定の確認両ファイルの基本的な構造は正しく、YAML形式も適切に保たれています:
- ja-KS.yml:
_lang_: "日本語 (関西弁)"- 言語識別が正確- fr-FR.yml:
_lang_: "Français"- 言語識別が正確- キー値のエスケープとフォーマットが一貫しています
locales/id-ID.yml (3)
1112-1113: 【OK】“Diarsipkan”の語調は他と一致しています。
1123-1124: 【OK】確認ダイアログの表現は自然です。
1476-1477: 【OK】エラーメッセージの文調は他と整合しています。locales/en-US.yml (2)
436-436: 【OK】チャネルのセンシティブ除外は明確です。
589-598: 【ラベル一貫性】“New Note”だけタイトルケース。他は文頭のみ大文字です。どちらかに統一をご検討ください。現在のUIガイドラインに沿うか確認のうえ、必要であれば "New note" へ揃えてください。
locales/ja-JP.yml (1)
13-15: 【ブランド表記の一貫性を要確認】「初期設定開始用パスワード」の説明内で「Misskey」と「Type4ny」が混在しています。インストール形態により意図的であれば問題ありませんが、利用者向けドキュメントとしては表記の基準(例: フォーク先では基本「Type4ny」、上流手順への参照時のみ「Misskey」)を統一してください。文面ガイドラインがあればそれに合わせて調整をお願いします。
.config/example.yml (4)
190-198: redisForReactions セクションは適切に構成されています。新しい Redis 設定ブロックはパターンに従い、既存の redisForPubsub、redisForJobQueue、redisForTimelines セクションと一貫性があります。
200-217: fulltextSearch 設定は明確で良好です。
provider: sqlLikeをデフォルトとし、3つのオプション(sqlLike、sqlPgroonga、meilisearch)を詳細なコメントで文書化しています。ユーザーはそれぞれのトレードオフを理解した上で選択できます。
281-285: Sentry フロントエンド統合の拡張は適切です。vueIntegration、browserTracingIntegration、replayIntegration の追加により、フロントエンド監視機能が強化されます。すべてコメントアウトされており、オプション機能として適切に統合されています。
362-370: ログ設定セクションは整理され、デフォルト値が適切です。enableQueryParamLogging と disableQueryTruncation の両オプションがデフォルトで
falseに設定されており、セキュリティとパフォーマンスのバランスが取れています。.config/docker_example.yml (4)
109-115: redisForReactions セクション:example.yml との一貫性が保たれています。Docker 環境に適した
redisホスト名を使用しており、example.yml の対応セクションと構成が一致しています。
117-134: fulltextSearch 設定:example.yml との一貫性が確認されました。プロバイダーのドキュメントと設定オプションが both ファイル間で一致しており、保守性が良好です。
180-184: Sentry フロントエンド統合の拡張:example.yml との一貫性があります。新しい統合オプションが同じ方式で適用されており、両設定テンプレート間の同期が保たれています。
240-248: ログ設定セクション:example.yml と同じデフォルト値が使用されています。Docker と非 Docker 構成の両方で一貫した設定オプションが提供されています。
.github/workflows/lint.yml (6)
39-39: GitHub Actions 版バージョンが適切に更新されています。checkout v4 は継続的なセキュリティ更新とメジャー変更への対応が提供されます。v4.1.1 → v4.2.2 への更新は安定した日付範囲内での更新です。
Also applies to: 72-72, 102-102
44-44: pnpm/action-setup と setup-node のバージョン更新は安全です。setup-node の更新時は runner バージョン v2.327.1 以上が必要となる場合がありますが、v4.4.0 への更新は標準的なランナーで動作します。
Also applies to: 77-77, 107-107
43-44: 「Setup pnpm」という明示的なステップ名の追加は可読性を向上させます。ワークフロー内の各ステップが明確に識別でき、デバッグやメンテナンスが容易になります。
Also applies to: 76-77, 106-107
60-67: Lint ジョブの matrix 拡張と eslint キャッシュ戦略の改善は適切です。新しいフロントエンドワークスペース(frontend-shared、frontend-builder、frontend-embed、icons-subsetter、misskey-bubble-game、misskey-reversi)が linting 対象に追加され、包括的なコード品質チェックが実現されます。ワークスペース単位のキャッシュ分離により、キャッシュ効率が向上します。
Also applies to: 68-70
84-89: eslint キャッシュの設定が改善されています。
cache-strategy: contentの使用とワークスペース別キャッシュパスにより、キャッシュの有効性が高まります。
99-99: typecheck ジョブに sw ワークスペースが追加されました。条件付きビルドロジック(line 114)が
backendとswの両方を含めるよう適切に更新されており、サービスワーカーの型チェック要件に対応しています。ただし、以下を確認してください:
swワークスペースがpackage.jsonにtypecheckスクリプトを持つこと- 条件付きビルド(misskey-js、misskey-reversi)がこの変更の影響を受けないこと
Also applies to: 114-114
| # ┌────────────────────────┐ | ||
| #───┘ Initial Setup Password └───────────────────────────────────────────────────── | ||
|
|
||
| # Password to initiate setting up admin account. | ||
| # It will not be used after the initial setup is complete. | ||
| # | ||
| # Be sure to change this when you set up Misskey via the Internet. | ||
| # | ||
| # The provider of the service who sets up Misskey on behalf of the customer should | ||
| # set this value to something unique when generating the Misskey config file, | ||
| # and provide it to the customer. | ||
| # | ||
| # setupPassword: example_password_please_change_this_or_you_will_get_hacked |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
設定テンプレートにおけるプロジェクト名の不整合を修正してください。
setupPassword セクションのコメント(68行目と71行目)では「Misskey」と記載されていますが、このファイルは Type4ny 向けの設定テンプレートです。ユーザーの混乱を避けるため、コメント内の「Misskey」を「Type4ny」に統一してください。
~#
~# Be sure to change this when you set up Misskey via the Internet.
+# Be sure to change this when you set up Type4ny via the Internet.
~#
~# The provider of the service who sets up Misskey on behalf of the customer should
+# The provider of the service who sets up Type4ny on behalf of the customer shouldCommittable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
.config/example.yml around lines 62 to 74: the setupPassword comment refers to
"Misskey" on lines 68 and 71 but this file is a Type4ny template; update those
occurrences to "Type4ny" (preserve surrounding comment text and formatting, keep
the same casing "Type4ny"), and scan the nearby comments in this block to ensure
no remaining references to "Misskey" remain.
| "features": { | ||
| "ghcr.io/devcontainers/features/node:1": { | ||
| "version": "20.16.0" | ||
| "version": "22.15.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Node.jsバージョンの不一致を解消してください。
devcontainerでは22.15.0を指定していますが、.node-versionでは22.16.0が指定されています。開発環境とCI環境でNode.jsのバージョンが異なると、予期しない動作やバグの原因となる可能性があります。
バージョンを統一することをお勧めします。
🤖 Prompt for AI Agents
In .devcontainer/devcontainer.json around line 8 the Node.js version is
"22.15.0" but your repository's .node-version contains "22.16.0"; update one of
these files so both specify the same Node.js version (pick the desired
version—e.g., change .devcontainer/devcontainer.json to "22.16.0" or change
.node-version to "22.15.0") and commit the change so development container and
CI/local tooling use an identical Node.js version.
| HEADER="このPRによるapi.jsonの差分" | ||
| FOOTER="[Get diff files from Workflow Page](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})" | ||
| DIFF_BYTES="$(stat ./api.json.diff -c '%s' | tr -d '\n')" | ||
| echo "$HEADER" > ./output.md | ||
| if (( "$DIFF_BYTES" <= 1 )); then | ||
| echo '差分はありません。' >> ./output.md | ||
| else | ||
| echo '<details>' >> ./output.md | ||
| echo '<summary>差分はこちら</summary>' >> ./output.md | ||
| echo >> ./output.md | ||
| echo '```diff' >> ./output.md | ||
| cat ./api.json.diff >> ./output.md | ||
| echo '```' >> ./output.md | ||
| echo '</details>' >> .output.md | ||
| fi | ||
| echo "$FOOTER" >> ./output.md |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
重大なバグ:ファイルパスのタイポ。
行88で.output.mdにリダイレクトしていますが、他の行では./output.mdを使用しています。このタイポにより、差分がある場合に出力が誤ったファイルに書き込まれ、PRコメントが正しく生成されません。
以下の修正を適用してください:
- echo '</details>' >> .output.md
+ echo '</details>' >> ./output.md📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| HEADER="このPRによるapi.jsonの差分" | |
| FOOTER="[Get diff files from Workflow Page](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})" | |
| DIFF_BYTES="$(stat ./api.json.diff -c '%s' | tr -d '\n')" | |
| echo "$HEADER" > ./output.md | |
| if (( "$DIFF_BYTES" <= 1 )); then | |
| echo '差分はありません。' >> ./output.md | |
| else | |
| echo '<details>' >> ./output.md | |
| echo '<summary>差分はこちら</summary>' >> ./output.md | |
| echo >> ./output.md | |
| echo '```diff' >> ./output.md | |
| cat ./api.json.diff >> ./output.md | |
| echo '```' >> ./output.md | |
| echo '</details>' >> .output.md | |
| fi | |
| echo "$FOOTER" >> ./output.md | |
| HEADER="このPRによるapi.jsonの差分" | |
| FOOTER="[Get diff files from Workflow Page](https://github.com/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})" | |
| DIFF_BYTES="$(stat ./api.json.diff -c '%s' | tr -d '\n')" | |
| echo "$HEADER" > ./output.md | |
| if (( "$DIFF_BYTES" <= 1 )); then | |
| echo '差分はありません。' >> ./output.md | |
| else | |
| echo '<details>' >> ./output.md | |
| echo '<summary>差分はこちら</summary>' >> ./output.md | |
| echo >> ./output.md | |
| echo ' |
🤖 Prompt for AI Agents
.github/workflows/report-api-diff.yml around lines 73 to 91: there is a typo
where the script writes the closing details tag to ".output.md" (line ~88)
instead of the intended "./output.md", causing the output to be written to the
wrong file when diffs exist; change that redirect from ".output.md" to
"./output.md" so all writes consistently target the same file, verify the file
variable/path usage is consistent across the block, and run a quick workflow
lint or dry-run to confirm the PR comment output is generated into ./output.md.
| # Chromatic is not likely to be available for fork repositories, so we disable for fork repositories. | ||
| if: github.repository == 'misskey-dev/misskey' | ||
| runs-on: ubuntu-latest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この条件だと本リポで Storybook が実行されません
if: github.repository == 'misskey-dev/misskey' は上流専用です。Type4ny リポでは常に skip になります。Secrets の有無や所有者で制御する条件へ変更してください。例えば:
- if: github.repository == 'misskey-dev/misskey'
+ if: >
+ (github.event_name != 'pull_request_target') ||
+ (github.repository_owner == github.event.pull_request.head.repo.owner.login)
+ && (secrets.CHROMATIC_PROJECT_TOKEN != '')
.github/workflows/storybook.yml
Outdated
| if: github.event_name == 'pull_request_target' | ||
| with: | ||
| fetch-depth: 0 | ||
| submodules: true | ||
| ref: "refs/pull/${{ github.event.number }}/merge" | ||
| - name: Checkout actual HEAD | ||
| if: github.event_name == 'pull_request_target' | ||
| id: rev | ||
| run: | | ||
| echo "base=$(git rev-list --parents -n1 HEAD | cut -d" " -f2)" >> $GITHUB_OUTPUT | ||
| git checkout $(git rev-list --parents -n1 HEAD | cut -d" " -f3) | ||
| - name: Install pnpm | ||
| uses: pnpm/action-setup@v4 | ||
| - name: Use Node.js 20.x | ||
| uses: actions/setup-node@v4.0.3 | ||
| run: git checkout "$(git rev-list --parents -n1 HEAD | cut -d" " -f3)" | ||
| - name: Setup pnpm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
セキュリティ重大問題: pull_request_target で PR HEAD をチェックアウトしない
pull_request_target はベース側のシークレットで実行されます。直後の「Checkout actual HEAD」でフォークのコミットを checkout すると、シークレット露出リスクがあります。refs/pull/<n>/merge のまま処理し、HEAD への切替は削除してください。差分計算は base/head SHA を用いてください。
- - name: Checkout actual HEAD
- if: github.event_name == 'pull_request_target'
- run: git checkout "$(git rev-list --parents -n1 HEAD | cut -d" " -f3)"| moderationNoteDescription: "Вы можете заполнять заметки, которые будут доступны только модераторам." | ||
| addModerationNote: "" | ||
| moderationLogs: "Журнал модерации" | ||
| nUsersMentioned: "Упомянуло пользователей: {n}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
未翻訳/空文字の修正(モデレーション関連)
- 459: 「Примечания модератора」は自然ですが 460 の説明は OK。
- 461:
addModerationNote: ""が空です。UI が空表示になるため文言を追加してください(例: 「Добавить примечание модератора」)。
🤖 Prompt for AI Agents
In locales/ru-RU.yml around lines 459 to 462 the key addModerationNote is an
empty string causing the UI to render blank; replace the empty value with an
appropriate Russian label such as "Добавить примечание модератора" (or another
concise translation) so the moderation add-note button/label displays text
consistently with the surrounding keys.
| userSaysSomethingSensitive: "Сообщение, содержит конфиденциальные файлы от {name}" | ||
| enableHorizontalSwipe: "Смахните в сторону, чтобы сменить вкладки" | ||
| surrender: "Этот пост не может быть отменен." | ||
| gameRetry: "Повторить попытку" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
用語誤訳(ゲームの「降参」)
surrender: "Этот пост не может быть отменен." は「投稿を取り消せない」に読めます。ゲーム文脈なら「Сдаться」が適切です。
🤖 Prompt for AI Agents
In locales/ru-RU.yml around line 1243, the translation for the game action
"surrender" is incorrect ("Этот пост не может быть отменен." reads like "this
post cannot be undone"); replace that value with the proper game-context verb
(e.g., "Сдаться") so the key conveys "to surrender" in Russian, preserving YAML
quoting/indentation and running any locale validation after change.
| _chat: | ||
| invitations: "Pozvať" | ||
| noHistory: "Žiadna história" | ||
| members: "Členovia" | ||
| home: "Domov" | ||
| send: "Poslať" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_chat.invitations は名詞複数に
動詞「Pozvať」ではなく「Pozvánky」が自然です。
_chat:
- invitations: "Pozvať"
+ invitations: "Pozvánky"
noHistory: "Žiadna história"
members: "Členovia"
home: "Domov"
send: "Poslať"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| _chat: | |
| invitations: "Pozvať" | |
| noHistory: "Žiadna história" | |
| members: "Členovia" | |
| home: "Domov" | |
| send: "Poslať" | |
| _chat: | |
| invitations: "Pozvánky" | |
| noHistory: "Žiadna história" | |
| members: "Členovia" | |
| home: "Domov" | |
| send: "Poslať" |
🤖 Prompt for AI Agents
In locales/sk-SK.yml around lines 918 to 923, the key _chat.invitations is using
the verb "Pozvať" but should be the plural noun "Pozvánky"; update the value for
invitations from "Pozvať" to "Pozvánky" (ensure YAML quoting/encoding remains
consistent with surrounding entries).
| pollEnded: "Hlasovanie skončilo" | ||
| receiveFollowRequest: "Doručené žiadosti o sledovanie" | ||
| followRequestAccepted: "Schválené žiadosti o sledovanie" | ||
| login: "Prihlásiť sa" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
通知タイプ“login”は名詞形に
「Prihlásiť sa」→「Prihlásenie」。
- login: "Prihlásiť sa"
+ login: "Prihlásenie"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| login: "Prihlásiť sa" | |
| login: "Prihlásenie" |
🤖 Prompt for AI Agents
In locales/sk-SK.yml around line 1404, the translation for the key "login" is
currently the verb form "Prihlásiť sa" but should be the noun form; update the
value to "Prihlásenie" (i.e., change login: "Prihlásiť sa" to login:
"Prihlásenie").
| _fxProps: | ||
| scale: "Veľkosť" | ||
| size: "Veľkosť" | ||
| color: "Farba" | ||
| opacity: "Priehľadnosť" | ||
| lightness: "Zosvetliť" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
画像効果プロパティの用語改善(scale/size/lightness)
- scale/size が同訳で区別不可。scale は「Mierka」、size は「Veľkosť」。
- lightness は動詞「Zosvetliť」→名詞「Svetlosť」。
- scale: "Veľkosť"
+ scale: "Mierka"
size: "Veľkosť"
color: "Farba"
opacity: "Priehľadnosť"
- lightness: "Zosvetliť"
+ lightness: "Svetlosť"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| _fxProps: | |
| scale: "Veľkosť" | |
| size: "Veľkosť" | |
| color: "Farba" | |
| opacity: "Priehľadnosť" | |
| lightness: "Zosvetliť" | |
| _fxProps: | |
| scale: "Mierka" | |
| size: "Veľkosť" | |
| color: "Farba" | |
| opacity: "Priehľadnosť" | |
| lightness: "Svetlosť" |
🤖 Prompt for AI Agents
In locales/sk-SK.yml around lines 1463 to 1468, the Slovak translations make
scale and size identical and use a verb for lightness; update the entries so
scale reads "Mierka", size remains "Veľkosť", and lightness is the noun
"Svetlosť" (replace "Zosvetliť" with "Svetlosť") to correctly distinguish terms
and grammatical form.
What
Why
Additional info (optional)
Checklist
Summary by CodeRabbit
リリースノート
新機能
改善
チョア