3.1 KiB
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検証を失敗させてはならない。