24 Commits
Author SHA1 Message Date
Jason Hoku 23185fa521 feat(run-settings): add 'Additional Random Seeds' to Builder UI
Wires the existing add_random_seeds_to_gens parameter (already in
generation_orchestrator.py:824) through the full Run Settings pipeline:

1. Builder UI: state default + _addRunSetting widget (int, 0-100, default 0)
2. config_builder_node.py: emits into session_settings in configs_json
3. sampler_node.py: reads from session_settings, overrides the local variable

The generation loop already handles it — generates N extra images per config
with random seeds when > 0. Previously hardcoded to 0 with no UI path.

Based on PR #21 by external contributor, rebased onto current main with
full pipeline wiring.

Tests: 118/118 pass.
2026-05-26 11:50:48 -07:00
Jason Hoku 5250a45131 fix(sampler_node): drop stale HF_ENDPOINTS and remote_decode_hf imports
Both symbols were deleted from remote_vae.py in commit 1f77100 (B4) when the
Remote VAE feature was extracted to the ComfyUI-USCG-RemoteVAE companion
plugin. They were never used in sampler_node.py beyond the import line.

Discovered by B10's scanner grep — tests passed only because conftest stubs
the remote_vae module in sys.modules, masking the broken production import.
2026-05-19 13:32:08 -07:00
Jason HokuandClaude Opus 4.7 a1cb7c3346 chore: vae_batch_size + flush_batch_every default 4 → 1
User feedback: 1 is a more sensible default for typical generation —
smaller VAE batches keep VRAM lower, and flushing every gen makes the
dashboard show progress immediately.

Updated everywhere:
- sampler_node run_tests fallback defaults (post-widget-removal)
- conf-builder-main.js initial state + migration backfill
- conf-builder-config-management.js renderRunSettingsSection
  state-init defaults + _addRunSetting defaultValue
- config_builder_node.py state_to_configs_json emit fallback +
  except-clause fallback for both fields

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 11:56:19 -07:00
Jason HokuandClaude Opus 4.7 30e3aa9a94 refactor: slim SamplerGridTester to configs_json + optional inputs
Removes 15 widgets from the SamplerGridTester INPUT_TYPES. The Builder
UI is now the single source for run-level settings via _session_settings
in configs_json. Optional inputs (6 inputs) and the hidden unique_id are
kept; everything else is replaced by hardcoded defaults at the top of
run_tests.

Removed widgets:
- ckpt_name, positive_text, negative_text, seed, denoise
- vae_batch_size, resolutions_json, session_name
- overwrite_existing, flush_batch_every, add_random_seeds_to_gens
- lora_triggerwords_mode, remote_vae_endpoint
- save_conditioning_cache_to_file, enable_model_cache

Defaults set internally (overridden by _session_settings when present):
- ckpt_name: first available checkpoint (fallback so standalone use with
  "model": "Default" does not crash the orchestrator with None)
- positive_text="", negative_text="", seed=0, denoise="1.0"
- vae_batch_size=4, resolutions_json='[[1024, 1024]]', session_name="my_session"
- overwrite_existing=False, flush_batch_every=4, add_random_seeds_to_gens=0
- lora_triggerwords_mode="None", remote_vae_endpoint="None"
- save_conditioning_cache_to_file=False, enable_model_cache=False

Existing workflows: ComfyUI silently drops widget values for removed
INPUT_TYPES keys. Workflows that ran on prior versions will use the new
internal defaults; users who customized those widgets need to set the
same values in the Builder UI Run Settings instead (the previous commit
made all Builder UI run-settings authoritative so they always override).

UX: the Generator node is now a near-empty box with one required input
(configs_json) and 6 optional sockets. The user-facing controls all
live in the Builder UI. This simplifies the graph and removes a
recurring source of confusion (widgets that were silently overridden).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 13:26:56 -07:00
Jason HokuandClaude Opus 4.7 e570f6b58b fix: Run Settings — start_at_job persistence + unconditional override emission
Three issues in 7a2c3c9:

1. start_at_job's onchange handler used setDirtyCanvas() instead of
   saveState() — changes never reached the lora_config widget value.
   Fixed to call saveState().

2. The 6 run-settings emissions were gated on "non-default" values
   (e.g. lora_triggerwords_mode only emitted when != "None"). Result:
   a user setting Builder UI to its default could not override the
   Generator widget if the user had previously set that widget to
   something non-default. Builder UI is now authoritative — emit all
   values unconditionally. start_at_job and image_format also
   switched to unconditional emission for consistency.

3. session_name had no plumbing path. Added emission in
   state_to_configs_json and an override branch in sampler_node so
   the Builder UI's session_name field overrides the generator widget.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 13:25:10 -07:00
Jason HokuandClaude Opus 4.7 7a2c3c905e feat: Builder UI Run Settings — top-of-UI placement + 6 generator-node overrides
Phase 1 of consolidating run-level config into the Builder UI. The
Builder UI's "Run Settings" section is now rendered at the TOP of the UI
(was previously below config arrays) and gains six new fields with help
tooltips:

- overwrite_existing (bool, default false)
- flush_batch_every (int, default 4)
- lora_triggerwords_mode (enum: None / Append To End / Append To Start /
  Read From Config, default None)
- save_conditioning_cache_to_file (bool, default false)
- enable_model_cache (bool, default false)
- vae_batch_size (int, default 4, range -1..64)

