Skip to content

refactor: コンポーネントからの IPC / adapter factory の直接呼び出しを composable 経由にする (#1098 の凍結解消) #1258

Closed

Description

@hitalin

背景

#1098 で層依存ルールを lint 化したとき、「コンポーネントは IPC と adapter の factory を直接叩かず composable を通す」に違反する既存のコンポーネントを理由つきで凍結した。凍結数は監査時点で 73、現在は 69。凍結が残っている限り、同じ書き方が新しいコンポーネントにも写される。

やること

  • 凍結しているコンポーネントを 1 つずつ、IPC / adapter の呼び出しを composable (既に同じ用途のものがあればそれ) へ移す
  • 直したコンポーネントは lint の凍結一覧から消す (消し忘れは lint が落とす)
  • 1 PR あたり数件ずつ、同じ種類の呼び出しをまとめて進める

進め方の注意

完了条件

凍結一覧の「コンポーネントの IPC 直呼び」が空になる。

親: #1098

🤖 Generated with Claude Code

Activity

  1. self-assigned this
    on Oct 13, 2026
  2. hitalin commented on Oct 26, 2026

    @hitalin
    CollaboratorAuthor

    凍結 69 件をすべて解消した (2026-10-27、develop 1238962 / cb749e0、実機未確認)

    lint の「components は IPC / adapter factory を直接叩かない」の凍結一覧は空になり、以後は新しい違反だけが落ちる。

    寄せ方

    • Misskey の API は adapter 経由に統一した。ApiAdapter に無かったもの (クリップ / リストのお気に入り、Pages / Play / ギャラリーのいいねと更新、実績、ロール、フォローリクエスト一覧、サーバー情報と統計、Raw JSON、ap/show、チャットの書込とキャッシュ読取、任意エンドポイントの生呼び出しなど) は adapter に足した。フォークの adapter は本体の api を広げる形なので実装は Misskey 1 つ
      • カラムは共通基盤 (useColumnSetup / useNoteColumn) の initAdapter
      • ウィンドウとポップアップは useMultiAccountAdapters の forView / apiFor (従来どおりピン留めリアクションは引かず、ログイン状態どおりの adapter)
    • 手元の command は用途別の小さな composable に寄せた: クエリ購読 / アーカイブ検索 / キャッシュの統計と掃除 / バックアップ / 画像 (保存・EXIF・base64) / 内蔵 HTTP サーバーのトークンと OpenAPI / About の診断 / ログインの締め / チャットのストリームイベント
    • 落とされたファイルの URL 変換は useFileDrop、サーバー meta は servers store、常駐状態は clientLayer store へ

    挙動の差 (意図したもの)

    • 書込系は adapter の requireAuth() を通るようになり、ログアウト中はサーバーへ行かずに認証エラーになる (従来はサーバーのエラー)
    • 絵文字カラムは adapter の生成で辞書の温めも走るため、未取得のホストでは取得が 2 回になりうる (他のカラムが既に温めていれば 0 回)

    テスト

    カラムの dom テストは adapter の生成に要るサーバー情報をテストキットで先に置き、IPC の記録は従来どおり bindings のモックで見る。全テスト通過。

    実機で見てほしいところ

    • ウィンドウ系: ノート詳細 / クリップ / リスト / Page / Play / ギャラリー / プロフィールの各タブ (実績・クリップ・リスト・Pages・Play・ギャラリー・リアクション) / フォロー一覧 / アクティビティのチャート / インスペクタの Raw JSON と ActivityPub
    • カラム: チャット (送信・リアクション・削除・既読・キャッシュ表示)、ドライブ (アップロード・一括削除・書き出し)、API コンソール、照会、検索 / クライアント検索
    • ローカル: バックアップの書き出しと取り込み、キャッシュの掃除、API トークン、ライトボックスの保存、EXIF、QR コード、ログイン / ゲスト追加、デッキへのファイルドロップ (壁紙とドライブ)

    DEVELOPMENT.md の「層の依存方向」に寄せ方を書いた。実機確認が済んだら閉じる。

    🤖 Generated with Claude Code

  3. hitalin commented on Oct 26, 2026

    @hitalin
    CollaboratorAuthor

    v1.98.1 でリリースし、起動 / カラム / ウィンドウ / ログイン / パレット CLI の目視確認済み。凍結一覧は空で lint が守る。個別の不具合が出たら bug issue にする。

    🤖 Generated with Claude Code

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

Metadata

Metadata

Assignees

Labels

💚RefactorRewriting code without changing behavior

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions