From 92bec1dfb7179ca3ed3932c407ed08cea931fb29 Mon Sep 17 00:00:00 2001 From: HotoRas Date: Sat, 16 Nov 2024 13:43:27 +0900 Subject: [PATCH] Update to 2024.11.0+alpha.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed commit of the following: commit 459449864c1cc3bc28d2d38cb686d85e967fe20b Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat Nov 16 10:16:11 2024 +0900 🎨 commit eef0c895bc15b7c149a755ab15b620852b5e2332 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 15 19:48:31 2024 +0900 use execa 8.0.1 commit d9d92bcfbf82b7094a1b9b586ac811fc07e35468 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 15 19:40:12 2024 +0900 Revert "use nodemon 3.0.2" This reverts commit ce1f84e5a3c4c906ca611a4c4aa558f5012394d9. commit ce1f84e5a3c4c906ca611a4c4aa558f5012394d9 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 15 19:33:50 2024 +0900 use nodemon 3.0.2 commit cf7df050239474d2bdb4c497b7f75bbe493a51dd Author: github-actions[bot] Date: Fri Nov 15 09:06:13 2024 +0000 Bump version to 2024.11.0-alpha.1 commit ee2c017f485234a987f7c630704a7980fe1b41a0 Merge: d0cdc0b7a1 ac3bf57644 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 15 18:00:22 2024 +0900 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop commit d0cdc0b7a1524c7b6f464078c30d7f7fe7a222a6 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 15 18:00:20 2024 +0900 chore(frontend): tweak animation style commit ac3bf57644c520c36ac7fd91784ef6501f6d010e Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri Nov 15 17:32:28 2024 +0900 chore(deps): bump codecov/codecov-action from 4 to 5 (#14961) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4...v5) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit e850462b826b79acd0b0c9fe2629f462fca3ecec Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 15 17:31:38 2024 +0900 New Crowdin updates (#14859) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Vietnamese) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (German) * New translations ja-jp.yml (German) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Swedish) * New translations ja-jp.yml (Swedish) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Simplified) commit c0d168260482caa974e3fc9e084b121fc32e8ec4 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri Nov 15 17:30:54 2024 +0900 feat: 送信したフォローリクエストを確認できるように (#14856) * FEAT: Allow users to view pending follow requests they sent This commit implements the `following/requests/sent` interface firstly implemented on Firefish, and provides a UI interface to view the pending follow requests users sent. * ux: should not show follow requests tab when have no pending sent follow req * fix default followreq tab * fix default followreq tab * restore missing hasPendingReceivedFollowRequest in navbar * refactor * use tabler icons * tweak design * Revert "ux: should not show follow requests tab when have no pending sent follow req" This reverts commit e580b92c37f27c2849c6d27e22ca4c47086081bb. * Update Changelog * Update Changelog * change tab titles --------- Co-authored-by: Lhc_fl Co-authored-by: Hazelnoot commit e26e24b61050c5c5ad2f6f4c4d63f3abeb33bfb0 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 15 17:22:00 2024 +0900 update deps (#14950) * update deps * wip * Revert "wip" This reverts commit 393de249fe248ae181221266e0b7828a3ac53152. * wip * wip * wip * wip commit 7f8c8f62b1fab2b7f7ededeb7cb2dbc387895d17 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri Nov 15 09:33:09 2024 +0900 fix(frontend): スマホで表示した時にipv6だとはみ出てしまうのを修正 (#14960) * fix(frontend): スマホで表示した時にipv6だとはみ出てしまうのを修正 (MisskeyIO#815) (cherry picked from commit aec01dd4adda8e975da523c5bea329120e689569) * Update Changelog --------- Co-authored-by: sleep-moe commit 4d541015109b0b046595634f81e4e54754d4a288 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed Nov 13 19:43:36 2024 +0900 update node to 22.11.0 (#14869) * wip * Update CHANGELOG.md * Update CHANGELOG.md commit 2305788ed9cdc0c61dfeef9249f93f760a9d5f77 Author: shimmar <78616491+shimmar@users.noreply.github.com> Date: Wed Nov 13 11:19:54 2024 +0900 Enhance(frontend): ノート詳細画面にロールのバッジを表示 (#14946) * enhance(frontend): ノートの詳細画面にロールのバッジを表示(#14058) * Update CHANGELOG.md commit a11b77a4158e07c18bcc57f77660cb08c0d950ea Author: 饺子w (Yumechi) <35571479+eternal-flame-AD@users.noreply.github.com> Date: Mon Nov 11 18:51:18 2024 -0600 fix(backend): Webhook Test一致性 (#14863) * fix(backend): Webhook Test一致性 Signed-off-by: eternal-flame-AD * UserWebhookPayload<'followed'> 修正 Signed-off-by: eternal-flame-AD --------- Signed-off-by: eternal-flame-AD commit 1bc4f400c0efc4a9430a7bbb1a7268aff2a6c455 Merge: 458c72c153 6bd3ed2074 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Nov 11 16:35:23 2024 +0900 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop commit 458c72c15372a6ae94416656b155f7c727ab4597 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Nov 11 16:35:13 2024 +0900 Update about-misskey.vue commit 6bd3ed2074b9cfdfc46db0ca5a7a2a7507103519 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun Nov 10 15:10:04 2024 +0900 Update CHANGELOG.md commit 31e5f0bd09175baba8b1cc9e617c83934b423596 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun Nov 10 15:08:58 2024 +0900 fix(frontend): メールアドレス登録有効化時の「完了」ダイアログボックスの表示条件を修正 (#14928) * fix(frontend): メールアドレス登録有効化時の「完了」ダイアログボックスの表示条件を修正 * Update MkSignupDialog.form.vue * fix condition commit e0a83e9c9ecbabcaa017d0b586b7ad56b3b4b6db Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Nov 9 15:57:10 2024 +0900 Update CHANGELOG.md (書き方を揃える) commit 1496700b3754be3a91d0123fc5ca17b6e8845488 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Nov 9 15:51:49 2024 +0900 Update CHANGELOG.md たぶんリリースワークフローはこうしないと認識してくれない commit 00cbf9fe8085afe4190721b80a5bd55d0099c4cf Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat Nov 9 14:09:02 2024 +0900 Update CONTRIBUTING.md commit cf09aa21f0eec86e7ffffee4fcbb610ff0e378a4 Author: github-actions[bot] Date: Sat Nov 9 02:28:02 2024 +0000 Bump version to 2024.11.0-alpha.0 commit 9f7d41eb470db5d350e76c06c0d385d58e7445a7 Author: github-actions[bot] Date: Sat Nov 9 02:25:42 2024 +0000 Bump version to 2024.10.2-alpha.3 commit 4a62051ce7bd369335cf020d0bd39019f2a45212 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Nov 9 10:58:09 2024 +0900 fix(backend): ローカルユーザーへのメンションを含むノートが連合される際に正しいURLに変換されないことがある問題を修正 (#14879) * fix: make sure mentions of local users get rendered correctly during AP delivery (resolves #645) * Update Changelog * indent --------- Co-authored-by: Laura Hausmann Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> commit 3a421837bfc8ea816c3109394a916cb0cac0e8d8 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Nov 9 10:57:04 2024 +0900 refactor(frontend): 動画UIのフルスクリーン周りの調整 (#14877) * refactor(frontend): フルスクリーン周りの調整 (cherry picked from commit 783032caec5853d78d5af3391e29cf364f2282e8) * refactor(frontend): deviceKindの循環参照を除去 (cherry picked from commit 1ca471f57e968a1a6e2259bde4a7c6da1fe0c54e) * fix --------- Co-authored-by: taiyme <53635909+taiyme@users.noreply.github.com> commit a4c5ce1413078c9b98816644bebfcc0a24e94a85 Author: momoirodouhu Date: Sat Nov 9 10:54:44 2024 +0900 enhance(backend) : リモートユーザーの照会をオリジナルにリダイレクトするように (#12892) (#14897) * enhance(backend) : リモートユーザーの照会をオリジナルにリダイレクトするように (#12892) * オリジンリダイレクトのテストをtodoとして追加。 e2eテストにリモートユーザー考慮のテストがなさそうなので。 次のコマンドで動くことは確認済みです。 curl "http://localhost:3000/@foo@bar" -H "accept: application/activity+json" -L * Acctのパースを既存のパーサーでするように修正 * lint commit e75b62f3f5f58e39baf949d0d601c8826f43dba3 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Nov 9 10:53:09 2024 +0900 enhance(frontend): 個別お知らせページではmetaタグを出力するように (#14902) * enhance(frontend): 個別お知らせページではmetaタグを出力するように * Update Changelog commit 5b60ae810b975d4b86a47a00b65b0736e39fe949 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Nov 9 10:52:07 2024 +0900 fix(frontend): 外部URLへのリダイレクトのバリデーションを強化 (#14919) * Fix code scanning alert no. 25: Incomplete URL scheme check (MisskeyIO#799) * Fix code scanning alert no. 26: Incomplete URL scheme check Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * Fix code scanning alert no. 25: Incomplete URL scheme check Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> (cherry picked from commit 7d7552e076c0152a5966e919be0e9a60b3736208) * :v: --------- Co-authored-by: あわわわとーにゅ <17376330+u1-liquid@users.noreply.github.com> commit 98b4717c45a543e31fe5635a8850074afe0d8fe2 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Nov 9 10:51:28 2024 +0900 fix(backend): SQLのサニタイズを強化 (#14920) * Fix code scanning alert no. 28: Incomplete string escaping or encoding (MisskeyIO#800) Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> (cherry picked from commit 443335c662b14f609d6a81a8f3807e95709aebc1) * :v: --------- Co-authored-by: あわわわとーにゅ <17376330+u1-liquid@users.noreply.github.com> commit 8a4ce16e903f5b318e60d3c9f50f66d2054ba39b Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri Nov 8 18:00:55 2024 +0900 Update CONTRIBUTING.md commit 794cb9ffe205b1e2ca838978f80d2d6a35f17f77 Author: 4ster1sk <146138447+4ster1sk@users.noreply.github.com> Date: Thu Nov 7 17:16:51 2024 +0900 fix(backend): followedMessageではなくdescriptionになっていたのを修正 (#14908) commit 0b976064cafcb5a9b2399937d614513f494cca85 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu Nov 7 15:10:38 2024 +0900 Update CHANGELOG.md commit bca690f256721815fb1c918c1f66a2172f4fcf40 Author: 4ster1sk <146138447+4ster1sk@users.noreply.github.com> Date: Thu Nov 7 15:10:10 2024 +0900 fix(backend): フォロワーへのメッセージの絵文字をemojisに含めるように (#14904) commit f1eb17f66c75f09e884a41be821cccef363ecee7 Author: Linca <41134017+Lhcfl@users.noreply.github.com> Date: Wed Nov 6 21:01:58 2024 +0800 chore: little type trick in pizzax.ts (#14891) Make `makeGetterSetter` take the correct type associated with getter and setter commit b1c82213a320dd7c83f8b2e742406646ef18ff1c Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Wed Nov 6 22:01:21 2024 +0900 fix(backend): FTT無効時にユーザーリストタイムラインが使用できない問題を修正 (#14878) * fix: return getfromdb when FanoutTimeline is not enabled * Update Changelog * fix --------- Co-authored-by: Lhc_fl commit a896c39dbfd3bf35c2c264de7a77ac92818e01db Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Wed Nov 6 15:15:28 2024 +0900 fix(frontend): ノート投稿ボタンにホバー時のスタイルが適用されていない (#14887) * fix(frontend): ノート投稿ボタンにホバー時のスタイルが適用されていない (#305) (cherry picked from commit 711ab846a967feeddbe0c908bee4b91646cec321) * Update Changelog --------- Co-authored-by: taiy <53635909+taiyme@users.noreply.github.com> commit 6718a54f6fce29edbe2755c31a119e4468fc56e2 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun Nov 3 08:26:51 2024 +0900 fix(backend): ノートを連合する際にリモートユーザーのacctの大小文字を区別して処理している問題を修正 (#14880) * fix: make sure outgoing remote mentions get resolved correctly if referenced with non-canonical casing (resolves #646) * Update Changelog * Update Changelog * indent --------- Co-authored-by: Laura Hausmann commit d57b8bf2e211cd7e4d5f03f19387a27bdb9cbde9 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun Nov 3 08:23:52 2024 +0900 fix(frontend): withSensitiveフィルタ周りの挙動修正 (#14884) * fix(frontend): withSensitiveフィルタ周りの挙動修正 * Update MkNote.vue commit 224bbd486f8745cd471b77f38570b65be3b87cfc Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu Oct 31 13:50:50 2024 +0900 refactor commit 724dea8136164dcfcd7238888ef93ccab8270fb9 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu Oct 31 13:47:47 2024 +0900 lint commit ceb60d61b05e32fa340269122378ea93efb20517 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu Oct 31 13:47:30 2024 +0900 refactor commit 17d9aca5a7ec6149a8dbf0c1607c81ab188e7015 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu Oct 31 13:46:42 2024 +0900 refactor(frontend): asとanyをすぐなおせる範囲で除去 (#14848) * refactor(frontend): できるだけanyを除去 * refactor * lint * fix * remove unused * Update packages/frontend/src/components/MkReactionsViewer.details.vue * Update packages/frontend/src/components/MkUsersTooltip.vue --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> commit 7fc8a2a7b04d8550abdf55259bde4c857bd462a1 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Wed Oct 30 09:57:54 2024 +0900 fix(frontend): 一部のノート表示で設定にかかわらずセンシティブなファイルを含むノートが最小化される問題を修正 Fix https://github.com/misskey-dev/misskey/pull/14772#discussion_r1821707117 commit a96f09cee352f8ae7cc11c3dd45e0182a5623350 Author: github-actions[bot] Date: Mon Oct 28 12:23:59 2024 +0000 Bump version to 2024.10.2-alpha.2 commit f30d19051fb67f800185da283672ae7f9e8c535e Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 28 21:06:54 2024 +0900 enhance(backend): check_connect.js で全RedisとDBへの接続を確認するように (#14853) * fix race conditions in check_connect.js (cherry picked from commit 524ddb96770690455b82522104a543c5b0b1f3b3) * fix * Update Changelog --------- Co-authored-by: Hazelnoot commit 8eb7749e448d912bdbe2c4eadc35f5d5f1becf61 Author: Tamme Schichler Date: Mon Oct 28 13:06:16 2024 +0100 fix(backend): Accept arrays in ActivityPub `icon` and `image` properties (#14825) This is allowed according to the Activity vocabulary: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-icon The issue is noticeable in combination with Bridgy Fed: https://github.com/snarfed/bridgy-fed/issues/1408 commit 0472d43ee97f1ac0fd13969b2111d67b322a947f Author: Pinapelz Date: Mon Oct 28 05:04:46 2024 -0700 fix: encode RSS uris with escape sequences before fetching (#14826) Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> commit eb701f2ff453f290ee90776a8c149fb0ee7faa10 Merge: 74847bce30 eecfac1dd9 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 28 20:42:23 2024 +0900 Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop commit 74847bce303449124282a748fc50b1c6588288fc Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 28 20:42:14 2024 +0900 enhance: アイコンデコレーション管理画面の改善 commit eecfac1dd933b65bee469a0a103d19f378d3fcef Author: woxtu Date: Mon Oct 28 20:22:07 2024 +0900 Remove undefined styles (#14858) commit e927507886b9478c9f7197cf64ce375cf65a164c Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 28 18:34:18 2024 +0900 :art: commit b1073714ba65e60ff90b448e71415c106eba623b Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 28 12:46:39 2024 +0900 Update about-misskey.vue commit 04b37a13151942c16f13193b00ae18a60b0ea62e Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 28 12:32:17 2024 +0900 enhance(i18n): カタルーニャ語を追加 (#14842) * enhance(i18n): 対応言語の追加 * 翻訳進捗が70%に満たないものを除外 * Update Changelog * 翻訳進捗が70%を超えたら導入の旨を明記 * typo --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> commit 93a03e6b6d1af511c2d52fbc2230d81f94451e19 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 28 11:43:55 2024 +0900 New Crowdin updates (#14767) * New translations ja-jp.yml (Russian) * New translations ja-jp.yml (English) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Thai) * New translations ja-jp.yml (Thai) * New translations ja-jp.yml (Japanese, Kansai) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Japanese, Kansai) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Thai) * New translations ja-jp.yml (Thai) * New translations ja-jp.yml (Thai) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Japanese, Kansai) * New translations ja-jp.yml (Korean (Gyeongsang)) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (English) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (English) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Spanish) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Indonesian) * New translations ja-jp.yml (Indonesian) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Hungarian) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Korean (Gyeongsang)) * New translations ja-jp.yml (English) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Catalan) commit ec4358d1e8c9a59a0702d19182c37d91510b3736 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 28 11:43:05 2024 +0900 fix(misskey-js): WebSocketの型定義をReconnectingWebsocketに依存するように (#14850) * fix(misskey-js): WebSocketの型定義をReconnectingWebsocketに依存するように * Update Changelog * run api extractor * fix * fix commit a6a1e3d733e192504986e6e91b5aca9211c331ce Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Oct 26 22:07:26 2024 +0900 enhance(frontend): Self-XSS防止用のメッセージを追加 (#14839) * enhance(frontend): Self-XSS防止用のメッセージを追加 * Update Changelog * embedにも同様の記述を追加 commit ded6ef207b888c14f425d46a341a35feab76be86 Author: github-actions[bot] Date: Fri Oct 25 13:16:43 2024 +0000 Bump version to 2024.10.2-alpha.1 commit db95b6b0d6988c5caadb2bdd9586525a81ad7fda Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri Oct 25 19:37:01 2024 +0900 :art: https://github.com/misskey-dev/misskey/pull/14828 のデザイン修正 commit eeea4ec00b4ed1aeabee85d2761699765f9b2af9 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri Oct 25 15:09:37 2024 +0900 fix(backend): 招待コード発行可能残り数算出に使用すべきロールポリシーの値が違うのを修正 (#14834) * fix: should use invite limit cycle to calculate invite/limit * Update Changelog * Update changelog --------- Co-authored-by: Lhc_fl commit 07b2c3e5b2facb7e5a3c69dc3d2384531a847c4c Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri Oct 25 15:09:07 2024 +0900 fix(frontend): 管理画面のリンク切れを修正 (#14831) * fix(frontend): 管理画面のリンク切れを修正 * Update Changelog commit 076cc953e2bcd9f7335e2d9799cdf902829816cb Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Fri Oct 25 14:20:33 2024 +0900 enhance(frontend): 外部アプリ認証画面の改良 (#14828) * enhance(frontend): 外部アプリ認証画面の改良 * :art: * lint * Update Changelog * indent * lint * enhance: miauthのリダイレクト先をUI内でも表示するように * :art: * fix * fix commit 15ae1605ec199792cd651073b1c6de480a7eeabe Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Wed Oct 23 14:23:29 2024 +0900 enhance(frontend): 「単なるラッキー」の調整 (#14807) * enhance(frontend): 「単なるラッキー」の調整 * refactor * comment * Update Changelog --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> commit 48d1539f3be895b7aa8ecdd6c581e47a55cc9264 Author: 饺子w (Yumechi) <35571479+eternal-flame-AD@users.noreply.github.com> Date: Tue Oct 22 04:17:56 2024 -0500 Merge commit from fork [ghsa-gq5q-c77c-v236](https://github.com/misskey-dev/misskey/security/advisories/ghsa-gq5q-c77c-v236) Signed-off-by: eternal-flame-AD commit 8b6d321a76877a422b268e77cf930be7d1967213 Author: github-actions[bot] Date: Tue Oct 22 08:45:08 2024 +0000 Bump version to 2024.10.2-alpha.0 commit 952fec5665ce0712a78f3ee68f5c46554426dfb4 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue Oct 22 17:08:53 2024 +0900 feat: 過去のノートを非公開化/フォロワーのみ表示可能にできる機能 (#14814) * wip * Update CHANGELOG.md * wip * wip * wip * Update privacy.vue * wip commit 70b2a8f72e7efc488b8c286e2da8cffa11331eab Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 21 19:59:20 2024 +0900 fix(frontend): /iのレスポンスに含まれないプロパティが消えずに残り続ける問題を修正 commit c4f1ca2fd9cb1c9b6035f4efb3fa9e46f7be9d64 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 21 19:14:02 2024 +0900 fix(frontend): MkSelectでmodelValueが更新されない限り値を更新しないように commit 9d0f7eeb9c20fed9921c806dd007496b1d76e7cc Author: Kisaragi <48310258+KisaragiEffective@users.noreply.github.com> Date: Mon Oct 21 15:12:28 2024 +0900 docs: ActivityPub層の変更を含む場合にやるべきことを明文化 (#14812) commit bc1fce9af6e5a29c660174a16246c95624a68418 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 21 13:22:21 2024 +0900 fix(frontend): デッキのタイムラインカラムでwithSensitiveが利用できない問題を修正 (#14772) * fix(frontend): デッキのタイムラインカラムでwithSensitiveが利用できない問題を修正 * Update Changelog * Update Changelog * Update packages/frontend/src/ui/deck/tl-column.vue commit 5f12bc515d8ff59183ac465a815ee3885d79b8c5 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 21 13:11:11 2024 +0900 Update CHANGELOG.md commit 2f9c04b23ba357088ebb7c261c86387fd535e0ad Author: Yuba Date: Mon Oct 21 12:51:45 2024 +0900 refs#10866 投稿ダイアログでEscキーが押されたときIME入力中ならダイアログは閉じない (#14787) commit 5c79d8db208da1fd7c5bc4900090c3d7b9512196 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 21 12:49:29 2024 +0900 feat: ノートの閲覧にログイン必須にする設定 (#14799) * wip * wip * wip * Update packages/frontend/src/pages/note.vue Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> * wip * Update WebhookTestService.ts * Update privacy.vue * wip * rename * Update locales/ja-JP.yml Co-authored-by: Sayamame-beans <61457993+Sayamame-beans@users.noreply.github.com> * :art: * wip --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: Sayamame-beans <61457993+Sayamame-beans@users.noreply.github.com> commit bc0c53b92b0ceba7617d9d02f54bbf7ccfc933d9 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 21 11:44:57 2024 +0900 fix(frontend): Captcha のエラーハンドリング (#14811) * fix(frontend): Captcha のエラーハンドリングを修正 (MisskeyIO#768) (cherry picked from commit 88912d0f8c63a762fbb1d43e5c1abf4fd9fc05d4) * Update Changelog * typo --------- Co-authored-by: riku6460 <17585784+riku6460@users.noreply.github.com> commit d6caa4d9c4453cf38129197dd4a237711f0085ec Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun Oct 20 17:29:41 2024 +0900 fix(frontend): 通知の範囲指定が必要ない通知設定でも範囲指定がでている問題を修正 (#14798) * fix(frontend): 通知の範囲指定が必要ない通知設定でも範囲指定がでている問題を修正 * Update Changelog --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> commit 041c9caf317f35211bd43dc39664ed033a34c1f2 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun Oct 20 16:38:27 2024 +0900 :art: commit 1d106b3ae81b8fa28bf644622e617262a2889040 Author: tetsuya-ki <64536338+tetsuya-ki@users.noreply.github.com> Date: Sun Oct 20 16:17:16 2024 +0900 Enhance: ドライブでソートができるように (#14801) * Enhance: ドライブでソートができるように * Update CHANGELOG.md commit 58419e162192107450174593efd1008203fb9489 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Oct 19 21:45:25 2024 +0900 refactor(frontend): ページ内でdocument.titleを直接操作させない, タイポ修正 など (taiyme#288) (#14778) Co-authored-by: taiy <53635909+taiyme@users.noreply.github.com> commit 2250e521e4bcfa1b162cd46091da1bead5abcac0 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Oct 19 18:02:09 2024 +0900 refactor(frontend): getBgColorを共通化 (#14782) * refactor: getBgColor関数の切り出し + fix types (taiyme#291) * move thing * revert unnecesary changes --------- Co-authored-by: taiy <53635909+taiyme@users.noreply.github.com> commit a3a99467f029d37457c102852071ae4298d2d551 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat Oct 19 17:25:11 2024 +0900 enhance(frontend): Bull Dashboard に relationship queue を追加 (#14777) * spec(frontend): Bull Dashboard に relationship queue を追加 (MisskeyIO#751) (cherry picked from commit a8bbccbefa67ca0f2c1ec0880da88dfc7517b6a0) * Update Changelog * Update Changelog --------- Co-authored-by: riku6460 <17585784+riku6460@users.noreply.github.com> commit b1aac6acc35f6a872abeb084d2c6f4dcfabf9f42 Author: github-actions[bot] Date: Tue Oct 15 04:53:48 2024 +0000 [skip ci] Update CHANGELOG.md (prepend template) commit d2e8dc4fe3c6e90e68001ed1f092d4e3d2454283 Author: github-actions[bot] Date: Tue Oct 15 04:53:43 2024 +0000 Release: 2024.10.1 commit b990ae6b230840cb7125a7c8d1eafdd7c959bc91 Author: zyoshoka <107108195+zyoshoka@users.noreply.github.com> Date: Tue Oct 15 13:37:00 2024 +0900 test(backend): add federation test (#14582) * test(backend): add federation test * fix(ci): install pnpm * fix(ci): cd * fix(ci): build entire project * fix(ci): skip frontend build * fix(ci): pull submodule when checkout * chore: show log for debugging * Revert "chore: show log for debugging" This reverts commit a930964b8d6ba550c23bce1e7fb45d92eab49ef9. * fix(ci): build entire project * chore: omit unused globals * refactor: use strictEqual and simplify some asserts * test: follow requests * refactor: add resolveRemoteNote function * refactor: refine resolveRemoteUser function * refactor: cache admin credentials * refactor: simplify assertion with excluded fields * refactor: use assert * test: note * chore: labeler detect federation * test: blocking * test: move * fix: use appropriate TLD * chore: shorter purge interval * fix(ci): change TLD * refactor: delete trivial comment * test(user): isCat * chore: use jest * chore: omit logs * chore: add memo * fix(ci): omit unnecessary build * test: pinning Note * fix: build daemon in container * style: indent * test(streaming): timeline * chore: rename * fix: delete role after test * refactor: resolve users by uri * fix: delete antenna after test * test: api timeline * test: Note deletion * refactor: sleep function * test: notification * style: indent * refactor: type-safe host * docs: update description * refactor: resolve function params * fix(block): wrong test name * fix: invalid type * fix: longer timeout for fire testing * test(timeline): hashtag * test(note): vote delivery * fix: wrong description * fix: hashtag channel param type * refactor: wrap basic cases * test(timeline): add homeTimeline tests * fix(timeline): correct wrong case and description * test(notification): add tests for Note * refactor(user): wrap profile consistency with describe * chore(note): add issue link * test(timeline): add test * test(user): suspension * test: emoji * refactor: fetch admin first * perf: faster tests * test(drive): sensitive flag * test(emoji): add tests * chore: ignore .config/docker.env * chore: hard-coded tester IP address * test(emoji): custom emoji are surrounded by zero width space * refactor: client and username as property * test(notification): mute * fix(notification): correct description * test(block): mention * refactor(emoji): addCustomEmoji function * fix: typo * test(note): add reaction tests * test(timeline): Note deletion * fix: unnecessary ts-expect-error * refactor: unnecessary fetch mocking * chore: add TODO comments * test(user): deletion * chore: enable --frozen-lockfile * fix(ci): copying configs * docs: update CONTRIBUTING.md * docs: fix typo * chore: set default sleep duration * fix(notification): omit flaky tests * fix(notification): correct type * test(notification): add api endpoint tests * chore: remove redundant mute test * refactor: use param client * fix: start timer after trigger * refactor: remove unnecessary any * chore: shorter timeout for checking if fired * fix(block): remove outdated comment * refactor: shorten remote user variable name * refactor(block): use existing function * refactor: file upload * docs: update description * test(user): ffVisibility * fix: `/api/signin` -> `/api/signin-flow` * test: abuse report * refactor: use existing type * refactor: extract duplicate configs to template file * fix: typo * fix: avoid conflict * refactor: change container dependency * perf: start misskey parallelly * fix: remove dependency * chore(backend): add typecheck * test: add check for #14728 * chore: enable eslint check * perf: don't start linked services when test * test(note): remote note deletion for moderation * chore: define config template * chore: write setup script * refactor: omit unnecessary conditional * refactor: clarify scope * refactor: omit type assertion * refactor: omit logs * style * refactor: redundant promise * refactor: unnecessary imports * refactor: use readable error code * refactor: cache set in signin function * refactor: optimize import commit 3cea890eba0b5137adcc4cb0d4fa2b2286914892 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue Oct 15 13:01:06 2024 +0900 fix(frontend): blinkアニメーションが動作していないのを修正 commit 21a2aa5243c68c070bf73de514ff3884134dd260 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue Oct 15 12:30:40 2024 +0900 Update CHANGELOG.md commit 825d2186929ea5c819adcafd4cc73743c57b7a14 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue Oct 15 10:39:36 2024 +0900 Update CHANGELOG.md commit b5de52554834744e4938eee118b43c6cd286ac30 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Tue Oct 15 10:32:00 2024 +0900 add note commit 5005cc8ae358cf61ae104e39282838d219538f3d Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 21:00:20 2024 +0900 add note commit f13c3909a09a73be9952723c431decbb0df67fef Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 17:54:27 2024 +0900 refactor(backend): remove unnecessary any commit 77ebabb3dc76d6a422ea576ed60e5e4afe72d637 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 17:51:47 2024 +0900 Revert "refactor" This reverts commit 7fd8ef344b33b0a157bc197cbd64069695806936. commit 7fd8ef344b33b0a157bc197cbd64069695806936 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 17:43:44 2024 +0900 refactor commit b0a251d231b18007e0801dbf3517102c6b455320 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 15:35:44 2024 +0900 :art: commit 04e74aa28c8cbab840313c2e257896f97fc460fe Author: github-actions[bot] Date: Mon Oct 14 04:19:47 2024 +0000 Bump version to 2024.10.1-beta.6 commit 140322b8e2bfce65d39edef0e4cd4f5e93ce1d14 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 12:38:12 2024 +0900 Update CHANGELOG.md commit 3b361a9d0bbc2a6fce6076e379ed08febb447d59 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 12:37:18 2024 +0900 perf(frontend): make skipNoteRender on by default commit c46d6d8edd05b3dd69cf894e29d740d7fe1300ed Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 12:34:03 2024 +0900 perf(frontend-embed): improve note rendering performance commit 64bbce4cf4f6d17c7d3309968d95815f177d9544 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 12:32:59 2024 +0900 perf(frontend): improve notification rendering performance commit ddca6bdc0171918a0c5b5d8dc61320bd65e4af06 Author: github-actions[bot] Date: Mon Oct 14 02:34:17 2024 +0000 Bump version to 2024.10.1-beta.5 commit 8b7290d6b0aca61d8c57f294a40fd5bd3b19c235 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 14 11:23:26 2024 +0900 enhance(backend): 個人宛のお知らせはわかったを押すとアーカイブするように (#14762) * enhance(backend): 個人宛のお知らせはわかったを押すとアーカイブするように * Update Changelog * enhance(frontend): アーカイブ済みのものを読み込めるように * Update Changelog * fix changelog * :art: commit 521d92014db757192b09d62f627f5f1b3ae7c5f5 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 11:22:51 2024 +0900 New Crowdin updates (#14753) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Catalan) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Korean) * New translations ja-jp.yml (Chinese Traditional) * New translations ja-jp.yml (Chinese Simplified) * New translations ja-jp.yml (Italian) * New translations ja-jp.yml (Italian) commit 2190092de6409c5dbb02a042d98918580171f4c2 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 11:22:02 2024 +0900 perf(frontend): ノートのレンダリングをスキップできるように commit 064d6ca56f66ff3061fb27897df429e534288462 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Mon Oct 14 09:11:03 2024 +0900 fix(backend): RBT有効時、リノートのリアクションが反映されない問題を修正 commit d0bb0b51f5ec8a9125ee768d75a1e8a9f76c6849 Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 14 03:06:10 2024 +0900 fix(frontend): タイムラインで、広告がない際にも広告のwrapperが出てしまうのを修正 (#14763) commit 088e05ea66f0bf9442f2d4d9772958dfe8e76d8b Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Mon Oct 14 02:54:01 2024 +0900 fix(frontend): 使用されているexposeを復活させる (#14764) commit fb23b24f5cbaca3f7a1ad4ab4893802cbf7c3e53 Author: github-actions[bot] Date: Sun Oct 13 11:43:27 2024 +0000 Bump version to 2024.10.1-beta.4 commit 33b34ad7b8248b4d5ddc37b986ffcf4dff6a37c4 Author: おさむのひと <46447427+samunohito@users.noreply.github.com> Date: Sun Oct 13 20:32:12 2024 +0900 feat: 運営のアクティビティが一定期間ない場合は通知+招待制に移行した際に通知 (#14757) * feat: 運営のアクティビティが一定期間ない場合は通知+招待制に移行した際に通知 * fix misskey-js.api.md * Revert "feat: 運営のアクティビティが一定期間ない場合は通知+招待制に移行した際に通知" This reverts commit 3ab953bdf87f28411a1a10bce787a23d238cda80. * 通知をやめてユーザ単位でのお知らせ機能に変更 * テスト用実装を戻す * Update packages/backend/src/queue/processors/CheckModeratorsActivityProcessorService.ts Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> * fix remove empty then --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> commit 5229f5de4d9ef7cd75d32466d29d672193adaf45 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun Oct 13 20:32:02 2024 +0900 refactor(backend): remove unnecessary .then commit ff47fef5725ba31efc7016534c2d9db8b0ad242a Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun Oct 13 20:22:16 2024 +0900 feat: リモートサーバーのサーバー情報を収集しないオプション (#14634) * wip * wip * Update FetchInstanceMetadataService.ts * Update FetchInstanceMetadataService.ts * Update types.ts commit 45d42b8641585cbe582e4c2a95e03ef511df00be Author: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun Oct 13 20:21:25 2024 +0900 feat: ユーザーの名前に禁止ワードを設定できるように (#14756) * wip * :art: * Enhance: モデレーター以上は制限の影響を受けないように * refactor * better error handling * fix * Revert "better error handling" This reverts commit 5670b29cfa18a3894d0c2abfe0e5ef862e3b9ffa. * error handling * エラーが出ないのを修正 * translation * Update Changelog * status code * :v: * モデレーター以上は影響ないことを明記 * :art: * update changelog * spdx * Update update.ts * refactor * eliminate `screen name` * remove untracked file --------- Co-authored-by: KanariKanaru <93921745+kanarikanaru@users.noreply.github.com> commit c4c69cd267012158d456be0852e9e51e62874848 Author: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sat Oct 12 11:28:58 2024 +0900 :art: commit ee08e9f51e5079a0a1ba1ff2f109ae72c3f19dd7 Author: FineArchs <133759614+FineArchs@users.noreply.github.com> Date: Sat Oct 12 11:20:55 2024 +0900 refactor: MkStickyContainerで diff --git a/packages/frontend-embed/src/components/EmPoll.vue b/packages/frontend-embed/src/components/EmPoll.vue index a2b120344940..d197e094c6d2 100644 --- a/packages/frontend-embed/src/components/EmPoll.vue +++ b/packages/frontend-embed/src/components/EmPoll.vue @@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only
  • - + ({{ i18n.tsx._poll.votesCount({ n: choice.votes }) }}) @@ -52,8 +52,8 @@ const total = computed(() => sum(props.poll.choices.map(x => x.votes))); position: relative; margin: 4px 0; padding: 4px; - //border: solid 0.5px var(--divider); - background: var(--accentedBg); + //border: solid 0.5px var(--MI_THEME-divider); + background: var(--MI_THEME-accentedBg); border-radius: 4px; overflow: clip; } @@ -63,8 +63,8 @@ const total = computed(() => sum(props.poll.choices.map(x => x.votes))); top: 0; left: 0; height: 100%; - background: var(--accent); - background: linear-gradient(90deg,var(--buttonGradateA),var(--buttonGradateB)); + background: var(--MI_THEME-accent); + background: linear-gradient(90deg,var(--MI_THEME-buttonGradateA),var(--MI_THEME-buttonGradateB)); transition: width 1s ease; } @@ -72,11 +72,11 @@ const total = computed(() => sum(props.poll.choices.map(x => x.votes))); position: relative; display: inline-block; padding: 3px 5px; - background: var(--panel); + background: var(--MI_THEME-panel); border-radius: 3px; } .info { - color: var(--fg); + color: var(--MI_THEME-fg); } diff --git a/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue b/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue index 2e43eb8d170b..2ebff489fd7b 100644 --- a/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue +++ b/packages/frontend-embed/src/components/EmReactionsViewer.reaction.vue @@ -38,7 +38,7 @@ const props = defineProps<{ justify-content: center; &.canToggle { - background: var(--buttonBg); + background: var(--MI_THEME-buttonBg); &:hover { background: rgba(0, 0, 0, 0.1); @@ -72,12 +72,12 @@ const props = defineProps<{ } &.reacted, &.reacted:hover { - background: var(--accentedBg); - color: var(--accent); - box-shadow: 0 0 0 1px var(--accent) inset; + background: var(--MI_THEME-accentedBg); + color: var(--MI_THEME-accent); + box-shadow: 0 0 0 1px var(--MI_THEME-accent) inset; > .count { - color: var(--accent); + color: var(--MI_THEME-accent); } > .icon { diff --git a/packages/frontend-embed/src/components/EmSubNoteContent.vue b/packages/frontend-embed/src/components/EmSubNoteContent.vue index db2666a45f47..61815ddfd82f 100644 --- a/packages/frontend-embed/src/components/EmSubNoteContent.vue +++ b/packages/frontend-embed/src/components/EmSubNoteContent.vue @@ -65,11 +65,11 @@ const collapsed = ref(isLong); left: 0; width: 100%; height: 64px; - background: linear-gradient(0deg, var(--panel), color(from var(--panel) srgb r g b / 0)); + background: linear-gradient(0deg, var(--MI_THEME-panel), color(from var(--MI_THEME-panel) srgb r g b / 0)); > .fadeLabel { display: inline-block; - background: var(--panel); + background: var(--MI_THEME-panel); padding: 6px 10px; font-size: 0.8em; border-radius: 999px; @@ -78,7 +78,7 @@ const collapsed = ref(isLong); &:hover { > .fadeLabel { - background: var(--panelHighlight); + background: var(--MI_THEME-panelHighlight); } } } @@ -87,25 +87,25 @@ const collapsed = ref(isLong); .reply { margin-right: 6px; - color: var(--accent); + color: var(--MI_THEME-accent); } .rp { margin-left: 4px; font-style: oblique; - color: var(--renote); + color: var(--MI_THEME-renote); } .showLess { width: 100%; margin-top: 14px; position: sticky; - bottom: calc(var(--stickyBottom, 0px) + 14px); + bottom: calc(var(--MI-stickyBottom, 0px) + 14px); } .showLessLabel { display: inline-block; - background: var(--popup); + background: var(--MI_THEME-popup); padding: 6px 10px; font-size: 0.8em; border-radius: 999px; diff --git a/packages/frontend-embed/src/components/EmTime.vue b/packages/frontend-embed/src/components/EmTime.vue index c3986f7d7031..7902e1848323 100644 --- a/packages/frontend-embed/src/components/EmTime.vue +++ b/packages/frontend-embed/src/components/EmTime.vue @@ -98,10 +98,10 @@ if (!invalid && props.origin === null && (props.mode === 'relative' || props.mod diff --git a/packages/frontend-embed/src/components/EmTimelineContainer.vue b/packages/frontend-embed/src/components/EmTimelineContainer.vue index 6c30b1102d9e..60fd67ced918 100644 --- a/packages/frontend-embed/src/components/EmTimelineContainer.vue +++ b/packages/frontend-embed/src/components/EmTimelineContainer.vue @@ -20,7 +20,7 @@ withDefaults(defineProps<{ diff --git a/packages/frontend-embed/src/pages/tag.vue b/packages/frontend-embed/src/pages/tag.vue index b481b3ebe552..4b00ae7c2d3e 100644 --- a/packages/frontend-embed/src/pages/tag.vue +++ b/packages/frontend-embed/src/pages/tag.vue @@ -83,7 +83,7 @@ function top(ev: MouseEvent) { display: flex; min-width: 0; align-items: center; - gap: var(--margin); + gap: var(--MI-margin); overflow: hidden; .headerClipIconRoot { @@ -93,8 +93,8 @@ function top(ev: MouseEvent) { line-height: 32px; font-size: 14px; text-align: center; - background-color: var(--accentedBg); - color: var(--accent); + background-color: var(--MI_THEME-accentedBg); + color: var(--MI_THEME-accent); border-radius: 50%; } diff --git a/packages/frontend-embed/src/pages/user-timeline.vue b/packages/frontend-embed/src/pages/user-timeline.vue index 85e6f52d5079..348b1a762213 100644 --- a/packages/frontend-embed/src/pages/user-timeline.vue +++ b/packages/frontend-embed/src/pages/user-timeline.vue @@ -117,7 +117,7 @@ function top(ev: MouseEvent) { display: flex; min-width: 0; align-items: center; - gap: var(--margin); + gap: var(--MI-margin); overflow: hidden; .avatarLink { diff --git a/packages/frontend-embed/src/style.scss b/packages/frontend-embed/src/style.scss index 02008ddbd05b..2e43cfd20adc 100644 --- a/packages/frontend-embed/src/style.scss +++ b/packages/frontend-embed/src/style.scss @@ -7,18 +7,18 @@ */ :root { - --radius: 12px; - --marginFull: 14px; - --marginHalf: 10px; + --MI-radius: 12px; + --MI-marginFull: 14px; + --MI-marginHalf: 10px; - --margin: var(--marginFull); + --MI-margin: var(--MI-marginFull); } html { background-color: transparent; color-scheme: light dark; - color: var(--fg); - accent-color: var(--accent); + color: var(--MI_THEME-fg); + accent-color: var(--MI_THEME-accent); overflow: clip; overflow-wrap: break-word; font-family: 'Hiragino Maru Gothic Pro', "BIZ UDGothic", Roboto, HelveticaNeue, Arial, sans-serif; @@ -29,7 +29,7 @@ html { -webkit-text-size-adjust: 100%; &, * { - scrollbar-color: var(--scrollbarHandle) transparent; + scrollbar-color: var(--MI_THEME-scrollbarHandle) transparent; scrollbar-width: thin; &::-webkit-scrollbar { @@ -42,14 +42,14 @@ html { } &::-webkit-scrollbar-thumb { - background: var(--scrollbarHandle); + background: var(--MI_THEME-scrollbarHandle); &:hover { - background: var(--scrollbarHandleHover); + background: var(--MI_THEME-scrollbarHandleHover); } &:active { - background: var(--accent); + background: var(--MI_THEME-accent); } } } @@ -93,7 +93,7 @@ rt { } :focus-visible { - outline: var(--focus) solid 2px; + outline: var(--MI_THEME-focus) solid 2px; outline-offset: -2px; &:hover { @@ -151,38 +151,38 @@ rt { ._buttonGray { @extend ._button; - background: var(--buttonBg); + background: var(--MI_THEME-buttonBg); &:not(:disabled):hover { - background: var(--buttonHoverBg); + background: var(--MI_THEME-buttonHoverBg); } } ._buttonPrimary { @extend ._button; - color: var(--fgOnAccent); - background: var(--accent); + color: var(--MI_THEME-fgOnAccent); + background: var(--MI_THEME-accent); &:not(:disabled):hover { - background: hsl(from var(--accent) h s calc(l + 5)); + background: hsl(from var(--MI_THEME-accent) h s calc(l + 5)); } &:not(:disabled):active { - background: hsl(from var(--accent) h s calc(l - 5)); + background: hsl(from var(--MI_THEME-accent) h s calc(l - 5)); } } ._buttonGradate { @extend ._buttonPrimary; - color: var(--fgOnAccent); - background: linear-gradient(90deg, var(--buttonGradateA), var(--buttonGradateB)); + color: var(--MI_THEME-fgOnAccent); + background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB)); &:not(:disabled):hover { - background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5))); + background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5))); } &:not(:disabled):active { - background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5))); + background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5))); } } @@ -199,13 +199,13 @@ rt { } ._help { - color: var(--accent); + color: var(--MI_THEME-accent); cursor: help; } ._textButton { @extend ._button; - color: var(--accent); + color: var(--MI_THEME-accent); &:focus-visible { outline-offset: 2px; @@ -217,13 +217,13 @@ rt { } ._panel { - background: var(--panel); - border-radius: var(--radius); + background: var(--MI_THEME-panel); + border-radius: var(--MI-radius); overflow: clip; } ._margin { - margin: var(--margin) 0; + margin: var(--MI-margin) 0; } ._gaps_m { @@ -241,7 +241,7 @@ rt { ._gaps { display: flex; flex-direction: column; - gap: var(--margin); + gap: var(--MI-margin); } ._buttons { @@ -263,24 +263,24 @@ rt { padding: 10px; box-sizing: border-box; text-align: center; - border: solid 0.5px var(--divider); - border-radius: var(--radius); + border: solid 0.5px var(--MI_THEME-divider); + border-radius: var(--MI-radius); &:active { - border-color: var(--accent); + border-color: var(--MI_THEME-accent); } } ._popup { - background: var(--popup); - border-radius: var(--radius); + background: var(--MI_THEME-popup); + border-radius: var(--MI-radius); contain: content; } ._acrylic { - background: var(--acrylicPanel); - -webkit-backdrop-filter: var(--blur, blur(15px)); - backdrop-filter: var(--blur, blur(15px)); + background: var(--MI_THEME-acrylicPanel); + -webkit-backdrop-filter: var(--MI-blur, blur(15px)); + backdrop-filter: var(--MI-blur, blur(15px)); } ._fullinfo { @@ -296,7 +296,7 @@ rt { } ._link { - color: var(--link); + color: var(--MI_THEME-link); } ._caption { diff --git a/packages/frontend-embed/src/theme.ts b/packages/frontend-embed/src/theme.ts index 23e70cd0d375..4664ad48804e 100644 --- a/packages/frontend-embed/src/theme.ts +++ b/packages/frontend-embed/src/theme.ts @@ -61,7 +61,7 @@ export function applyTheme(theme: Theme, persist = true) { } for (const [k, v] of Object.entries(props)) { - document.documentElement.style.setProperty(`--${k}`, v.toString()); + document.documentElement.style.setProperty(`--MI_THEME-${k}`, v.toString()); } // iframeを正常に透過させるために、cssのcolor-schemeは `light dark;` 固定にしてある。style.scss参照 diff --git a/packages/frontend-embed/src/ui.vue b/packages/frontend-embed/src/ui.vue index 8da5f46a96e8..4ba5968a91f1 100644 --- a/packages/frontend-embed/src/ui.vue +++ b/packages/frontend-embed/src/ui.vue @@ -88,14 +88,14 @@ onUnmounted(() => { diff --git a/packages/frontend/src/components/MkAccountMoved.vue b/packages/frontend/src/components/MkAccountMoved.vue index 796524fce949..0839955d9d93 100644 --- a/packages/frontend/src/components/MkAccountMoved.vue +++ b/packages/frontend/src/components/MkAccountMoved.vue @@ -32,9 +32,9 @@ misskeyApi('users/show', { userId: props.movedTo }).then(u => user.value = u); .root { padding: 16px; font-size: 90%; - background: var(--infoWarnBg); - color: var(--error); - border-radius: var(--radius); + background: var(--MI_THEME-infoWarnBg); + color: var(--MI_THEME-error); + border-radius: var(--MI-radius); } .link { diff --git a/packages/frontend/src/components/MkAnalogClock.vue b/packages/frontend/src/components/MkAnalogClock.vue index 835efbd6cd71..c8fa6246e01a 100644 --- a/packages/frontend/src/components/MkAnalogClock.vue +++ b/packages/frontend/src/components/MkAnalogClock.vue @@ -193,12 +193,12 @@ tick(); function calcColors() { const computedStyle = getComputedStyle(document.documentElement); - const dark = tinycolor(computedStyle.getPropertyValue('--bg')).isDark(); - const accent = tinycolor(computedStyle.getPropertyValue('--accent')).toHexString(); + const dark = tinycolor(computedStyle.getPropertyValue('--MI_THEME-bg')).isDark(); + const accent = tinycolor(computedStyle.getPropertyValue('--MI_THEME-accent')).toHexString(); majorGraduationColor.value = dark ? 'rgba(255, 255, 255, 0.3)' : 'rgba(0, 0, 0, 0.3)'; //minorGraduationColor = dark ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)'; sHandColor.value = dark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.3)'; - mHandColor.value = tinycolor(computedStyle.getPropertyValue('--fg')).toHexString(); + mHandColor.value = tinycolor(computedStyle.getPropertyValue('--MI_THEME-fg')).toHexString(); hHandColor.value = accent; nowColor.value = accent; } diff --git a/packages/frontend/src/components/MkAnnouncementDialog.vue b/packages/frontend/src/components/MkAnnouncementDialog.vue index f27694658ef0..3045a4758590 100644 --- a/packages/frontend/src/components/MkAnnouncementDialog.vue +++ b/packages/frontend/src/components/MkAnnouncementDialog.vue @@ -9,9 +9,9 @@ SPDX-License-Identifier: AGPL-3.0-only
    - - - + + + {{ announcement.title }}
    @@ -29,7 +29,7 @@ import { misskeyApi } from '@/scripts/misskey-api.js'; import MkModal from '@/components/MkModal.vue'; import MkButton from '@/components/MkButton.vue'; import { i18n } from '@/i18n.js'; -import { $i, updateAccount } from '@/account.js'; +import { $i, updateAccountPartial } from '@/account.js'; const props = withDefaults(defineProps<{ announcement: Misskey.entities.Announcement; @@ -51,7 +51,7 @@ async function ok() { modal.value?.close(); misskeyApi('i/read-announcement', { announcementId: props.announcement.id }); - updateAccount({ + updateAccountPartial({ unreadAnnouncements: $i!.unreadAnnouncements.filter(a => a.id !== props.announcement.id), }); } @@ -83,8 +83,8 @@ onMounted(() => { min-width: 320px; max-width: 480px; box-sizing: border-box; - background: var(--panel); - border-radius: var(--radius); + background: var(--MI_THEME-panel); + border-radius: var(--MI-radius); } .header { diff --git a/packages/frontend/src/components/MkAntennaEditor.vue b/packages/frontend/src/components/MkAntennaEditor.vue index cb7ee3d6ca38..e622d57f1ecf 100644 --- a/packages/frontend/src/components/MkAntennaEditor.vue +++ b/packages/frontend/src/components/MkAntennaEditor.vue @@ -160,7 +160,7 @@ async function deleteAntenna() { function addUser() { os.selectUser({ includeSelf: true }).then(user => { users.value = users.value.trim(); - users.value += '\n@' + Misskey.acct.toString(user as any); + users.value += '\n@' + Misskey.acct.toString(user); users.value = users.value.trim(); }); } @@ -170,6 +170,6 @@ function addUser() { .actions { margin-top: 16px; padding: 24px 0; - border-top: solid 0.5px var(--divider); + border-top: solid 0.5px var(--MI_THEME-divider); } diff --git a/packages/frontend/src/components/MkAsUi.vue b/packages/frontend/src/components/MkAsUi.vue index b50a7fea5c47..e52ab5ccad15 100644 --- a/packages/frontend/src/components/MkAsUi.vue +++ b/packages/frontend/src/components/MkAsUi.vue @@ -106,7 +106,7 @@ const containerStyle = computed(() => { const border = isBordered ? { borderWidth: c.borderWidth ?? '1px', - borderColor: c.borderColor ?? 'var(--divider)', + borderColor: c.borderColor ?? 'var(--MI_THEME-divider)', borderStyle: c.borderStyle ?? 'solid', } : undefined; @@ -165,7 +165,7 @@ function openPostForm() { } .postForm { - background: var(--bg); + background: var(--MI_THEME-bg); border-radius: 8px; } diff --git a/packages/frontend/src/components/MkAuthConfirm.stories.impl.ts b/packages/frontend/src/components/MkAuthConfirm.stories.impl.ts new file mode 100644 index 000000000000..0adc44e204d7 --- /dev/null +++ b/packages/frontend/src/components/MkAuthConfirm.stories.impl.ts @@ -0,0 +1,7 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import MkAuthConfirm from './MkAuthConfirm.vue'; +void MkAuthConfirm; diff --git a/packages/frontend/src/components/MkAuthConfirm.vue b/packages/frontend/src/components/MkAuthConfirm.vue new file mode 100644 index 000000000000..f78d2d38f024 --- /dev/null +++ b/packages/frontend/src/components/MkAuthConfirm.vue @@ -0,0 +1,450 @@ + + + + + + + diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index f54799136937..0ea4566d4e6a 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -407,16 +407,16 @@ onBeforeUnmount(() => { text-overflow: ellipsis; &:hover { - background: var(--X3); + background: var(--MI_THEME-X3); } &[data-selected='true'] { - background: var(--accent); + background: var(--MI_THEME-accent); color: #fff !important; } &:active { - background: var(--accentDarken); + background: var(--MI_THEME-accentDarken); color: #fff !important; } } diff --git a/packages/frontend/src/components/MkButton.vue b/packages/frontend/src/components/MkButton.vue index 1156b3f2b8c1..311facb4aaf1 100644 --- a/packages/frontend/src/components/MkButton.vue +++ b/packages/frontend/src/components/MkButton.vue @@ -129,7 +129,7 @@ function onMousedown(evt: MouseEvent): void { font-size: 95%; box-shadow: none; text-decoration: none; - background: var(--buttonBg); + background: var(--MI_THEME-buttonBg); border-radius: 5px; overflow: clip; box-sizing: border-box; @@ -140,11 +140,11 @@ function onMousedown(evt: MouseEvent): void { } &:not(:disabled):hover { - background: var(--buttonHoverBg); + background: var(--MI_THEME-buttonHoverBg); } &:not(:disabled):active { - background: var(--buttonHoverBg); + background: var(--MI_THEME-buttonHoverBg); } &.small { @@ -167,15 +167,15 @@ function onMousedown(evt: MouseEvent): void { &.primary { font-weight: bold; - color: var(--fgOnAccent) !important; - background: var(--accent); + color: var(--MI_THEME-fgOnAccent) !important; + background: var(--MI_THEME-accent); &:not(:disabled):hover { - background: hsl(from var(--accent) h s calc(l + 5)); + background: hsl(from var(--MI_THEME-accent) h s calc(l + 5)); } &:not(:disabled):active { - background: hsl(from var(--accent) h s calc(l + 5)); + background: hsl(from var(--MI_THEME-accent) h s calc(l + 5)); } } @@ -216,15 +216,15 @@ function onMousedown(evt: MouseEvent): void { &.gradate { font-weight: bold; - color: var(--fgOnAccent) !important; - background: linear-gradient(90deg, var(--buttonGradateA), var(--buttonGradateB)); + color: var(--MI_THEME-fgOnAccent) !important; + background: linear-gradient(90deg, var(--MI_THEME-buttonGradateA), var(--MI_THEME-buttonGradateB)); &:not(:disabled):hover { - background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5))); + background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5))); } &:not(:disabled):active { - background: linear-gradient(90deg, hsl(from var(--accent) h s calc(l + 5)), hsl(from var(--accent) h s calc(l + 5))); + background: linear-gradient(90deg, hsl(from var(--MI_THEME-accent) h s calc(l + 5)), hsl(from var(--MI_THEME-accent) h s calc(l + 5))); } } diff --git a/packages/frontend/src/components/MkCaptcha.vue b/packages/frontend/src/components/MkCaptcha.vue index c5b6e0caede7..264cf9af069b 100644 --- a/packages/frontend/src/components/MkCaptcha.vue +++ b/packages/frontend/src/components/MkCaptcha.vue @@ -10,6 +10,17 @@ SPDX-License-Identifier: AGPL-3.0-only
    +
    + +
    +
    Test captcha passed!
    +
    +
    +
    Type "ai-chan-kawaii" to pass captcha
    + + +
    +
    @@ -29,7 +40,7 @@ export type Captcha = { getResponse(id: string): string; }; -export type CaptchaProvider = 'hcaptcha' | 'recaptcha' | 'turnstile' | 'mcaptcha'; +export type CaptchaProvider = 'hcaptcha' | 'recaptcha' | 'turnstile' | 'mcaptcha' | 'testcaptcha'; type CaptchaContainer = { readonly [_ in CaptchaProvider]?: Captcha; @@ -54,12 +65,16 @@ const available = ref(false); const captchaEl = shallowRef(); +const testcaptchaInput = ref(''); +const testcaptchaPassed = ref(false); + const variable = computed(() => { switch (props.provider) { case 'hcaptcha': return 'hcaptcha'; case 'recaptcha': return 'grecaptcha'; case 'turnstile': return 'turnstile'; case 'mcaptcha': return 'mcaptcha'; + case 'testcaptcha': return 'testcaptcha'; } }); @@ -71,6 +86,7 @@ const src = computed(() => { case 'recaptcha': return 'https://www.recaptcha.net/recaptcha/api.js?render=explicit'; case 'turnstile': return 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit'; case 'mcaptcha': return null; + case 'testcaptcha': return null; } }); @@ -78,7 +94,7 @@ const scriptId = computed(() => `script-${props.provider}`); const captcha = computed(() => window[variable.value] || {} as unknown as Captcha); -if (loaded || props.provider === 'mcaptcha') { +if (loaded || props.provider === 'mcaptcha' || props.provider === 'testcaptcha') { available.value = true; } else if (src.value !== null) { (document.getElementById(scriptId.value) ?? document.head.appendChild(Object.assign(document.createElement('script'), { @@ -91,6 +107,8 @@ if (loaded || props.provider === 'mcaptcha') { function reset() { if (captcha.value.reset) captcha.value.reset(); + testcaptchaPassed.value = false; + testcaptchaInput.value = ''; } async function requestRender() { @@ -99,8 +117,8 @@ async function requestRender() { sitekey: props.sitekey, theme: defaultStore.state.darkMode ? 'dark' : 'light', callback: callback, - 'expired-callback': callback, - 'error-callback': callback, + 'expired-callback': () => callback(undefined), + 'error-callback': () => callback(undefined), }); } else if (props.provider === 'mcaptcha' && props.instanceUrl && props.sitekey) { const { default: Widget } = await import('@mcaptcha/vanilla-glue'); @@ -127,6 +145,12 @@ function onReceivedMessage(message: MessageEvent) { } } +function testcaptchaSubmit() { + testcaptchaPassed.value = testcaptchaInput.value === 'ai-chan-kawaii'; + callback(testcaptchaPassed.value ? 'testcaptcha-passed' : undefined); + if (!testcaptchaPassed.value) testcaptchaInput.value = ''; +} + onMounted(() => { if (available.value) { window.addEventListener('message', onReceivedMessage); diff --git a/packages/frontend/src/components/MkChannelFollowButton.vue b/packages/frontend/src/components/MkChannelFollowButton.vue index 35dc3ad4bf83..d4e4f6179a83 100644 --- a/packages/frontend/src/components/MkChannelFollowButton.vue +++ b/packages/frontend/src/components/MkChannelFollowButton.vue @@ -68,9 +68,9 @@ async function onClick() { position: relative; display: inline-block; font-weight: bold; - color: var(--accent); + color: var(--MI_THEME-accent); background: transparent; - border: solid 1px var(--accent); + border: solid 1px var(--MI_THEME-accent); padding: 0; height: 31px; font-size: 16px; @@ -99,17 +99,17 @@ async function onClick() { } &.active { - color: var(--fgOnAccent); - background: var(--accent); + color: var(--MI_THEME-fgOnAccent); + background: var(--MI_THEME-accent); &:hover { - background: var(--accentLighten); - border-color: var(--accentLighten); + background: var(--MI_THEME-accentLighten); + border-color: var(--MI_THEME-accentLighten); } &:active { - background: var(--accentDarken); - border-color: var(--accentDarken); + background: var(--MI_THEME-accentDarken); + border-color: var(--MI_THEME-accentDarken); } } diff --git a/packages/frontend/src/components/MkChannelPreview.vue b/packages/frontend/src/components/MkChannelPreview.vue index 3c0874a1eb76..c470042b79ac 100644 --- a/packages/frontend/src/components/MkChannelPreview.vue +++ b/packages/frontend/src/components/MkChannelPreview.vue @@ -47,11 +47,12 @@ SPDX-License-Identifier: AGPL-3.0-only diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index 3bad8da06f72..8187d991e771 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -409,7 +409,7 @@ function computeButtonTitle(ev: MouseEvent): void { elm.title = getEmojiName(emoji); } -function chosen(emoji: any, ev?: MouseEvent) { +function chosen(emoji: string | Misskey.entities.EmojiSimple | UnicodeEmojiDef, ev?: MouseEvent) { const el = ev && (ev.currentTarget ?? ev.target) as HTMLElement | null | undefined; if (el) { const rect = el.getBoundingClientRect(); @@ -426,7 +426,7 @@ function chosen(emoji: any, ev?: MouseEvent) { // 最近使った絵文字更新 if (!pinned.value?.includes(key)) { let recents = defaultStore.state.recentlyUsedEmojis; - recents = recents.filter((emoji: any) => emoji !== key); + recents = recents.filter((emoji) => emoji !== key); recents.unshift(key); defaultStore.set('recentlyUsedEmojis', recents.splice(0, 32)); } @@ -580,7 +580,7 @@ defineExpose({ &:disabled { cursor: not-allowed; - background: linear-gradient(-45deg, transparent 0% 48%, var(--X6) 48% 52%, transparent 52% 100%); + background: linear-gradient(-45deg, transparent 0% 48%, var(--MI_THEME-X6) 48% 52%, transparent 52% 100%); opacity: 1; > .emoji { @@ -615,7 +615,7 @@ defineExpose({ &:disabled { cursor: not-allowed; - background: linear-gradient(-45deg, transparent 0% 48%, var(--X6) 48% 52%, transparent 52% 100%); + background: linear-gradient(-45deg, transparent 0% 48%, var(--MI_THEME-X6) 48% 52%, transparent 52% 100%); opacity: 1; > .emoji { @@ -638,7 +638,7 @@ defineExpose({ outline: none; border: none; background: transparent; - color: var(--fg); + color: var(--MI_THEME-fg); &:not(:focus):not(.filled) { margin-bottom: env(safe-area-inset-bottom, 0px); @@ -647,7 +647,7 @@ defineExpose({ &:not(.filled) { order: 1; z-index: 2; - box-shadow: 0px -1px 0 0px var(--divider); + box-shadow: 0px -1px 0 0px var(--MI_THEME-divider); } } @@ -658,11 +658,11 @@ defineExpose({ > .tab { flex: 1; height: 38px; - border-top: solid 0.5px var(--divider); + border-top: solid 0.5px var(--MI_THEME-divider); &.active { - border-top: solid 1px var(--accent); - color: var(--accent); + border-top: solid 1px var(--MI_THEME-accent); + color: var(--MI_THEME-accent); } } } @@ -681,7 +681,7 @@ defineExpose({ > .group { &:not(.index) { padding: 4px 0 8px 0; - border-top: solid 0.5px var(--divider); + border-top: solid 0.5px var(--MI_THEME-divider); } > header { @@ -708,7 +708,7 @@ defineExpose({ cursor: pointer; &:hover { - color: var(--accent); + color: var(--MI_THEME-accent); } } @@ -730,13 +730,13 @@ defineExpose({ } &:active { - background: var(--accent); + background: var(--MI_THEME-accent); box-shadow: inset 0 0.15em 0.3em rgba(27, 31, 35, 0.15); } &:disabled { cursor: not-allowed; - background: linear-gradient(-45deg, transparent 0% 48%, var(--X6) 48% 52%, transparent 52% 100%); + background: linear-gradient(-45deg, transparent 0% 48%, var(--MI_THEME-X6) 48% 52%, transparent 52% 100%); opacity: 1; > .emoji { @@ -757,7 +757,7 @@ defineExpose({ } &.result { - border-bottom: solid 0.5px var(--divider); + border-bottom: solid 0.5px var(--MI_THEME-divider); &:empty { display: none; diff --git a/packages/frontend/src/components/MkExtensionInstaller.stories.impl.ts b/packages/frontend/src/components/MkExtensionInstaller.stories.impl.ts new file mode 100644 index 000000000000..6763f7c54692 --- /dev/null +++ b/packages/frontend/src/components/MkExtensionInstaller.stories.impl.ts @@ -0,0 +1,83 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { StoryObj } from '@storybook/vue3'; +import MkExtensionInstaller from './MkExtensionInstaller.vue'; +import lightTheme from '@@/themes/_light.json5'; + +export const Plugin = { + render(args) { + return { + components: { + MkExtensionInstaller, + }, + setup() { + return { + args, + }; + }, + computed: { + props() { + return { + ...this.args, + }; + }, + }, + template: '', + }; + }, + args: { + extension: { + type: 'plugin', + raw: '"do nothing"', + meta: { + name: 'do nothing plugin', + version: '1.0', + author: 'syuilo and misskey-project', + description: 'a plugin that does nothing', + permissions: ['read:account'], + config: { + 'doNothing': true, + }, + }, + }, + }, + parameters: { + layout: 'centered', + }, +} satisfies StoryObj; + +export const Theme = { + render(args) { + return { + components: { + MkExtensionInstaller, + }, + setup() { + return { + args, + }; + }, + computed: { + props() { + return { + ...this.args, + }; + }, + }, + template: '', + }; + }, + args: { + extension: { + type: 'theme', + raw: JSON.stringify(lightTheme), + meta: lightTheme, + }, + }, + parameters: { + layout: 'centered', + }, +} satisfies StoryObj; diff --git a/packages/frontend/src/components/MkExtensionInstaller.vue b/packages/frontend/src/components/MkExtensionInstaller.vue new file mode 100644 index 000000000000..d59b20435e31 --- /dev/null +++ b/packages/frontend/src/components/MkExtensionInstaller.vue @@ -0,0 +1,146 @@ + + + + + + + + diff --git a/packages/frontend/src/components/MkFileListForAdmin.vue b/packages/frontend/src/components/MkFileListForAdmin.vue index 13295c455b7c..d5d32ebb285e 100644 --- a/packages/frontend/src/components/MkFileListForAdmin.vue +++ b/packages/frontend/src/components/MkFileListForAdmin.vue @@ -66,7 +66,7 @@ const props = defineProps<{ align-items: center; &:hover { - color: var(--accent); + color: var(--MI_THEME-accent); } > .thumbnail { diff --git a/packages/frontend/src/components/MkFlashPreview.vue b/packages/frontend/src/components/MkFlashPreview.vue index 8a2a4386240a..b7278ac742fb 100644 --- a/packages/frontend/src/components/MkFlashPreview.vue +++ b/packages/frontend/src/components/MkFlashPreview.vue @@ -36,7 +36,7 @@ const props = defineProps<{ &:hover { text-decoration: none; - color: var(--accent); + color: var(--MI_THEME-accent); } &:focus-visible { @@ -83,7 +83,6 @@ const props = defineProps<{ > p { display: inline-block; margin: 0; - color: var(--urlPreviewInfo); font-size: 0.8em; line-height: 16px; vertical-align: top; @@ -92,7 +91,7 @@ const props = defineProps<{ } &:global(.gray) { - --c: var(--bg); + --c: var(--MI_THEME-bg); background-image: linear-gradient(45deg, var(--c) 16.67%, transparent 16.67%, transparent 50%, var(--c) 50%, var(--c) 66.67%, transparent 66.67%, transparent 100%); background-size: 16px 16px; } diff --git a/packages/frontend/src/components/MkFoldableSection.vue b/packages/frontend/src/components/MkFoldableSection.vue index f10d58b38a62..fb1b5220fbe6 100644 --- a/packages/frontend/src/components/MkFoldableSection.vue +++ b/packages/frontend/src/components/MkFoldableSection.vue @@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only @@ -139,15 +140,15 @@ onMounted(() => { width: 100%; box-sizing: border-box; padding: 9px 12px 9px 12px; - background: var(--folderHeaderBg); - -webkit-backdrop-filter: var(--blur, blur(15px)); - backdrop-filter: var(--blur, blur(15px)); + background: var(--MI_THEME-folderHeaderBg); + -webkit-backdrop-filter: var(--MI-blur, blur(15px)); + backdrop-filter: var(--MI-blur, blur(15px)); border-radius: 6px; transition: border-radius 0.3s; &:hover { text-decoration: none; - background: var(--folderHeaderHoverBg); + background: var(--MI_THEME-folderHeaderHoverBg); } &:focus-within { @@ -155,8 +156,8 @@ onMounted(() => { } &.active { - color: var(--accent); - background: var(--folderHeaderHoverBg); + color: var(--MI_THEME-accent); + background: var(--MI_THEME-folderHeaderHoverBg); } &.opened { @@ -170,7 +171,7 @@ onMounted(() => { } .headerLower { - color: var(--fgTransparentWeak); + color: var(--MI_THEME-fgTransparentWeak); font-size: .85em; padding-left: 4px; } @@ -204,13 +205,13 @@ onMounted(() => { } .headerTextSub { - color: var(--fgTransparentWeak); + color: var(--MI_THEME-fgTransparentWeak); font-size: .85em; } .headerRight { margin-left: auto; - color: var(--fgTransparentWeak); + color: var(--MI_THEME-fgTransparentWeak); white-space: nowrap; } @@ -219,26 +220,26 @@ onMounted(() => { } .body { - background: var(--panel); + background: var(--MI_THEME-panel); border-radius: 0 0 6px 6px; container-type: inline-size; &.bgSame { - background: var(--bg); + background: var(--MI_THEME-bg); } } .footer { position: sticky !important; z-index: 1; - bottom: var(--stickyBottom, 0px); + bottom: var(--MI-stickyBottom, 0px); left: 0; padding: 12px; - background: var(--acrylicBg); - -webkit-backdrop-filter: var(--blur, blur(15px)); - backdrop-filter: var(--blur, blur(15px)); + background: var(--MI_THEME-acrylicBg); + -webkit-backdrop-filter: var(--MI-blur, blur(15px)); + backdrop-filter: var(--MI-blur, blur(15px)); background-size: auto auto; - background-image: repeating-linear-gradient(135deg, transparent, transparent 5px, var(--panel) 5px, var(--panel) 10px); + background-image: repeating-linear-gradient(135deg, transparent, transparent 5px, var(--MI_THEME-panel) 5px, var(--MI_THEME-panel) 10px); border-radius: 0 0 6px 6px; } diff --git a/packages/frontend/src/components/MkFollowButton.vue b/packages/frontend/src/components/MkFollowButton.vue index 0de52906ed28..c1dc67f77668 100644 --- a/packages/frontend/src/components/MkFollowButton.vue +++ b/packages/frontend/src/components/MkFollowButton.vue @@ -37,13 +37,13 @@ SPDX-License-Identifier: AGPL-3.0-only + + diff --git a/packages/frontend/src/components/MkGalleryPostPreview.vue b/packages/frontend/src/components/MkGalleryPostPreview.vue index 2bb5b8762a19..22f8355acf1a 100644 --- a/packages/frontend/src/components/MkGalleryPostPreview.vue +++ b/packages/frontend/src/components/MkGalleryPostPreview.vue @@ -75,7 +75,7 @@ function leaveHover(): void { &:hover { text-decoration: none; - color: var(--accent); + color: var(--MI_THEME-accent); > .thumbnail { transform: scale(1.1); diff --git a/packages/frontend/src/components/MkGoogle.vue b/packages/frontend/src/components/MkGoogle.vue index 2988d77fe3cd..2eaee5b11593 100644 --- a/packages/frontend/src/components/MkGoogle.vue +++ b/packages/frontend/src/components/MkGoogle.vue @@ -39,7 +39,7 @@ const search = () => { width: 100%; height: 40px; font-size: 16px; - border: solid 1px var(--divider); + border: solid 1px var(--MI_THEME-divider); border-radius: 4px 0 0 4px; -webkit-appearance: textfield; } @@ -48,7 +48,7 @@ const search = () => { flex-shrink: 0; margin: 0; padding: 0 16px; - border: solid 1px var(--divider); + border: solid 1px var(--MI_THEME-divider); border-left: none; border-radius: 0 4px 4px 0; diff --git a/packages/frontend/src/components/MkInfo.vue b/packages/frontend/src/components/MkInfo.vue index 33e65ccc4e10..90ca1b5a9d04 100644 --- a/packages/frontend/src/components/MkInfo.vue +++ b/packages/frontend/src/components/MkInfo.vue @@ -36,14 +36,14 @@ function close() { align-items: center; padding: 12px 14px; font-size: 90%; - background: var(--infoBg); - color: var(--infoFg); - border-radius: var(--radius); + background: var(--MI_THEME-infoBg); + color: var(--MI_THEME-infoFg); + border-radius: var(--MI-radius); white-space: pre-wrap; &.warn { - background: var(--infoWarnBg); - color: var(--infoWarnFg); + background: var(--MI_THEME-infoWarnBg); + color: var(--MI_THEME-infoWarnFg); } } diff --git a/packages/frontend/src/components/MkInput.vue b/packages/frontend/src/components/MkInput.vue index 4c2fc1ba00da..08817fd6a8fa 100644 --- a/packages/frontend/src/components/MkInput.vue +++ b/packages/frontend/src/components/MkInput.vue @@ -44,7 +44,7 @@ SPDX-License-Identifier: AGPL-3.0-only @@ -78,7 +78,7 @@ function collapsable(v): boolean { > .boolean { display: inline; - color: var(--codeBoolean); + color: var(--MI_THEME-codeBoolean); &.true { font-weight: bold; @@ -91,12 +91,12 @@ function collapsable(v): boolean { > .string { display: inline; - color: var(--codeString); + color: var(--MI_THEME-codeString); } > .number { display: inline; - color: var(--codeNumber); + color: var(--MI_THEME-codeNumber); } > .array.empty { @@ -127,7 +127,7 @@ function collapsable(v): boolean { > .toggle { width: 16px; - color: var(--accent); + color: var(--MI_THEME-accent); visibility: hidden; &.visible { diff --git a/packages/frontend/src/components/MkOmit.vue b/packages/frontend/src/components/MkOmit.vue index ee1f15c18960..a05176e2f461 100644 --- a/packages/frontend/src/components/MkOmit.vue +++ b/packages/frontend/src/components/MkOmit.vue @@ -47,7 +47,7 @@ onUnmounted(() => { @@ -54,7 +54,7 @@ const props = defineProps<{ &:hover { text-decoration: none; - color: var(--accent); + color: var(--MI_THEME-accent); } &:focus-within { @@ -67,22 +67,22 @@ const props = defineProps<{ left: 0; width: 100%; height: 100%; - border-radius: var(--radius); + border-radius: var(--MI-radius); pointer-events: none; - box-shadow: inset 0 0 0 2px var(--focus); + box-shadow: inset 0 0 0 2px var(--MI_THEME-focus); } } > .thumbnail { & + article { - border-radius: 0 0 var(--radius) var(--radius); + border-radius: 0 0 var(--MI-radius) var(--MI-radius); } } > article { - background-color: var(--panel); + background-color: var(--MI_THEME-panel); padding: 16px; - border-radius: var(--radius); + border-radius: var(--MI-radius); > header { margin-bottom: 8px; @@ -115,7 +115,6 @@ const props = defineProps<{ > p { display: inline-block; margin: 0; - color: var(--urlPreviewInfo); font-size: 0.8em; line-height: 16px; vertical-align: top; diff --git a/packages/frontend/src/components/MkPageWindow.vue b/packages/frontend/src/components/MkPageWindow.vue index 2b993ab12f9c..9547423227a6 100644 --- a/packages/frontend/src/components/MkPageWindow.vue +++ b/packages/frontend/src/components/MkPageWindow.vue @@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only :buttonsLeft="buttonsLeft" :buttonsRight="buttonsRight" :contextmenu="contextmenu" - @closed="$emit('closed')" + @closed="emit('closed')" >