State plumbs through state_to_configs_json -> _session_settings ->
sampler_node.run_tests -> run_generation_loop. Builder UI values
override the corresponding widgets on UltimateSamplerGrid when set
(non-default). Widget values remain the fallback so existing workflows
keep working without changes.

Logs an "⚙️ <name> overridden by Builder UI: <value>" line whenever an
override fires, so it's obvious in the console.

Next: once the user has tested this thoroughly, the corresponding
widgets on the SamplerGridTester node can be removed/hidden to
simplify the generator UX (deferred — coordinate with user).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 09:21:14 -07:00
JasonHokuandClaude Opus 4.6 91b8598ac3 feat: add seed settings, canvas flicker fix, upscaling & GPU cooldown
- Seed: expanded per-gen behavior + new full run seed behavior (random/increment/decrement before/after entire run)
- Canvas: fix flicker during simultaneous pan+zoom via requestAnimationFrame batching
- Upscaling: 3 session-level modes (HiRes fix, model upscale, model+HiRes) with tiled VAE support
- Cooldown: configurable GPU breaks between generations with optional VRAM clearing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:00:06 -07:00
JasonHokuandClaude Opus 4.6 25d7c9e7b2 Fix configs_json not unwrapped when distribution is disabled
config_builder_node.py always wraps configs in {"configs": [...]},
but sampler_node.py only unwrapped the array when _distribution key
was present. Without distribution, the wrapped dict passed through
to expand_configs which iterated over dict keys (strings) instead
of config dicts, causing AttributeError on .get().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 00:41:49 -08:00
JasonHokuandClaude Opus 4.6 2146e4926c Refactor Distribution Settings: always-visible toggle + embedded config
Distribution Settings section:
- Always visible at top with On/Off toggle
- Settings collapse when toggled off, expand when on
- No longer conditionally rendered

Distribution config output/input removal (clean break):
- Config Builder: RETURN_TYPES reduced from 3 to 2 outputs
- distribution_config embedded in configs_json as _distribution key
- Output format: {"configs": [...], "_distribution": {...}}
- Sampler node: Removed distribution_config optional input
- Sampler extracts _distribution from configs_json automatically
- Backward compatible: plain array configs_json still works
- JSON Preview shows full output including _distribution when enabled
- Session loader handles both old array and new object formats

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 15:59:10 -08:00
JasonHoku 473c8509a3 add distribution logging 2026-02-26 16:22:21 -08:00
JasonHoku cfb75e7922 Create Run Distribution System 2026-02-26 15:37:55 -08:00
JasonHoku d74a51dd15 UI updates, model based prompting, attention mode selection, recursive cartesian prompting, detect connected node changes for smarter job resuming, eta progress bar in ui, condensed dashboard top bar, close modal hotkeys, 2026-02-16 00:21:58 -08:00
JasonHoku d178bd064f Change cache busting static js serve technique to conform to ComfyUI best practices 2026-02-14 23:13:13 -08:00
JasonHoku 30894c4c82 Massive Overhaul, Config Builder Updates, Fixes, Smarter Optional Caching, UI Improvements, Filter Improvements & More! 2026-02-10 16:30:10 -08:00
JasonHoku 9d1afab458 Major Refactor, Optimizations & New Features: Move & MetaPack Favorited, Random Lora Selection, Lora & Model Entire Folder Loading, Smart JSON Node, WIP Config Builder 2026-02-06 00:07:47 -08:00
JasonHoku 5900fb20f2 Better Filters, Consolidated Top Bar, More Sorting Options, Improved Prompt Iteration Abilities, & Better Session Handling 2026-01-24 22:57:50 -08:00
JasonHoku ec0662d5a0 Implement Non SD Models (ZImage Tested), Add Favorites Feature, Added Auto Lora Triggerword CivitAI Hash Lookup And Append To Prompt Feature, Add Shift Click Filter Selection, Add GoTo Image #, Dashboard Auto-Load New Sessions, Mobile Panning & Zoom Support, Fix Override Latents & Models, Add Clip Token Prompt Change Detection, Add More Meta-Data To Revise View, (prompt,seed,steps, etc) 2026-01-13 13:47:26 -08:00
JasonHoku 762078657a Massive Overhaul, Refactoring, Optimization, Auto Loading/Unloading Virtual Pagination Of Images, Fullscreen Mode, Multi-Models, Multi-Loras, Multi Seed, Stop & Resume Detection, Spacebar Pan To Next Row & Update Grid After X Images Feature 2026-01-11 19:18:26 -08:00
JasonHoku 82e7e36fba Integrate Img2Img/Latent Batching + Fix Revise Screen Layout 2026-01-08 23:59:14 -08:00
JasonHoku 1fbeeba5da Add Multi-Prompt JSON Array Iteration Ability 2026-01-08 18:40:14 -08:00
JasonHoku ba69c48206 Refactor html_gen, better dashboard panning, better config JSON error reporting, fix optional vae not overriding decode, and accept stacking loras and lora arrays for iteration 2026-01-07 22:44:26 -08:00
JasonHoku cdd22df89b Accept Optional Latent for Img2Img, Denoise Arrays, Overwrite Feature, Delete Set, Zoom Fix 2026-01-07 16:25:31 -08:00
JasonHoku f8cdaac288 Fix gitignore and remove pycache 2026-01-07 12:04:32 -08:00
JasonHoku 926798a412 Initial release of Ultimate Auto Sampler Suite 2026-01-06 20:22:33 -08:00