Files

120 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 💜 Checkpoint List Selector (頭脳 v0.3.1)
`Checkpoint List Selector` は、リポジトリ内に存在するすべてのCheckpointを一手に統括し、状況に応じてその役割を **「3変化(サントランスフォーム)」** させる、我がシャドウガーデンの超絶進化した司令塔じゃ!
最大の特徴は、ComfyUIの常識である「ノード同士を線(ワイヤー)で繋いでジョブを実行する」という概念を完全に飛び越え、**キャンバス上の他のノードへ好きなタイミングで遠隔から情報をインジェクション(非同期通信)できる**点にあるのじゃ!
v0.2.0の特大アップデートにより、視覚的な格付け機能や、iPadでの堕落レビューを可能にする新回路が追加され、まさに敵なしの頭脳へと覚醒したぞい!
<img width="565" height="554" alt="image" src="https://github.com/user-attachments/assets/70cbe803-1cfd-43be-bff1-077a1e50c0e9" />
---
## 🔌 入出力仕様(Specifications)
### 📥 入力(Inputs)
* **`checkpoint` (必須 / STRING・カスタム一覧UI):**
管理・検分対象とするCheckpointをリストから選択する。
* *※v0.2.0のデラックス強化により、マウスホイールでの爆速スクロール、上下の矢印ボタン、そしてスクロールバーのダイレクトドラッグ掴みまで、狂おしいほど快適なUI操作をフルサポートしておるぞ!*
### 📤 出力(Outputs)
* **`ckpt_name` (COMBO互換):**
Checkpoint Loaderへ接続するための相対Checkpointパス。
* **`ckpt_name_str` (STRING):**
TaggerやImageDir Previewへ接続するための同じ相対Checkpointパス。
* **`ckpt_name_safe` (STRING):**
画像保存時のlabelなどに使える、ファイル名として安全化した文字列。
* *※この出力をどこへ「繋ぐか・繋がないか」によって、この司令塔のアビリティが3つの姿へと動的に変身(トグル)する仕様じゃ!*
---
## 🎯 覚醒する3つのモード(The Three Awakenings)
このノードの `ckpt_name_str` 出力の配線状態によって、UI上のメインボタンが自動で3変化するようになったぞい!
### 🏹 1. Push to Local List モード (スタンドアロン運用)
* **発動条件:** `ckpt_name_str` が、キャンバス上のレビュー系ノード(TaggerやPreview)に**接続されていない**場合。
* **効果:** ボタンが `🏹 Push to Local List` になる。リストで選んだモデルを、隣のタブで絶賛爆走中の `Checkpoint Name Cycler` の一時的な緊急割り込みレーン(Local List)へダイレクトに送り込むことができるぞ。
### 🎯 2. Sync Checkpoint モード (ジュークボックス棚卸し運用)
* **発動条件:** `ckpt_name_str` が、`ImageDir Preview`(目)に**接続されている**場合。(Taggerも一緒に繋がっている場合はこちらのSyncモードが優先されるぞ!)
* **効果:** ボタンが **`🎯 Sync Checkpoint`** という名の「遠隔無線スイッチ」へと覚醒する!このボタンを押した瞬間、後述する【無線通信ハック】が発動するのじゃ。
### 🌕 3. DirectLink モード (堕落の外部ソムリエ運用) 【New!】
* **発動条件:** `ckpt_name_str` が、`Checkpoint Status Tagger`(右手)に**直接のみ(ImageDir Previewなしで)**接続されている場合。
* **効果:** ボタンの姿が **`🌑 DirectLink OFF` / `🌕 DirectLink ON`** へと変貌する!
これをONにすれば、おぬしはiPadや外部の画像ビューア、あるいは共有フォルダでフルスクリーン画像をニヤニヤ眺めながら、手元のSelectorをポチポチ切り替えるだけで、Taggerの格付け標的(ターゲット)をリアルタイムに無線同期・追従させることができるのじゃ!寝転がりながらベッドの上で棚卸しができる、堕落の極みアビリティじゃな!
---
## 💎 v0.2.0での超絶グラフィック&操作性強化(Features)
ただ機能が増えただけではない!見た目も操作性もデラックスにお祭り騒ぎじゃ!
* **👑 リスト内ステータスアイコンの常時展開:**
リストの横に、現在の格付け状態(👑 / 💛 / 👍 / ✔ / 🗑)がリアルタイムに表示されるようになったぞ!未分類のやつら(—)の中に紛れる神モデルが一目で判別できるわい。
* **👑 【神機能】サイドカーサムネイルのホバーポップアップ:**
Checkpointの代表サムネイル(.jpgなど)が存在する場合、リストの行にマウスをふっと乗せる(ホバーする)だけで、画面にサムネイルがヒュンッと浮かび上がるようになったのじゃ!いちいちSyncボタンを押さずとも、現在の選択状態に合わせてサムネイルが美しくポップアップする、超・洒落た機能じゃぞ!
* **👑 鉄壁の `🔄 Refresh All` 同期:**
新モデルを追加したりパージした後は、このボタンを一発ポチじゃ。ComfyUIの再起動を一切要求せず、1秒で全グラフのコンボボックスと Patched Class を最新状態へ引きずり戻して追従させるぞい!
---
## 🧠 技術的深淵:【配線なき遠隔無線通信(Wireless Event Injection)】
### なぜ、ジョブを1ミリも実行(Queue)していないのに、別タブの生成ラインを邪魔せずに過去画像を瞬時に呼び出せるのか?
ComfyUIの標準的な設計において、ノードからノードへデータを渡すには、必ずキャンバス上でスパゲッティのように配線(ワイヤー)を繋がねばならん。そして、その線を通じてデータが流れるのは、「プロンプトサーバーにジョブが登録(Queue)され、上流から順番に処理が実行されたその瞬間」だけじゃ。
もし、過去のCheckpointをレビュー(棚卸し)するためにいちいち配線を繋いでジョブを実行していたら、
* **「今まさに裏で500件の夜間バッチを全力疾走させている生成ライン」のキューに割り込んでしまい、生成パイプラインが空中衝突して大破壊される**
* レビューしたいモデルを切り替えるたびに、わざわざ中身のないダミーのジョブを実行せねばならず、恐ろしくテンポが悪い
という地獄のような制限が課せられてしまう。
これをエレガントに粉砕するために、`Checkpoint List Selector` に搭載されたのが、配線を一切使わずに情報を飛ばす **「遠隔無線通信(フロントエンド・非同期イベント)」** 技術じゃ!
```
【従来の有線接続(シリアル処理)】
[Selector] ═════(配線)═════> [Preview/Tagger]
↓
ジョブを実行(Queue)して、順番が回ってくるまでデータが一切流れない!
裏で走っている別の生成ジョブを破壊してしまう!
【HandpickerSuiteの無線ハック(非同期処理)】
[Selector] [Preview/Tagger]
│ ▲
└─ (非同期API / JS Event) ──┘ ⚡【配線なしで直接パルスを送信!】
ジョブの実行(Queue)は一切不要!
ComfyUIの「UI(画面)だけを間借り」して、裏の生成ラインを1ミリも邪魔せずに、
好きなタイミングでピンポイントにモデル情報だけを裏から送り込む!
```
`🎯 Sync Checkpoint` ボタンを押したその瞬間、あるいは `DirectLink` をONにしてリストをカチカチ切り替えたその瞬間、このノードはComfyUIのグラフ実行システムを完全にバイパス(黙殺)する。
**ジョブのキューを1件も積むことなく、フロントエンド(JavaScript)のカスタムイベントを通じて、接続されたTaggerやPreviewの網膜(DOM)へ直接「このモデルを表示せよ!」「このモデルの過去画像を逆探知せして展開せよ!」というパルス(信号)をワイヤレスでブチ込む**のじゃ!
これにより、メインブラウザ(タブA)で何百件ものAI画像をノンストップで量産させ続けたまま、別ブラウザ(タブB)でこのSelectorを優雅にポチポチ操作し、ComfyUIのインターフェースだけを贅沢に間借りして、SSDの中身を冷徹に仕分けるという「夢の並列棚卸しワークフロー」が完全実現したのじゃよ!
*(※もちろん、この無線パルスは `HPS_TAB_ID` によってタブごとに完璧に隔離(時空隔離)されているため、別タブのSelectorをどれだけ連打しようが、隣で爆走中の生成タブ側の挙動を破壊することは絶対にないから安心されよ!)*
---
## ⚡ おまけ:有線接続の挙動について(一応の補足)
「じゃあ、このノードを普通の有線ノードとして、そのままKSamplerのモデル読み込みに繋いだらどうなるのじゃ?」と思う勘のいいハッカーもおるかもしれん。
結論から言うと、**普通に動作するぞ。** その場合は一般的なCheckpoint選択ノードと全く同じように、ジョブ実行時にその瞬間に選ばれているCheckpointのパスが静的に流れる仕様じゃ。
じゃがな……そんな普通の有線運用をするくらいなら、標準のノードを使えば良い話!
この `Checkpoint List Selector` の真の価値は、**「線を繋がずに時空を超えて情報をインジェクションする無線運用」** にこそある。我がシャドウガーデンの団員たるもの、ぜひこのスマートな無線棚卸しモード(Sync Checkpoint)や、iPad直結のDirectLinkの快感を骨の髄まで味わってくりゃれ!
## 宣伝画像
<img width="1086" height="1448" alt="CheckpointListSelector説明画像" src="https://github.com/user-attachments/assets/8ef1e6b8-1488-4905-8f95-d73519d088b0" />