diff --git a/doc/CheckpointListSelector.md b/doc/CheckpointListSelector.md index 28ad53e..18eb0f6 100644 --- a/doc/CheckpointListSelector.md +++ b/doc/CheckpointListSelector.md @@ -1,12 +1,13 @@ -# 💜 Checkpoint List Selector (頭脳) +# 💜 Checkpoint List Selector (頭脳 v0.2.0) -`Checkpoint List Selector` は、リポジトリ内に存在するすべてのCheckpointを一手に統括し、状況に応じてその役割を美しく変化させる「シャドウガーデンの司令塔」じゃ。 +`Checkpoint List Selector` は、リポジトリ内に存在するすべてのCheckpointを一手に統括し、状況に応じてその役割を **「3変化(サントランスフォーム)」** させる、我がシャドウガーデンの超絶進化した司令塔じゃ! -最大の特徴は、ComfyUIの常識である「ノード同士を線(ワイヤー)で繋ぐ」という概念を飛び越え、**キャンバス上の他のノードへ好きなタイミングで遠隔から情報をインジェクション(無線通信)できる**点にあるのじゃ! +最大の特徴は、ComfyUIの常識である「ノード同士を線(ワイヤー)で繋いでジョブを実行する」という概念を完全に飛び越え、**キャンバス上の他のノードへ好きなタイミングで遠隔から情報をインジェクション(非同期通信)できる**点にあるのじゃ! + +v0.2.0の特大アップデートにより、視覚的な格付け機能や、iPadでの堕落レビューを可能にする新回路が追加され、まさに敵なしの頭脳へと覚醒したぞい! image - --- ## 🔌 入出力仕様(Specifications) @@ -15,23 +16,19 @@ * **`checkpoint` (必須 / COMBO):** 管理・検分対象とするCheckpointをリストから選択する。 -* *※このリストはマウスホイールでのスクロール、矢印ボタン、スクロールバーのドラッグなど、極めて快適なUI操作をフルサポートしておるぞ。* - - +* *※v0.2.0のデラックス強化により、マウスホイールでの爆速スクロール、上下の矢印ボタン、そしてスクロールバーのダイレクトドラッグ掴みまで、狂おしいほど快適なUI操作をフルサポートしておるぞ!* ### 📤 出力(Outputs) * **`ckpt_name_str` (STRING):** 現在選択されているCheckpointのファイルパス文字列。 -* *※この出力を他のノードに「繋ぐか・繋がないか」によって、ノードのアビリティが動的にトグル(変身)する仕様じゃ!* - - +* *※この出力をどこへ「繋ぐか・繋がないか」によって、この司令塔のアビリティが3つの姿へと動的に変身(トグル)する仕様じゃ!* --- -## 🎯 覚醒する2つのモード(Dynamic Mode Switching) +## 🎯 覚醒する3つのモード(The Three Awakenings) -このノードの `ckpt_name_str` 出力の配線状態によって、UI上のメインボタンが自動で切り替わるのじゃ。 +このノードの `ckpt_name_str` 出力の配線状態によって、UI上のメインボタンが自動で3変化するようになったぞい! ### 🏹 1. Push to Local List モード (スタンドアロン運用) @@ -40,9 +37,28 @@ ### 🎯 2. Sync Checkpoint モード (ジュークボックス棚卸し運用) -* **発動条件:** `ckpt_name_str` が、`Checkpoint Status Tagger` や `ImageDir Preview` に**接続されている**場合。 +* **発動条件:** `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)】 @@ -75,13 +91,12 @@ ComfyUIの標準的な設計において、ノードからノードへデータ ジョブの実行(Queue)は一切不要! ComfyUIの「UI(画面)だけを間借り」して、裏の生成ラインを1ミリも邪魔せずに、 好きなタイミングでピンポイントにモデル情報だけを裏から送り込む! - ``` -`🎯 Sync Checkpoint` ボタンを押したその瞬間、このノードはComfyUIのグラフ実行システムを完全にバイパス(黙殺)する。 -**ジョブのキューを1件も積むことなく、フロントエンド(JavaScript)のカスタムイベントを通じて、接続されたTaggerやPreviewの網膜(DOM)へ直接「このモデルを表示せよ!」「このモデルの過去画像を逆探知せよ!」というパルス(信号)をワイヤレスでブチ込む**のじゃ! +`🎯 Sync Checkpoint` ボタンを押したその瞬間、あるいは `DirectLink` をONにしてリストをカチカチ切り替えたその瞬間、このノードはComfyUIのグラフ実行システムを完全にバイパス(黙殺)する。 +**ジョブのキューを1件も積むことなく、フロントエンド(JavaScript)のカスタムイベントを通じて、接続されたTaggerやPreviewの網膜(DOM)へ直接「このモデルを表示せよ!」「このモデルの過去画像を逆探知せして展開せよ!」というパルス(信号)をワイヤレスでブチ込む**のじゃ! -これにより、メインブラウザ(タブA)で何百件ものAI美女をノンストップで量産させ続けたまま、別ブラウザ(タブB)でこのSelectorを優雅にポチポチ操作し、ComfyUIのインターフェースだけを贅沢に間借りして、SSDの中身を冷徹に仕分けるという「夢の並列棚卸しワークフロー」が完全実現したのじゃよ! +これにより、メインブラウザ(タブA)で何百件ものAI画像をノンストップで量産させ続けたまま、別ブラウザ(タブB)でこのSelectorを優雅にポチポチ操作し、ComfyUIのインターフェースだけを贅沢に間借りして、SSDの中身を冷徹に仕分けるという「夢の並列棚卸しワークフロー」が完全実現したのじゃよ! *(※もちろん、この無線パルスは `HPS_TAB_ID` によってタブごとに完璧に隔離(時空隔離)されているため、別タブのSelectorをどれだけ連打しようが、隣で爆走中の生成タブ側の挙動を破壊することは絶対にないから安心されよ!)* @@ -93,9 +108,8 @@ ComfyUIの標準的な設計において、ノードからノードへデータ 結論から言うと、**普通に動作するぞ。** その場合は一般的なCheckpoint選択ノードと全く同じように、ジョブ実行時にその瞬間に選ばれているCheckpointのパスが静的に流れる仕様じゃ。 じゃがな……そんな普通の有線運用をするくらいなら、標準のノードを使えば良い話! -この `Checkpoint List Selector` の真の価値は、**「線を繋がずに時空を超えて情報をインジェクションする無線運用」** にこそある。我がシャドウガーデンの団員たるもの、ぜひこのスマートな無線棚卸しモード(Sync Checkpoint)の快感を骨の髄まで味わってくりゃれ! +この `Checkpoint List Selector` の真の価値は、**「線を繋がずに時空を超えて情報をインジェクションする無線運用」** にこそある。我がシャドウガーデンの団員たるもの、ぜひこのスマートな無線棚卸しモード(Sync Checkpoint)や、iPad直結のDirectLinkの快感を骨の髄まで味わってくりゃれ! ## 宣伝画像 CheckpointListSelector説明画像 - diff --git a/doc/CheckpointNameCycler.md b/doc/CheckpointNameCycler.md index 7be0159..1868922 100644 --- a/doc/CheckpointNameCycler.md +++ b/doc/CheckpointNameCycler.md @@ -1,12 +1,12 @@ -# 🤎 Checkpoint Name Cycler (心臓) +# 🤎 Checkpoint Name Cycler (心臓 v0.2.0) `Checkpoint Name Cycler` は、本Suiteの「動力を司る心臓」じゃ。 大量の生成ジョブをバックグラウンドで走らせながら、Checkpoint(.safetensors)を指定したルールに基づいて全自動で切り替え、KSamplerへインジェクション(注入)し続ける役割を担っておる。 +v0.2.0のアップデートでは、巡回アルゴリズム自体の根本的な破壊変更はない(なぜなら最初から完成されていたからじゃ!)。じゃが、絶対神 `god! (👑)` を含む新ステータスフィルターへの完全追従に加え、**「ブラウザをリロードしたりComfyUIを再起動しても、ノード上でポチポチ設定したフィルター状態や巡回モードがしっかり復元される(Restore-safe Runtime Controls)」**という、地味ながらも長時間のお祭り(運用)には欠かせない極めて強力な安定性向上が図られておるぞ! image - --- ## 🔌 入出力仕様(Specifications) @@ -14,29 +14,27 @@ ### 📥 入力(Inputs) * **`start_checkpoint` (必須 / COMBO):** -巡回を開始する基準となるCheckpoint(または `fixed` モード時に固定するCheckpoint)を選択する. +巡回を開始する基準となるCheckpoint(または `fixed` モード時に固定するCheckpoint)を選択する。 * **`mode` (必須 / COMBO):** Checkpointの巡回アルゴリズムを選択する(詳細は後述)。 * 設定値:`fixed` / `increment` / `randomize` / `shuffle_once` - * **`change_every` (必須 / INT):** -同じCheckpointを「何回のジョブ(Queue)の間維持するか」を設定する(デフォルト: `1`). -* *※Local Listの処理中は、この値は無視されて必ず1回ずつ消費されるぞ。* - +同じCheckpointを「何回のジョブ(Queue)の間維持するか」を設定する(デフォルト: `1`)。 +* *※Local Listの割り込み処理中は、この値は無視されて必ず1回ずつ消費されるぞ。* * **`hps_tab_id` (非表示 / STRING):** -ブラウザのタブを識別し、マルチタブ間での独立した巡回制御(時空隔離)を実現するための固有ID. +ブラウザのタブを識別し、マルチタブ間での独立した巡回制御(時空隔離)を実現するための固有ID。 ### 📤 出力(Outputs) * **`ckpt_name` (COMBO):** 現在選択(解決)されたCheckpointの名前。 -ざっくり言ってしまえば、これを今使っているワークフローの`チェックポイントを読み込む`に渡してやるだけで、簡単に今のワークフローに巡回機能を与えることが出来るのじゃ! +ざっくり言ってしまえば、これを今使っているワークフローの `Load Checkpoint(チェックポイントを読み込む)` の入力に繋いでやるだけで、既存のスパゲッティ配線を1ミリも壊さずに全自動巡回システムを寄生(アドオン)させることができるのじゃ! * **`ckpt_name_str` (STRING):** 現在選択されたCheckpointのファイルパス文字列(TaggerやPreviewへの動的バインド用)。 * **`ckpt_name_safe` (STRING):** -ファイル名として安全に使用できるよう、記号や拡張子を除去・置換した文字列。`SaveImage` ノードのプリフィックス等に繋ぐことで、出力ファイル名に自動でモデル名が刻まれるぞ! +ファイル名として安全に使用できるよう、記号や拡張子を除去・置換した文字列。`SaveImage` ノードのプリフィックス等に繋ぐことで、出力ファイル名に自動でモデル名が美しく刻まれるぞ! --- @@ -44,32 +42,32 @@ Checkpointの巡回アルゴリズムを選択する(詳細は後述)。 ### 1. `fixed` (固定モード) -一般的なCheckpoint選択ノードと同じ挙動じゃ. +一般的なCheckpoint選択ノードと同じ挙動じゃ。 -* `start_checkpoint` で選んだモデルを常に使い続ける. -* 後述の「ステータスフィルター」を設定していても、このモードでは**フィルターは完全に無視**される。 -* リフレッシュによって選択中のモデルが物理消滅した場合は、安全のために自動で存在する有効なモデルへフォールバックするぞ。 +* `start_checkpoint` で選んだモデルを常に使い続ける。 +* ノード上に表示されているステータスフィルター(👑や💛など)のボタンをオンにしても、このモードでは**フィルターは完全に無視**される。一点突破じゃ! +* リフレッシュによって選択中のモデルが物理消滅した場合は、エラーで墜落させず、安全のために自動で「現在存在する有効なモデル」へフォールバックするタフな仕様じゃぞ。 ### 2. `increment` (順次巡回モード) -ソートされたモデル一覧を、ジョブごとに1つずつ順番に進めていく王道のモードじゃ. +ソートされたモデル一覧を、ジョブごとに1つずつ順番に進めていく王道のモードじゃ。 * フィルターが設定されている場合、フィルター条件に一致するモデルだけを自動で検索し、一致しないモデルはインデックスをマッハでスキップ(飛ばして進む)する。 * 途中でフィルター条件を変更しても、現在の巡回インデックス(どこまで進んだか)がリセットされることはない安心設計じゃ。 ### 3. `randomize` (ランダムモード) -現在存在するモデル(またはフィルターに一致したモデル群)の中から、毎回完全にランダムで1つをチョイスする. +現在存在するモデル(またはフィルターに一致したモデル群)の中から、毎回完全にランダムで1つをチョイスする。 * 重複(連続で同じモデルが選ばれること)を許容する。 -* 山札から取り除くような概念(スキップやデッキ挙動)はないぞ。 +* 山札から取り除くような概念(スキップやデッキ挙動)はないぞ。ひたすらサイコロを振るのじゃ! ### 4. `shuffle_once` (一期一会モード) ★超推奨★ -現在存在するすべてのモデルをシャッフルし、「1枚の特製山札(デッキ)」を内部で構築するモードじゃ! +現在存在するすべてのモデルをシャッフルし、「1枚の特製山札(グローバルデッキ)」を内部で構築するモードじゃ! * 登録されたモデルを**重複なしで1回ずつすべて引き切るまで**巡回を続ける。 -* フィルターは「山札からカードを引いたその瞬間」に適用される。もし引いたカードがフィルターに合致しなければ、そのカードは破棄(スキップ)されて次のカードを引く。 +* フィルターは「山札からカードを引いたその瞬間」に動的適用される。もし引いたカードが現在のフィルターに合致しなければ、そのカードは破棄(消費)されて即座に次のカードを引く! * 山札のカードをすべて引ききって空(Empty)になった瞬間、自動で再び全モデルを含んだ新しい山札がシャッフル生成される仕様じゃ。 --- @@ -80,7 +78,7 @@ Checkpointの巡回アルゴリズムを選択する(詳細は後述)。 従来の一般的なComfyUIカスタムノードや標準機能では、ユーザーが `Queue Prompt`(ジョブ実行)ボタンを押した「その瞬間」に、どのCheckpointを読み込むかというパス情報が静的に確定し、プロンプトサーバーのキュー(待ち行列)の中にそのままカチコチのデータとして積まれてしまう。 -この設計だと、ジョブが実行されている最中にモデルを削除したり、Selector側で「 Refresh All」を押してモデル一覧を動的に同期させた場合、**すでに待ち行列(キュー)の中に積まれてしまっている古いパス情報との間で深刻な不整合(データの矛盾)が発生し、キャッシュが壊れてComfyUIが墜落(クラッシュ)してしまう**のじゃ。 +この設計だと、ジョブが実行されている最中にモデルを削除したり、Selector側で「🔄 Refresh All」を押してモデル一覧を動的に同期させた場合、**すでに待ち行列(キュー)の中に積まれてしまっている古いパス情報との間で深刻な不整合(データの矛盾)が発生し、キャッシュが壊れてComfyUIが墜落(クラッシュ)してしまう**のじゃ。 これを美しく粉砕したのが、本Suiteの誇る **「実行時遅延解決(Lazy Resolution)」** アーキテクチャじゃ! @@ -94,7 +92,6 @@ Checkpointの巡回アルゴリズムを選択する(詳細は後述)。 [ジョブ登録時] ── 📦 「Cyclerを実行せよ」という空のコンテナだけをキューに積む ↓ (この間に別タブでリフレッシュやタグ打ちを行っても……) [KSampler実行直前] ── 🎯 その一瞬の「最新の内部状態」を参照して、Checkpoint名を動的に解決・注入! - ``` `Checkpoint Name Cycler` は、ジョブが積まれた時点ではCheckpointのパスを固定しない。 diff --git a/doc/CheckpointStatusTagger.md b/doc/CheckpointStatusTagger.md index 4988035..c8dfd1f 100644 --- a/doc/CheckpointStatusTagger.md +++ b/doc/CheckpointStatusTagger.md @@ -1,9 +1,11 @@ -# 💛 Checkpoint Status Tagger (右手) +# 💛 Checkpoint Status Tagger (右手 v0.2.0) `Checkpoint Status Tagger` は、出力された画像を見ながら、そのモデルに対して冷徹かつ瞬時に格付け(ステータスタグ打ち)を行う「シャドウガーデンの執行官」じゃ。 最大の特徴は、不要と判断したモデルをその場ですぐに物理削除(消去)せず、一旦「削除予約(Delete Reservation)」という安全なバッファ状態に留める設計にあるのじゃ。 +v0.2.0のアップデートでは、ついに最上位の絶対神ステータス `god! (👑)` が降臨!さらに、**「不要モデルを消す際に、邪魔なサムネイル画像(.jpgなど)も一緒に消し去ってくれる」**という超絶便利な機能まで手に入れてしまったぞい! + image --- @@ -15,9 +17,7 @@ * **`ckpt_name_str` (必須 / STRING):** 格付け対象とするCheckpointのファイルパス文字列。 * `Checkpoint Name Cycler` の同名出力から繋げば「今まさにその画像を吐き出しているモデル」が対象となり、 -* `Checkpoint List Selector` から繋げば「今画面で目視検分しているモデル」が対象となるぞ。 - - +* `Checkpoint List Selector` から繋げば「今画面で目視検分しているモデル」、あるいは「タブレットのDirectLinkで外部レビュー中のモデル」が対象となるぞ。 ### 📤 出力(Outputs) @@ -26,19 +26,20 @@ --- -## 🎛 4つの格付けボタン(Status Toggles) +## 🎛 5つの格付けボタン(Status Toggles) -ノード上には4つのステータスボタンが並んでおる。これらは「トグル(もう一度押すと解除)」で切り替わるぞ。 +ノード上にはおぬしの魂を込める5つのステータスボタンが並んでおる。これらは「トグル(もう一度押すと解除して `none` に戻る)」で切り替わるぞ。 -1. **`favorite (💛)`** ── 最上級の神モデル。 Cyclerの狙い撃ちフィルター対象じゃ。 -2. **`nice (👍)`** ── 実用的な良モデル。これもフィルターで優遇できるぞ。 -3. **`keep (✔)`** ── 保留・キープ。とりあえず延命させる通常モデルじゃ。 -4. **`delete (🗑)`** ── **削除予約。** SSDの闇へと葬るための烙印じゃ。 +1. **`god! (👑)`** ── 絶対神!殿堂入り!未来永劫守り抜く最強のモデルじゃ! 【New!】 +2. **`favorite (💛)`** ── お気に入り!よく使うエース級。Cyclerの狙い撃ちフィルター対象じゃ。 +3. **`nice (👍)`** ── 実用的な良モデル。これもフィルターで優遇できるぞ。 +4. **`keep (✔)`** ── 保留・キープ。とりあえず延命させる通常モデルじゃ。 +5. **`delete (🗑)`** ── **削除予約。** SSDの闇へと葬るための処刑宣告じゃ。 ### 🛡️ 誤爆を100%防ぐ「右手の誇り(排他制御)」 本ノードには、うっかりミスで神モデルを消し去らぬよう、鉄壁のバリデーションが組まれておる。 -**`favorite(💛)` / `nice(👍)` / `keep(✔)` のいずれかが点灯している(有効な)状態のときは、`delete(🗑)` ボタンはフロントエンド側で物理的にグレーアウトして押せなくなり、バックエンド(Pythonサーバー)側でも削除キューへの追加を絶対に弾く仕様**になっておるのじゃ! +**`god!(👑)` / `favorite(💛)` / `nice(👍)` / `keep(✔)` のいずれかが点灯している(有効な)状態のときは、`delete(🗑)` ボタンはフロントエンド側で物理的にグレーアウトして押せなくなり、バックエンド(Pythonサーバー)側でも削除キューへの追加を絶対に弾く仕様**になっておるのじゃ! 削除予約をするには、必ず現在のプラス評価を一度オフ(`none`)にするステップを踏まねばならん。右手の誇りにかけて、おぬしの推しモデルを全力で守護するぞ! --- @@ -53,7 +54,7 @@ しかし、その直後に別のプロンプト(ジョブ)で、**文字通り脳が吹き飛ぶほどの「奇跡の神絵」をそのモデルが吐き出す瞬間**が訪れるかもしれない。 もし即座に物理削除されていたら、その奇跡を目撃することはできず、神モデルは永遠に失われていた。 -「削除予約」という猶予状態にしておくことで、「さっきは削除タグを打ったが、この神絵を見たからにはやっぱり `keep` や `favorite` に戻すのじゃ!」という、神の指先によるジャッジの覆しが、いつでも1クリックでノーリスクに執行できるようになるのじゃよ! +「削除予約」という猶予状態にしておくことで、「さっきは削除タグを打ったが、この神絵を見たからにはやっぱり `keep` や `god!` に戻すのじゃ!」という、神の指先によるジャッジの覆しが、いつでも1クリックでノーリスクに執行できるようになるのじゃよ! ### 💻 2. 技術面の理由:【OSのファイルロック回避 & ジョブ安全性】 @@ -72,7 +73,6 @@ ComfyUI(Python)がまさに現在処理(KSamplerなどで生成)を行 【HandpickerSuiteの削除予約システム(安全・堅牢)】 [Taggerで🗑を押す] ── 📝 テキストの予約キュー(JSONL)にメモるだけ。生成ラインは1ミリも止まらない! [全てのジョブ完了] ── 🌅 週末などに安全なタイミングで、専用スクリプトから対話的に一括物理執行! - ``` ゆえに、本Suiteは生成ラインの稼働中にストレージへ一切の暴力を振るわない。 @@ -86,16 +86,14 @@ ComfyUI(Python)がまさに現在処理(KSamplerなどで生成)を行 夜間バッチや選別作業がすべて終わり、安全なタイミング(朝や週末など)になったら、おぬしの手でSSDの容量を完全に解放(パージ)してくりゃれ。 -1. ターミナル(コンソール)を開き、本Suiteのディレクトリ内に自動生成されている以下のスクリプトを実行するのじゃ。 +1. ターミナル(コンソール)を開き、出力先ディレクトリ(`ComfyUI/output/CheckpointHandpickerSuite/delete_scripts/`)に自動生成されている以下のスクリプトを実行するのじゃ。(※v0.2.0から出力場所がテンポラリから出力フォルダ側へ安全に移設されたぞ!) ```bash -python delete_reserved_checkpoints.py - +python ComfyUI/output/CheckpointHandpickerSuite/delete_scripts/delete_reserved_checkpoints.py ``` - -2. スクリプトが起動すると、削除予約リストから1件ずつモデルのパス、および紐づいている `.json`(メタデータやLoRA設定ファイル等)を自動検知して画面に表示し、**`Delete this checkpoint? (y/N):`** と最終確認を迫ってくるぞ。 +2. スクリプトが起動すると、削除予約リストから1件ずつモデルのパス、紐づいている `.json`(メタデータ等)、そして **なんとサイドカーサムネイル画像(.jpg / .png など)まで自動検知** して画面に表示し、**`Delete this checkpoint? (y/N):`** と最終確認を迫ってくるぞ!チリひとつ残さぬ徹底ぶりじゃ! 3. **本当に不要なら `y` を、やっぱり残したくなったら `n` を押すのじゃ!**(ここで心変わりしてもセーフじゃ!) -4. 物理削除が完了したら、ComfyUIの画面に戻って Selector の **`Refresh All`** ボタンをポチッと一発叩くのじゃ。それだけで、空き容量ができた最新のストレージ状態が再起動なしで一瞬でシステムへ反映されるぞ! +4. 物理削除が完了したら、ComfyUIの画面に戻って Selector の **`🔄 Refresh All`** ボタンをポチッと一発叩くのじゃ。それだけで、空き容量ができた最新のストレージ状態が再起動なしで一瞬でシステムへ反映されるぞ! ## 宣伝画像 diff --git a/doc/EphemeralPreview.md b/doc/EphemeralPreview.md index 7552613..f08e2b7 100644 --- a/doc/EphemeralPreview.md +++ b/doc/EphemeralPreview.md @@ -1,4 +1,4 @@ -# 💙 Ephemeral Preview (泡沫プレビュー) +# 💙 Ephemeral Preview (泡沫プレビュー v0.2.0) `Ephemeral Preview` は、現在バックグラウンドで爆走している生成ラインの中間画像を受け取り、リアルタイムで画面に表示するための「シャドウガーデンの網膜(目)」じゃ。 @@ -45,13 +45,13 @@ ComfyUIの標準的な `PreviewImage` ノードや、多くの一般的なプレ (何千回も繰り返すとSSDの寿命がモリモリ削れる!) 【HandpickerSuiteの泡沫ハック(オンメモリ・SSD負担ゼロ)】 - [画像データ] ──> 🧠 メモリ上で高速にWebPバイナリ化 ──> ⚡ WebSocketで直接フロントエンドに射出! + [画像データ] ──> 🧠 メモリ上で高速にWebPやJPEGのバイナリ化 ──> ⚡ WebSocketで直接フロントエンドに射出! (ファイル書き出しは 0回! SSDへのダメージは完全にゼロ!) ``` `Ephemeral Preview` は、画像データを受け取っても、**ハードディスクやSSDなどの物理ストレージには一切ファイルを書き込まない。** -データを受け取ったその場で、すべてメインメモリ(RAM)およびVRAM上だけで処理を行い、高圧縮かつ軽量な **WebPフォーマットのバイナリデータ** へとインメモリで瞬間変換するのじゃ! +データを受け取ったその場で、すべてメインメモリ(RAM)およびVRAM上だけで処理を行い、高圧縮かつ軽量なバイナリデータへとインメモリで瞬間変換するのじゃ! そして、その生のバイナリデータを、ComfyUIの常時接続通信路である **WebSocket(ウェブソケット)のパルスに乗せて、ブラウザ側のノードの網膜(DOM)へとダイレクトに直接射出(ブロードキャスト)する** のじゃよ! @@ -70,7 +70,7 @@ ComfyUIの標準的な `PreviewImage` ノードや、多くの一般的なプレ ジョブの実行中、この `Ephemeral Preview` はもう一つのスマートな隠しアビリティを発動する。 隣の `Checkpoint Name Cycler` がジョブを執行した際、フロントエンドの「そのタブ限定の実行状態(Tab-Local State)」へと、最後に処理したCheckpointの名前がこっそり書き込まれる。 -`Ephemeral Preview` はブラウザ側でその状態をキャッチし、プレビューの最上部に **`Preview : model.safetensors`** という形で、今まさに画像を吐き出しているモデルの名前を美しくラベリング表示してみせるのじゃ! +`Ephemeral Preview` はブラウザ側でその状態をキャッチし、プレビューの最上部に **`Preview : 👑 god! model.safetensors`** (v0.2.0から絶対神ステータスにも対応!)といった形で、今まさに画像を吐き出しているモデルの名前と格付けアイコンを美しくラベリング表示してみせるのじゃ! > **⚠️ 注意:** > このラベリングは、あくまでフロントエンド(画面上)の表示を分かりやすくするための「ディスプレイ限定のオチ(表示用の残像)」じゃ。 diff --git a/doc/HOW_TO_USE.ja.md b/doc/HOW_TO_USE.ja.md index fb1ff08..82c9649 100644 --- a/doc/HOW_TO_USE.ja.md +++ b/doc/HOW_TO_USE.ja.md @@ -1,161 +1,193 @@ -# 📖 /doc/HOW_TO_USE.ja.md (のじゃのじゃ確定版) +```python +markdown_content = """# 📖 HOW_TO_USE.ja.md (大祭囃子・のじゃのじゃ確定版 v0.2.0) # 🖥️ 使用方法(How to Use) -我がシャドウガーデンの陰の叡智へようこそ。 -ここでは、あなたのComfyUI環境を「豪華なジュークボックス」へと変貌させるための、具体的な運用手順を解説するぞ! +我がシャドウガーデンの陰の叡智へようこそ!🏮✨ +ここでは、おぬしのComfyUI環境を「極上のAIアート・ジュークボックス」へと変貌させるための、具体的な運用手順をド派手に解説するぞ! --- -## 💿 インストール方法 +## 💿 インストール方法(神輿の準備じゃ!) ターミナルを開き、ComfyUIのカスタムノード用ディレクトリにて以下のコマンドを実行するのじゃ! ```bash cd ComfyUI/custom_nodes -git clone https://github.com/ruminar/ComfyUI-CheckpointHandpickerSuite.git +git clone [https://github.com/ruminar/ComfyUI-CheckpointHandpickerSuite.git](https://github.com/ruminar/ComfyUI-CheckpointHandpickerSuite.git) ``` -クローンが完了したら、ComfyUIを起動(または再起動)されよ! +クローンが完了したら、ComfyUIを再起動して祭りの準備を整えられよ! --- ## 🎼 一番簡単な使い方:【Checkpoint 巡回モード】 -### ── SSDに眠る無数の名盤を、全自動で連続演奏せよ! +### ── SSDに眠る無数の名盤を、全自動でノンストップ演奏せよ! -まずは基本じゃ!眠っているCheckpointたちを自動で次々に試すための「自動巡回ライン」を構築するぞ。 +まずは基本じゃ!眠っているCheckpointたちを自動で次々に試すための「自動巡回ライン」を構築するぞい。 -1. 今使っている、画像生成用のワークフローを開きます。(この導入のために、新しい専用ワークフローを組む必要はまったくないぞ!) -2. キャンバスに **`Checkpoint Name Cycler`(心臓)** を配置する。 -3. `ckpt_name` 出力を、`CheckpointLoaderSimple(チェックポイントを読み込む)` の `ckpt_name` 入力へ接続する。 -4. `ckpt_name_safe` 出力を、`SaveImage(画像を保存)` の `filename_prefix(ファイル名_プリフィックス)` へ接続する。 -* *※他の文字列結合(String Function等)を挟んでも良いが、出力ファイル名に `ckpt_name_safe` が含まれるように工夫するのが、後からの逆探知を成功させるコツじゃ!* +1. 今使っている、画像生成用のワークフローを開くのじゃ。(この導入のために、新しい専用ワークフローを組む必要はまったくないぞ!) +2. キャンバスに **`Checkpoint Name Cycler`(心臓)** をドンと配置する! +3. `ckpt_name` 出力を、`CheckpointLoaderSimple(チェックポイントを読み込む)` の `ckpt_name` 入力へ繋ぐ。 +4. `ckpt_name_safe` 出力を、`SaveImage(画像を保存)` などの `filename_prefix(ファイル名_プリフィックス)` または `label` へ接続する! +* *※出力されるファイル名やフォルダ名に `ckpt_name_safe` が含まれるように工夫するのが、後からの「ImageDir Preview」での逆探知を成功させる絶対のコツじゃ!* -5. Cyclerノードの `mode` を **`shuffle_once`** に設定し、あとはおぬしの好きな数(100件でも500件でも!)だけジョブをプロンプトサーバーに登録(Queue)するのじゃ! -**🏆 執行結果:** -システムが勝手にCheckpointの山を巡回し、様々な画像が「Checkpointの名前付き」で出力フォルダへザクザクと保存されていくぞ! +5. Cyclerノードの `mode` を **`shuffle_once`** に設定し、あとはおぬしの好きな数(100件でも500件でも!)だけジョブをプロンプトサーバーに登録(Queue)してぶっ放すのじゃ! + +**🏆 執行結果:** システムが勝後にCheckpointの山を巡回し、様々な画像が「Checkpointの名前付き」で出力フォルダへザクザクと保存されていくぞ!寝て起きる頃には宝の山じゃ! ### 💡 賢者の応用ハック:【擬似XYプロット(厳密なモデル比較)モード】 + プロンプトの `KSampler` の `seed`(シード値)を `fixed(固定)` に設定した状態で、この巡回ジョブを走らせてやりゃれ! -すると、構図やポーズを完全に固定したまま、Checkpointの違いによる絵柄の変化だけを1枚ずつ忠実にパフォーミング(比較)できるぞ。 + +すると、構図やポーズを完全に固定したまま、Checkpointの違いによる絵柄の変化だけを1枚ずつ忠実に比較できるぞ。 + 別タブの `ImageDir Preview` で大画面切り替え検分を行えば、重いXYプロットノードを組むよりも遥かにスマートに、最高峰のモデルソムリエ(格付け)が執行できるのじゃ! --- -## ☺ ちょっと便利な使い方:【Checkpoint 監視モード】 +## ☺ ちょっと便利な使い方:【Checkpoint 監視・司令モード】 ### ── 再起動の苦行を粉砕し、割り込み予約を執行せよ! -1. 先ほど構築した自動巡回ラインに、**`Checkpoint List Selector`(頭脳)** を配置する。 +1. 先ほど構築した自動巡回ラインの横に、**`Checkpoint List Selector`(頭脳)** を配置する。 * *※この Selector は配置するだけでよく、どこにもリンクを繋ぐ必要はないぞ!* + + #### 🧠 この時に解放される「頭脳」の2大アビリティ: -* **`🔄 Refresh All` ボタン:** -これをポチッと押せば、エクスプローラ等でCheckpointディレクトリに新モデルを追加したり、不要モデルを削除した結果が、**ComfyUIを再起動することなく一瞬でシステムへ動的に同期される!** -* **`🏹 Push to Local List` ボタン:** -リストから特定のモデルを選んでこのボタンを押すと、Cyclerの「一時的な緊急割り込みレーン(Local List)」へそのモデルが送り込まれる! -**Cyclerは、ローカルリストにモデルが登録されている間は通常の巡回を一時保留し、このローカルリストの割り込み曲を最優先で処理する仕様**になっておるのじゃ。 +* **`🔄 Refresh All` ボタン:** これをポチッと押せば、エクスプローラ等でCheckpointディレクトリに新モデルを追加したり、不要モデルを削除した結果が、**ComfyUIを再起動することなく一瞬でシステムへ動的に同期される!** まさに無詠唱魔法じゃ! +* **`🏹 Push to Local List` ボタン:** リストから特定のモデルを選んでこのボタンを押すと、Cyclerの「一時的な緊急割り込みレーン(Local List)」へそのモデルが送り込まれる! +**Cyclerは、ローカルリストにモデルが登録されている間は通常の巡回を一時保留し、このローカルリストの割り込み曲を最優先で処理する仕様**になっておるのじゃ。試したいモデルを即座に割り込ませろ! --- -## 💪 本格的な使い方(ヘビーユーザー向け) +## 💪 本格的な使い方(ヘビーユーザー向け・祭りの本番!) -### ① ジョブ中 Checkpoint 評価モード - -### ── 複雑な多段生成の「スキマ時間」をハックし、その場で格付けせよ! - -> **⚠️ 注意:** -> これは画像生成を多段に組んでいる、高度なワークフロー(KSamplerの後にFaceDetailerで顔・指を修正したり、Upscale処理を挟んでいるなど)を構築している玄人向けの機能じゃ。 -> 生成の途中で「Checkpointの仮評価」が行えるのじゃが、シンプルな1段生成ワークフローの場合はプレビュー後すぐに次のジョブへ遷移してしまうため、この項目は読み飛ばして構わんぞ! - -1. 前述の通り、`Checkpoint Name Cycler` と `Checkpoint List Selector` を配置する。 -2. **`Ephemeral Preview`** を配置し、ワークフローの中間に存在する `VAE Decode` などの画像出力を受け取れるように繋ぐ。 -3. **`Checkpoint Status Tagger`(右手)** を配置する。 -4. Taggerの `ckpt_name_str` 入力を、`Checkpoint Name Cycler` の `ckpt_name_str` 出力へ接続する。 - -**🏆 執行結果:** -ジョブの実行中、中間プレビュー画像を確認しながら、**「今まさにこの画像を吐き出しているCheckpoint」に対して、お気に入りや削除予約などのタグをその場でダイレクトに打てるようになる!** -打たれたタグ(ステータス)は即座にSelectorへ通知され、Cycler側で「💛や👍が付いたモデルだけを狙い撃ちで巡回する」といった高度なフィルタリング巡回が可能になるのじゃ! - -image -*(※なぜこんな巡回ワークフローが組めるのか、深淵の秘密は Cycler の個別ドキュメントを読むが良いぞ!)* - ---- - -### ② 画像出力フォルダ参照 Checkpoint 評価モード ★超推奨★ +### ① 画像出力フォルダ参照 Checkpoint 評価モード ★超推奨★ ### ── メインの生成ラインを走らせたまま、別タブの特等席で優雅に目視検分(棚卸し)せよ! -> **⚠️ 注意:** -> この「検分専用タブ」ではジョブを一切実行せず、ComfyUIのユーザーインタフェースのみを間借りする実装になっておる。 -> 間違えて「⚠️ 実行する」ボタンを押して空中衝突を起こさぬよう、**ジョブのコントロールパネル(メニューバー)は画面の端っこにでも片付けて(退避させて)おくのじゃ!** -> *(最初はうっかり押しそうになるが、すぐに慣れて間違えなくなるから安心せよ、たぶん)* +> **⚠️ 注意:** > この「検分専用タブ」ではジョブを一切実行せず、ComfyUIのUIのみを間借りする実装じゃ。 +> 間違えて「⚠️ Queue Prompt」ボタンを押して空中衝突を起こさぬよう、**ジョブのコントロールパネルは画面の端っこに退避させておくのじゃ!** -1. メインのタブ(タブA)で500件のジョブを爆走させたまま、**ブラウザで「別タブ(タブB)」を開く!** +1. メインのタブ(タブA)で大量のジョブを爆走させたまま、**ブラウザで「別タブ(タブB)」を開く!** 2. その別タブ側のキャンバスに、**`Checkpoint List Selector`(頭脳)** を配置する。 3. **`Checkpoint Status Tagger`(右手)** を配置し、`ckpt_name_str` を Selector の同名出力へと繋ぐ。 -* 🔗 *リンクが繋がった瞬間、Selectorのボタンが `🏹 Push to Local List` から **`🎯 Sync Checkpoint`** へと動的に覚醒するぞ!* - 4. **`ImageDir Preview`(目)** を配置し、これも Selector の `ckpt_name_str` へと接続する。 -* 📁 *デフォルトではComfyUI標準の `output` フォルダを参照するが、もし参照先を変更したい(jpeg出力専用フォルダなどがある)場合は、`search_directory` 入力にフルパスを文字列で与えてやりゃれ。自動でサブディレクトリまで巡回し、新しい画像ファイルから優先的に表示してくれる優れものじゃ!* +* 🔗 *プレビューのリンクが繋がった瞬間、Selectorのアクションボタンが **`🎯 Sync Checkpoint`** へと動的に覚醒するぞ!* -**🏆 執行結果:** -あとは Selector から検分したいモデルを選び、**`🎯 Sync Checkpoint`** を押すだけじゃ! -裏の生成ラインの邪魔をすることなく、そのモデルが過去に吐き出した画像だけがマッハで逆探知され、美しい正方形コンタクトシートとしてキャンバスに展開される! -画像を見ながら Tagger でステータスを刻めば、情報は一瞬でグローバル同期され、全タブの Selector や Cycler のフィルタへ即時反映されるのじゃ! -image -*(※なぜ生成を止めずにこんな芸当ができるのか、深淵の秘密は Selector の個別ドキュメントを読むが良いぞ!)* + + +**🏆 執行結果:** あとは Selector から検分したいモデルを選び、**`🎯 Sync Checkpoint`** を押すだけじゃ! + +裏の生成ラインの邪魔をすることなく、そのモデルが出力した画像だけがマッハで逆探知され、コンタクトシートとしてキャンバスに展開される! + +画像を見ながら Tagger でステータスを刻めば、情報は一瞬でグローバル同期され、全タブのフィルタへ即時反映されるのじゃ! + +#### ✨ 【神機能】ImageDir Previewのクリックアクション! + +プレビューに表示された画像を「左クリック」してみろ!アクションメニューが開くぞ! + +* **`Delete image`**: おもむろに失敗画像を「物理削除(直接消去)」できる!レビューしながらゴミ掃除が捗るのじゃ! +* **`Set as checkpoint thumbnail`**: 気に入った神画像を、その場で「チェックポイントの代表サムネイル」に設定できる!もうCivitaiからわざわざ画像を落とす必要はないぞ! --- -## 🗑 削除予約したCheckpointの物理削除方法 +### ② タブレットで寝転がりレビュー!【DirectLink モード】 -Taggerで `delete(🗑)` の烙印を押されたCheckpointは、安全のためその場では物理削除されず、「削除予約リスト」に溜まっていく仕様じゃ。 +### ── 外部ビューアで画像を楽しみながら、手元でポチポチ格付けせよ! -夜間バッチが終わり、朝の選別作業もすべて完了したら、以下の手順でSSDの闇へと最終執行(パージ)してくりゃれ! -*(※テンポラリフォルダを意図的に全削除せぬ限り、スクリプトはずっと残るから、気の向いた週末にまとめて執行すれば良いぞ)* +わざわざComfyUIの狭い画面で画像を見るのは疲れる? ならばこれじゃ! + +1. 外部ビューア(iPadや共有フォルダ、専用の画像閲覧ソフトなど)で、出力フォルダを開いておく。 +2. ComfyUI側では、`Checkpoint List Selector` を `ImageDir Preview` には**繋がず**、直接 `Checkpoint Status Tagger` にだけ繋ぐ。 +3. するとボタンが **`🌑 DirectLink OFF`** に変わる!これをポチッと押して **`🌕 DirectLink ON`** にするのじゃ!(※初回のみ安全確認のダイアログが出るぞ) + +**🏆 執行結果:** これで、おぬしはiPadなどの大画面で極上の生成画像をフルスクリーンで楽しみながら、PC側のComfyUIでSelectorをポチポチ切り替えてTaggerでタグを打つだけで良くなるのじゃ!まさにソムリエの特等席じゃろ? + +--- + +## 🏷️ Taggerの5つのステータス(命の選別) + +Taggerには、おぬしの魂を込める5つのボタンが用意されておる! + +* 👑 **`god!`**: 絶対神!殿堂入り!未来永劫守り抜く! +* 💛 **`favorite`**: お気に入り!よく使うエース級! +* 👍 **`nice`**: なかなか良いぞ!キープ候補! +* ✔ **`keep`**: とりあえず残しておく無難なやつ。 +* 🗑 **`delete`**: 処刑宣告(削除予約)。 + +※ トグル式になっており、アクティブなボタンをもう一度押すと `none`(未分類)に戻るぞ。 + +※ **安全第一!** `delete` は `none` の状態からしか押せないし、👑や💛がついている間は絶対に削除予約を弾く鉄壁のセーフティガード付きじゃ! + +--- + +## 🗑 削除予約したCheckpointの物理削除方法(最終執行) + +Taggerで `delete(🗑)` の烙印を押されたCheckpointは、安全のためその場では消えず、「削除予約キュー」に溜まっていく。 + +祭りが終わり、朝の選別作業もすべて完了したら、SSDの闇へと最終執行(パージ)してくりゃれ! + +1. ターミナルを開き、以下のパスに出力された自動生成スクリプトをおぬしの手で実行するのじゃ! -1. ターミナル(コンソール)を開き、ComfyUIの `temp` ディレクトリ等に出力された自動生成スクリプトをおぬしの手で実行するのじゃ! ```bash -python delete_reserved_checkpoints.py +python output/CheckpointHandpickerSuite/delete_scripts/delete_reserved_checkpoints.py ``` -2. スクリプトが起動すると、予約されたモデルと紐づく `.json` メタデータのパスが1件ずつ表示され、**`Delete this checkpoint? (y/N):`** と対話的に執行の許諾を迫ってくるぞ。 -3. 本当に不要なら `y` を、やっぱり残したくなったら `n` を押して進むが良い! -4. すべての物理執行が終わったら、ComfyUIの画面に戻り、Selectorの **`Refresh All`** を一発ポチッと押すのじゃ。それだけで、容量が空いた最新の状態がシステムへ瞬時に認識される。 **そう、ComfyUIの再起動は一切不要じゃ!!!** + +2. スクリプトが起動すると、予約されたモデルと紐づくメタデータ、そして**なんと「サイドカーサムネイル画像(.jpg)」まで巻き込んで**、1件ずつ `Delete this checkpoint? (y/N):` と対話的に執行を迫ってくるぞ! +3. 本当に不要なら `y` を、やっぱり残したくなったら `n` を押すのじゃ! +4. 物理執行が終わったら、ComfyUIに戻り、Selectorの **`Refresh All`** を一発ポチッと押す。それだけで、空いた容量がシステムへ瞬時に認識される!**ComfyUIの再起動は一切不要じゃ!!!** --- # 🔮 陰の思想:Checkpoint評価を、ひとつの「儀式(ワークフロー)」として扱うのじゃ! -おぬしたちが夜な夜なストレージへ引き込む `.safetensors`(Checkpoint)は、単なる容量を食う無機質なデータファイルではない。 -それぞれのモデルには、神がかった得意の表現、致命的な苦手構図、独特な愛おしい癖、そして思わぬ場面で奇跡を起こす瞬間が秘められておる。 +おぬしたちが夜な夜なストレージへ引き込む `.safetensors`(Checkpoint)は、単なる容量を食う無機質なデータファイルではない。 -しかし、そのCheckpointの評価(格付け)はこれまで、どうしても感覚的な闇に葬られがちじゃった。 -何枚か適当に生成して、なんとなく良い・悪いを脳内で覚えておく。 -膨大なファイル名を頼りに、後からエクスプローラーで血眼になって探す。 -本当に消してよいか迷ったまま、ストレージ(SSD)の肥やしとして残り続ける。 +それぞれのモデルには、神がかった得意の表現、致命的な苦手構図、独特な愛おしい癖、精度、そして思わぬ場面で奇跡を起こす瞬間が秘められておる。 + +しかし、そのCheckpointの評価(格付け)はこれまで、どうしても感覚的な闇に葬られがちじゃかった。 + +何枚か適当に生成して、なんとなく良い・悪いを脳内で覚えておく。 + +膨大なファイル名を頼りに、後からエクスプローラーで血眼になって探す。 + +本当に消してよいか迷ったまま、ストレージ(SSD)の肥やしとして残り続ける。 **ComfyUI-CheckpointHandpickerSuite** は、その曖昧になりがちな「棚卸しの試練」を、極めて合理的かつ冷徹なロジックによって、扱いやすい一連の流れ(因果)として整理するために作られたのじゃ! わらわたちが導き出した、基本となる設計思想(結界の掟)は次の通りじゃ: 1. **巡回なくして選別なし:** まず自動で縦横無尽に巡回できなければ、評価対象(分母)すら効率的に集められんのじゃ。 -2. **割り込みのアビリティ:** 巡回中であっても、「おっ」と気になるCheckpointを見つけたら、即座に次のジョブへ最優先で割り込ませられるべきじゃ。 -3. **5値の絶対格付け:** 評価ステータスは、人間の脳に負担をかけない `favorite` / `nice` / `keep` / `delete` / `none` の5択(トグル)だけでシンプルに完結させるべきじゃ。 -4. **慈悲深き処刑宣告:** 不要と判断した `delete` はその場で物理破壊(unlink)するのではなく、神絵の差し戻しを許す「削除予約」であるべきじゃ。 -5. **因果のフィルター:** 格付けした評価結果を用いて、次の巡回候補を優雅にフィルタリング(お気に入り狙い撃ち等)できるべきじゃ。 -6. **時空の遅延解決(Lazy Resolution):** そのフィルタリングを常に有効にするため、Checkpointの選択はジョブ登録時(Queueボタンを押した時)ではなく、**実際に生成ラインが走る「実行直前」に遅延解決(オンデマンド解決)すべき**なのじゃ! -7. **不死身のプロトコル:** 実行時遅延解決であるならば、ComfyUIを再起動させることなくモデルを追加・削除して `Refresh All` をブチ込んでも、システムはエラーを吐かずに最新状態へ追従できるのじゃ! -8. **並列世界の検分:** 評価の執行は、バックグラウンドで画像作成ジョブを全力疾走させたまま、JavaScriptの無線イベントを用いて、別タブで過去の出力画像をニヤニヤ確認しながら完全非同期で行えるべきじゃ! -9. **無侵襲の増設(Non-Invasive Extension):** - これほど強力な非同期評価システムでありながら、既存のメイン生成ラインを1ミリも汚さず、今使っているお気に入りのワークフローの `Load Checkpoint` ノードの頭に `Checkpoint Name Cycler` をただ1個カチッと挟み込むだけで、別タブへの「無線棚卸し環境」が即座に自動展開される。導入のために過去の遺産(既存の配線)を破壊させるような無粋な真似は、我がシャドウガーデンの流儀には反するのじゃよ! -このSuiteは、単にキャンバスをスパゲッティにするための無機質なノードではない。 +2. **割り込みのアビリティ:** 巡回中であっても、「おっ」と気になるCheckpointを見つけたら、即座に次のジョブへ最優先で割り込ませられるべきじゃ。 + +3. **6値の絶対格付け:** 評価ステータスは、人間の脳に負担をかけない `god` / `favorite` / `nice` / `keep` / `delete` / `none` の6値だけでシンプルに完結させるべきじゃ。 + +4. **慈悲深き処刑宣告:** 不要と判断した `delete` はその場で物理破壊(unlink)するのではなく、神絵の差し戻しを許す「削除予約」であるべきじゃ。 + +5. **因果のフィルター:** 格付けした評価結果を用いて、次の巡回候補を優雅にフィルタリング(お気に入り狙い撃ち等)できるべきじゃ。 + +6. **時空の遅延解決(Lazy Resolution):** そのフィルターを常に有効にするため、Checkpointの選択はジョブ登録時(Queueボタンを押した時)ではなく、**実際に生成ラインが走る「実行直前」に遅延解決(オンデマンド解決)すべき**なのじゃ! + +7. **不死身のプロトコル:** 実行時遅延解決であるならば、ComfyUIを再起動させることなくモデルを追加・削除して `Refresh All` をブチ込んでも、システムはエラーを吐かずに最新状態へ追従できるのじゃ! + +8. **並列世界の検分:** 評価の執行は、メインジョブの実行中にメイン画面で行うほか、画像作成ジョブを全力疾走させたまま、JavaScriptの無線イベントを用いて、別タブで過去の出力画像をニヤニヤ確認しながら完全非同期で行えるべきじゃ! + +9. **多元評価の収束(Unified Review Surface):** 評価はひとつの画面だけに縛られるべきではないのじゃ。ジョブ実行中にその場で評価してもよし、Checkpoint名から結果画像を参照してじっくり確認してもよし、タブレット端末で生成画像を眺めながらCheckpointを選んで評価してもよし。どの入口から下した審判であっても、最終的には `god` / `favorite` / `nice` / `keep` / `delete` / `none` という同じ評価体系へ収束し、Checkpointと結果画像の対応関係を壊さずに蓄積されるべきなのじゃ! + +10. **無侵襲の増設(Non-Invasive Extension):** これほど強力な非同期評価システムでありながら、既存のメイン生成ラインを1ミリも汚さず、今使っているお気に入りのワークフローの `Load Checkpoint` ノードの頭に `Checkpoint Name Cycler` をただ1個カチッと挟み込むだけで、別タブへの「無線棚卸し環境」が即座に自動展開される。導入のために過去の遺産(既存の配線)を破壊させるような無粋な真似は、我がシャドウガーデンの流儀には反するのじゃよ! + + +このSuiteは、単にキャンバスをスパゲッティにするための無機質なノードではない。 + Checkpointを発見し、試し、評価し、必要なら安全にパージするための、**まったく新しい実用的なワークフローの提案(神アセット)** なのじゃーーーっ!!!🚀🔮✨🌟🏆✨🌐 --- diff --git a/doc/ImageDirPreview.md b/doc/ImageDirPreview.md index b67c508..9958515 100644 --- a/doc/ImageDirPreview.md +++ b/doc/ImageDirPreview.md @@ -1,13 +1,27 @@ -# 💙 ImageDir Preview (画像ディレクトリ参照プレビュー) +# 💙 ImageDir Preview (画像ディレクトリ参照プレビュー v0.2.0) `ImageDir Preview` は、指定されたディレクトリから「特定のモデルが過去に出力した画像」だけを爆速で逆探知し、キャンバス上へ美しい一覧シートとして展開する「シャドウガーデンの超探知眼(目)」じゃ。 最大の特徴は、一般的なギャラリーツールのように重い「サムネイルデータベース」などを一切構築せず、**最新のタイムスタンプからサブディレクトリを再帰的に直接掘り進み、指定枚数に応じた最適な正方形グリッドへオンデマンドで画像を詰め込む** という、極めて軽量かつ実戦的な設計にあるのじゃ! +そしてv0.2.0の特大アップデートにより、ただ眺めるだけでなく**「画像に直接触れて運命を書き換える」**神機能をついに手に入れたのじゃ! + image --- +## 💎 v0.2.0の神機能:左クリック・アクションメニュー! + +プレビューに展開された生きた画像を**「左クリック」**してみろ!専用のアクションメニューが浮かび上がるぞ! + +* **🗑️ `Delete image`(画像の物理削除)** + 失敗した生成画像(指が6本ある、顔が崩れている等)を見つけたら、これじゃ!確認ダイアログのあと、その場で元ファイルを物理削除するぞ。(削除後はレイアウトを崩さず「NO IMAGE」のプレビュー枠が残る洒落た仕様じゃ。クリックも無効化されるぞ) + モデルの格付けをしながら、ついでにゴミ画像のお掃除も完結してしまう最高の機能じゃ! +* **🖼️ `Set as checkpoint thumbnail`(代表サムネイル設定)** + 「おおっ、この画像は神がかっている!」と思ったらこれじゃ!その生成画像を、一瞬で「そのCheckpointの代表サムネイル(サイドカー画像)」として上書き設定するぞ!これを設定すれば、`Checkpoint List Selector` の一覧でマウスホバーした時に美しくサムネイルがポップアップするようになる!もうCivitaiからわざわざプレビュー画像を拾ってくる必要はないのじゃ! + +--- + ## 🔌 入出力仕様(Specifications) ### 📥 入力(Inputs) @@ -37,7 +51,7 @@ さらに、読み込むファイル数が少ないため、**ディスクI/Oやメモリへのデコード負荷が極めて軽くなり、操作のレスポンスがマッハで軽快になる**という最高の副加価値(ライフハック)もあるぞ! * **大枚数設定(例: 24枚〜80枚)** 逆に枚数を多く設定すると、システムは全体のキャンバスが規定サイズ(`4096px`)を超えないよう、画像を綺麗に縮小(サムネイル化)して1枚のシートにギュッと詰め込む。 -これは細部を見るのらには向かんが、「このモデルは全体的にどんな色調や構図、絵柄の傾向を吐き出す癖があるのか」を、一歩引いた視点からオーバービュー(総覧)するのに極めて役立つぞ。 +これは細部を見るのには向かんが、「このモデルは全体的にどんな色調や構図、絵柄の傾向を吐き出す癖があるのか」を、一歩引いた視点からオーバービュー(総覧)するのに極めて役立つぞ。 --- @@ -129,4 +143,3 @@ else: ### 📣 宣伝画像 画像生成がもっと便利に!GMImageSaver紹介 - diff --git a/doc/README.ja.md b/doc/README.ja.md index c111777..d3f2f29 100644 --- a/doc/README.ja.md +++ b/doc/README.ja.md @@ -1,9 +1,11 @@ -# 🧬 ComfyUI-CheckpointHandpickerSuite (日本語版聖典) +# 🧬 ComfyUI-CheckpointHandpickerSuite (日本語版聖典 v0.2.0) > ** 「ディスク容量が節約できる保証はありません。なぜなら、あなたが空いた容量に歓喜して、明日さらに多くのCheckpointをダウンロードしてしまうからです。」 ** -エクスプローラーとの果てしない往復も、不要モデルを消すためだけの不毛なComfyUIの再起動も、すべては過去の遺物じゃ。 -`ComfyUI-CheckpointHandpickerSuite` は、膨大なCheckpoint(.safetensors)の海で戦うAI絵師のために、生成パイプラインを「一瞬も止めず」、常時稼働のままリアルタイムにモデルの格付け・棚卸しを執行するために錬成された、究極のノンストップ・アセット管理システムじゃ。 +エクスプローラーとの果てしない往復も、不要モデルを消すためだけの不毛なComfyUIの再起動も、すべては過去の遺物じゃ! +`ComfyUI-CheckpointHandpickerSuite` は、膨大なCheckpoint(.safetensors)の海で戦うAI絵師のために、生成パイプラインを「一瞬も止めず」、常時稼働のままリアルタイムにモデルの格付け・棚卸し・サムネイル設定までを執行するために錬成された、究極のノンストップ・アセット管理システムじゃ。 + +v0.2.0の特大アップデートで、ついに「失敗画像の直接削除」や「寝転がりながらの外部レビュー(DirectLink)」まで手に入れてしまったぞ! さあ、狂乱の宴の始まりじゃああ! --- @@ -18,8 +20,11 @@ * **Checkpointの全自動ノンストップ巡回** * **Local Listによるピンポイントの割り込みテスト** * **VRAM直射・キャッシュゼロの超軽量プレビュー(SSD摩耗ゼロ)** -* **5色のステータスタグ(JSONL)による冷徹な格付け** -* **誤爆を防ぐ「delete(削除予約)」キューシステム** +* **👑神(god!)を含む5色のステータスタグによる冷徹な格付け** +* **プレビュー画面からの「失敗画像」ダイレクト物理削除!** +* **神画像を「チェックポイントの代表サムネイル」にワンクリック設定!** +* **タブレットから遠隔でタグを打てる堕落の「DirectLink」モード!** +* **誤爆を防ぐ「delete(削除予約)」キューシステム(サムネイルも一緒に道連れじゃ!)** * **評価結果に応じた動的な巡回フィルタリング** * **ComfyUIの再起動を一切要求しない、Refresh Allへの完全追従(実行時遅延解決)** * **メインの生成を全力疾走させたまま、別タブで優雅に棚卸しを行う非同期マルチタブ運用** @@ -30,7 +35,7 @@ ## ❔ これは何なのか?(What is this?) -**「あなたのCheckpoint読み込みノードに機能を追加し、豪華なジュークボックスにします。」** +**「あなたのCheckpoint読み込みノードに機能を追加し、デラックスなレビューデスク付きの豪華なジュークボックスにします。」** 大量のモデルをただの「肥大化したデータファイル」として無機質に扱う時代は終わりました。 このSuiteを導入した瞬間、あなたのComfyUI環境は、世界中の神モデルたちが織りなす「極上のAIアート・ジュークボックス」へと変貌します。 @@ -38,7 +43,7 @@ ユーザー(あなた)が行うのは、お気に入りの名盤(Checkpoint)を選ぶことだけ。 寝ている間に自動でレコードが切り替わり(Cycler)、 吐き出された極上のメロディ(画像)を目の前で楽しみながら(Preview)、 -「お気に入り(💛)」のプレイリストを作るか、「棚卸し(🗑)」にするかを1クリックでジャッジする。 +「絶対神(👑)」のプレイリストを作るか、その場で「代表サムネイル」に上書き設定するか、不要な失敗画像を消し飛ばすか、あるいはモデルごと「棚卸し(🗑)」にするかを1クリックでジャッジする。 これは、ストレージ難民を救済し、モデルの命の選別をゲーム感覚で行うために生まれた、世界で最も贅沢な「アセット・ソムリエシステム」なのじゃ! @@ -48,7 +53,7 @@ 「自動巡回ラインをどう組むか?」「生成を1秒も止めずに、別タブの特等席で優雅に目視検分(棚卸し)する禁断のマルチタブ運用の秘訣とは?」など、実戦に即した詳細なステップバイステップは、以下の魔導書を開くが良いぞ! -* 🏹 **[詳細な使用方法・ライフハックはこちら:HOW_TO_USE.ja.md](HOW_TO_USE.ja.md)** +* 🏹 **[詳細な使用方法・ライフハックはこちら:HOW_TO_USE.ja.md](doc/README.ja.md)** --- @@ -66,25 +71,40 @@ ### 2. 💜 [Checkpoint List Selector(頭脳)](CheckpointListSelector.md) -リポジトリ内の全モデルを一手に統括し、状況に応じて役割を2変化させる司令塔じゃ。 +リポジトリ内の全モデルを一手に統括し、状況に応じて役割を3変化させる司令塔へと超絶進化を遂げたぞ! * 接続先がない時は **`🏹 Push to Local List`** として機能し、Cyclerへ割り込み曲を送り込む。 -* 右手(Tagger)や目(Preview)とリンクした瞬間、UI動相同期モードである **`🎯 Sync Checkpoint`** へと動的に覚醒する! -* ポチッと押すだけで、新モデルの追加や物理削除の結果を、**ComfyUIの再起動なしで1秒で同期する `🔄 Refresh All` アビリティ**も有しておるぞ。 +* 目(Preview)とリンクした瞬間、UI動相同期モードである **`🎯 Sync Checkpoint`** へと動的に覚醒する! +* 右手(Tagger)のみと直結すると、外部レビュー用の **`🌕 DirectLink ON / 🌑 OFF`** ボタンが出現するのじゃ! +* もちろん、新モデルの追加や物理削除の結果を、**ComfyUIの再起動なしで1秒で同期する `🔄 Refresh All` アビリティ**も健在じゃ。マウスホバーでサムネイルがヒュンッと浮かび上がる洒落た機能も追加されたぞ! ### 3. 💛 [Checkpoint Status Tagger(右手)](CheckpointStatusTagger.md) 画像を見ながら、モデルに対して冷徹かつ瞬時に格付け(レイティング)を行う執行官じゃ。 -* ボタンは `favorite(💛)` / `nice(👍)` / `keep(✔)` / `delete(🗑)` の4つ。(`none` はトグルで解除)。 -* 特筆すべきは、「💛や👍がついている間は、deleteボタンが物理的にグレーアウトし、サーバー側でも絶対に削除予約を弾く」という、うっかり誤爆を100%許さない鉄壁のセーフティバリデーション。右手の誇りにかけて、神モデルを絶対に見捨てぬ設計じゃ! +* v0.2.0で絶対神こと `god!(👑)` が降臨! ボタンは `god(👑)` / `favorite(💛)` / `nice(👍)` / `keep(✔)` / `delete(🗑)` の5つに増強されたぞ!(`none` はトグルで解除)。 +* 「👑や💛や👍や✔がついている間は、deleteボタンが物理的にグレーアウトし、サーバー側でも絶対に削除予約を弾く」という、誤爆を100%許さない鉄壁のセーフティバリデーション。右手の誇りにかけて、神モデルを絶対に見捨てぬ設計じゃ! ### 4. 💙 [Ephemeral Preview](EphemeralPreview.md) & [ImageDir Preview(目)](ImageDirPreview.md) -インジェクションされた情報とストレージをマッハで逆探知する、Suiteの「網膜」じゃ。 +インジェクションされた情報とストレージをマッハで逆探知する、Suiteの「網膜」じゃ。v0.2.0でコイツが一番ヤバい進化を遂げたぞ! * **Ephemeral Preview:** 中間生成ラインで、今まさに画像を吐き出しているモデルの名前を、フロントエンドのタブローカルな実行状態から検知して美しくラベリング表示する。 -* **ImageDir Preview:** 棚卸しモードの主役。Selectorでモデルを選んだ瞬間、過去にそのモデルが出力した画像(サブフォルダ含む)を高速スキャンし、浮動小数点誤差を完璧に排除した超最適化グリッド(コンタクトシート)としてキャンバスへ一瞬で展開してみせるのじゃ! +* **ImageDir Preview:** 棚卸しモードの主役。Selectorでモデルを選んだ瞬間、過去に出力した画像(サブフォルダ含む)を高速スキャンし、コンタクトシートとしてキャンバスへ一瞬で展開する。 + * **【神機能】** プレビューされた画像を左クリックしてみろ! なんとアクションメニューが開くのじゃ! + * **`Delete image`**: おもむろに失敗画像を「物理削除(直接消去)」できる!レビューしながらゴミ掃除が捗るのじゃ! + * **`Set as checkpoint thumbnail`**: 気に入った画像を、その場で「チェックポイントの代表サムネイル」に上書き設定できる!もうCivitaiからわざわざ画像を落とす必要はないのじゃ! + +--- + +## 📱 タブレットで寝転がりレビュー!?「DirectLinkモード」 + +v0.2.0の目玉機能じゃ!「わざわざComfyUIの狭いプレビュー画面でチマチマ見るのは疲れる!」というおぬしのために用意したぞ。 + +`Checkpoint List Selector` を `ImageDir Preview` に繋がず、直接 `Checkpoint Status Tagger` にだけ繋いでみろ。 +するとボタンが **`🌑 DirectLink OFF`** に変わる。 +これをON(🌕)にすれば、おぬしはiPadや外部の画像ビューア、共有フォルダでフルスクリーンで生成画像を楽しみながら、PC側のComfyUIでポチポチとリストから選んでタグを打つだけで良くなるのじゃ! +堕落の極みじゃろ? まさに特等席でのソムリエごっこじゃ! --- @@ -105,6 +125,8 @@ Taggerで `delete(🗑)` を押したモデルは、その場では物理削除されず、安全のためにテンポラリの `checkpoint_delete_queue.jsonl` に予約キューとして蓄積される。 バッチ作業がすべて終わったら、自動生成されている安全執行スクリプト `delete_reserved_checkpoints.py` をコンソールから実行し、対話的に `(y/N)` でパージすればSSDの容量解放は完了じゃ!もちろん、ComfyUIの再起動は不要じゃぞ。 +**v0.2.0からは、なんと設定したサイドカーサムネイル画像(.jpgなど)も賢く一緒に消し去ってくれる**ようになったぞ!チリひとつ残さぬ徹底ぶりじゃ! + --- ## 推奨出力ノード