Skip to content

Release v1.106.0 - #1368

Merged
hitalin merged 17 commits into
mainfrom
develop
Nov 10, 2026
Merged

hitalin merged 17 commits into
mainfrom
develop

Conversation

@hitalin

@hitalin hitalin commented Nov 10, 2026

Copy link
Copy Markdown
Collaborator

変更

機能

修正

ドキュメント

  • プラグイン開発ドキュメントに「失敗したとき」(4 言語): どの API が止まり、どれが値で返るか
  • ROADMAP: ミュート / ブロックの管理画面を採用しない判断と、例外を測る線

プラグイン / ウィジェットの作者へ

Mk:api が止まらなくなる。結果を見ないコードは、失敗しても先へ進む (Misskey 本体と同じ)。書込のあとは Core:type(res) == "error" を確かめてから成功を表示すること。ストアの配布物は修正済み (misstore#102)。

閉じる issue

Closes #1249
Closes #1255
Closes #1358
Closes #1359
Closes #1360

確認

いずれも実機では未確認 (テスト・型検査・lint は通過)。

🤖 Generated with Claude Code

hitalin and others added 17 commits November 11, 2026 00:36
ミュート / ブロックの一覧は本体に持たず、設定のトップではなく該当ページへ送る。
コマンドパレットのアカウント操作にも同じ項目を足す。パスを確かめてあるのは対応して
いるソフトウェアだけなので、それ以外では出さない。

ROADMAP に、管理画面を採用しない判断と、例外の候補 (ユーザーミュートの一覧) を測る線を残す。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
user.mute / unmute / renoteMute / unrenoteMute の確認は相手を内部の ID で出していて、
承認する人が誰のことか読めなかった。確認を組むときに相手を引いて「表示名 (@user@host)」
で出す。引けないとき (アカウントが決まらない / 相手が居ない / 通信の失敗) は ID のまま出し、
確認そのものは止めない。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(account): アカウントメニューから本家 Web の「ミュートとブロック」へ直接送る (#1267)
fix(ai): AI のミュート確認に相手の表示名と acct を出す (#1358)
ミュート / ブロックの権限はログイン時の要求に後から足したので、それより前のトークンの
ままの口座では mute/list が PERMISSION_DENIED になる。これを「再試行してよい失敗」として
扱っていたため、復帰のたびに打ち直して失敗し続け、利用者には何も見えなかった。

権限不足は認証エラーと同じく取り直さず、何に要るのかを言って再ログインを 1 回案内する。
ログインし直すと口座の行が置き換わるので、そこで取り直す。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…enied

fix(mute): ミュートの同期が権限不足のとき、取り直さずに再ログインを案内する (#1359)
本家の users/following / users/followers はフォロー関係の記録の id で前後を絞る。一覧は
取得した行を相手のユーザーに置き換えてから持つので、次のページの起点に末尾のユーザーの id を
渡していた。id は作成時刻の順なので、相手のアカウントが作られた時刻を境に取りに行くことに
なり、取りこぼしと重複が出る。取得した末尾の記録の id を覚えて起点にする。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix: フォロー / フォロワー一覧の次ページの起点を、フォロー関係の記録の id にする (#1360)
- drafts.list: 取得の失敗 (下書き API の無いサーバー、通信断) を「0 件」(実際は前回の
  一覧) にせず、失敗として返す。投稿フォームの下書きピッカーは失敗を受けて今までどおり
  前回の一覧を見せる。drafts.update の読み直しも、取得の失敗が「not found」に化けなくなる
- capability の失敗の文言: Rust 由来の失敗は Error ではなく object で投げられ、String() で
  [object Object] に潰れて AI・外部 API・MCP・Nd:call に返っていた。message を取り出して
  返す。表示言語には描き直さない。外へ出る文言なので、ホームディレクトリは ~ にして OS の
  ユーザー名を載せない
- ウィジェットのエラーの帯: 再実行するまで消えなかった。次に画面を描き直せたら消す
- プラグイン開発ドキュメントに「失敗したとき」を足す。Nd:call の error 値は名前で判定する

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
サーバーのエラー応答・レート制限・通信断は throw をやめ、values.ERROR('request_failed',
{ code, message }) を返す。code は Misskey のエラーコードがあればそれ、無ければ NoteDeck の
種別。AiScript に try/catch は無く、止めると作者は失敗を自分の UI で扱えない。本家向けに
書かれた「error 値なら失敗」の分岐もそのまま動く。

呼べなかったもの (権限 gate の拒否 / アカウントが無い / 要求の形の誤り / 内部の失敗) は
止めるまま。Nd:call は変えない。

止まらなくなる分の手当て:
- error 値で返した失敗も実行ログに 1 行残す (io.onNotice、全実行面)
- プラグインが登録した capability の handler が error 値をそのまま戻したら、値の変換で
  理由が潰れる前に、理由つきの失敗として呼び出し元 (AI など) に返す
- ドキュメント (4 言語): 書込のあとは必ず結果を確かめる。サーバーごとの差を自分の画面で
  扱うなら Mk:api を使う

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ホームディレクトリの伏せ方: 空白を含む Windows のユーザー名と、JSON にした後の
  二重のバックスラッシュのパスも対象にする
- 失敗しても前に取得した下書きの一覧が残ることをテストで押さえる
- ドキュメント: コマンドパレットのコマンドは失敗してもトーストが出ない (実行ログだけ)。
  「引数の誤りはどの API でも止まる」は Nd:http の無視される引数と合わないので外す

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- ホームディレクトリの伏せ方: 空白を含む macOS のユーザー名も対象にする
- ドキュメント: Nd:http は要求を出せなかったとき (未対応のメソッド、許可されない接続先)
  は止まる。権限の拒否はバッジと、場合によってトーストにも出る

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…orting

fix(capability): 失敗を握り潰さず、理由を潰さずに返す (#1255)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(aiscript): Mk:api の失敗を、本家と同じ error 値 (request_failed) で返す (#1249)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 10, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 30 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 3dbc269 and 59c780c.

Files ignored due to path filters: 3

  • Cargo.lock is excluded by !**/*.lock
  • src-tauri/openapi.json is excluded by !src-tauri/openapi.json
  • src/i18n/locale.generated.ts is excluded by !**/*.generated.*
Files selected for processing: 46

  • CODEMAP.md
  • ROADMAP.md
  • crates/notemaid/Cargo.toml
  • locales/en-US.source.json
  • locales/en-US.yml
  • locales/ja-JP.yml
  • package.json
  • site/docs/dev/plugin.md
  • site/en/docs/dev/plugin.md
  • site/ko/docs/dev/plugin.md
  • site/zh/docs/dev/plugin.md
  • src-tauri/Cargo.toml
  • src-tauri/tauri.conf.json
  • src/aiscript/api.test.ts
  • src/aiscript/api.ts
  • src/aiscript/common.ts
  • src/aiscript/notedeck-api.test.ts
  • src/aiscript/notedeck-api.ts
  • src/aiscript/plugin-api.ts
  • src/aiscript/sandbox.test.ts
  • src/aiscript/sandbox.ts
  • src/capabilities/builtins/user.ts
  • src/capabilities/builtins/userMuteConfirm.test.ts
  • src/capabilities/dispatcher.test.ts
  • src/capabilities/dispatcher.ts
  • src/commands/definitions.ts
  • src/components/common/MkDraftsPicker.vue
  • src/components/deck/DeckAiScriptColumn.vue
  • src/components/deck/NavAccountMenu.dom.test.ts
  • src/components/deck/NavAccountMenu.vue
  • src/components/deck/widgets/WidgetAiScript.dom.test.ts
  • src/components/deck/widgets/WidgetAiScript.vue
  • src/components/window/FollowListContent.dom.test.ts
  • src/components/window/FollowListContent.vue
  • src/components/window/WidgetEditContent.vue
  • src/composables/useAccountActions.ts
  • src/composables/useAccountSync.dom.test.ts
  • src/composables/useAccountSync.ts
  • src/composables/useAiScriptRunner.ts
  • src/composables/useDrafts.test.ts
  • src/composables/useDrafts.ts
  • src/composables/useLoginPrompt.ts
  • src/core/apiBridge.ts
  • src/services/capabilityFailure.test.ts
  • src/services/capabilityFailure.ts
  • src/services/muteExpiry.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

@github-actions

Copy link
Copy Markdown

API surface diff

外部アプリ向け API 面 (src-tauri/openapi.json / src/bindings.ts) が変更されています。
互換性への影響 (#709) をレビューしてください。

src-tauri/openapi.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Full diff
diff --git a/src-tauri/openapi.json b/src-tauri/openapi.json
index 2b19acd..fd23a76 100644
--- a/src-tauri/openapi.json
+++ b/src-tauri/openapi.json
@@ -6,7 +6,7 @@
     "license": {
       "name": "MIT"
     },
-    "version": "1.105.1"
+    "version": "1.106.0"
   },
   "paths": {
     "/api": {

@github-actions github-actions Bot added 📖Doc Documentation related issue/PR rust Pull requests that update rust code javascript Pull requests that update javascript code labels Nov 10, 2026
@hitalin
hitalin merged commit 69f0009 into main Nov 10, 2026
29 of 30 checks passed
@claude

claude Bot commented Nov 10, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment