Files

3.1 KiB

Node and state contracts

公開ノード

登録名 表示名 主な入力 出力
CheckpointListSelector Checkpoint List Selector checkpoint ckpt_name, ckpt_name_str, ckpt_name_safe
CheckpointNameCycler Checkpoint Name Cycler start_checkpoint, mode, change_every ckpt_name, ckpt_name_str, ckpt_name_safe
CheckpointStatusTagger Checkpoint Status Tagger ckpt_name_str なし
CheckpointTagExportImport Checkpoint Tag Export / Import tag_transfer_directory UI なし
EphemeralPreview Ephemeral Preview image なし
ImageDirPreview ImageDir Preview ckpt_name_str, search_directory, max_preview_images なし

メニュー階層

通常ノードはHandpickerSuite直下、Preview系だけはHandpickerSuite/Previewへ登録する。

HandpickerSuite
├─ Checkpoint List Selector
├─ Checkpoint Name Cycler
├─ Checkpoint Status Tagger
├─ Checkpoint Tag Export / Import
└─ Preview
   ├─ Ephemeral Preview
   └─ ImageDir Preview

Checkpoint名の3出力

SelectorとCyclerは、同じ相対Checkpointパスを用途別に3形式で公開する。

  • ckpt_name: Checkpoint Loaderへ接続できるCombo互換出力。
  • ckpt_name_str: TaggerとImageDirPreviewへ接続するSTRING出力。
  • ckpt_name_safe: 拡張子とファイル名に不向きな文字を除去・置換したSTRING出力。

値が同じでも型と接続先が異なるため、ckpt_name_strを削除してckpt_nameへ統合してはならない。 TaggerとImageDirPreviewのckpt_name_strはSTRINGかつforceInput: Trueを維持する。 未接続時に先頭Checkpointや共有Preview状態から対象を推測してはならない。

状態の所有範囲

  • Cycler、Tagger、Preview、実行中Checkpointの保持状態はブラウザタブIDとノードIDで分離する。
  • 通常のSelector同期、DirectLink、Tagger変更、Preview進捗は対象タブだけへ反映する。
  • Tag Importと、Refresh Allによる消失済みdelete評価の解除は全タブへ反映する。
  • Cyclerの実行後スナップショットが、最後に実際に返したCheckpointの正本である。
  • EphemeralPreviewのCheckpoint名表示はタブ内の実行状態を利用するが、評価や削除対象の決定には使用しない。

永続データ

  • 評価DBはdata/checkpoint_statuses.jsonへatomic保存する。
  • favorite互換データはdata/checkpoint_favorites.jsonへ同期する。
  • noneは評価DBからrecordを削除して表現する。
  • Runtime UI状態はバックエンドメモリにも保持され、Workflowに保存されたhidden widgetは初期化時の復元元となる。

フロントエンド読み込み契約

  • 実装はweb/checkpoint_handpicker_suite.jsだけを正本とする。
  • WEB_DIRECTORY = "./web"を維持する。
  • JavaScriptのComfyUI importは../../scripts/app.jsと../../scripts/api.jsを使用する。
  • 必須Comboへ.や空文字など、候補一覧に存在しないsentinelを残してQueue検証を失敗させてはならない。