Commit Graph
238 Commits
Author SHA1 Message Date
Jason HokuandClaude Opus 4.6 c03fb050cb docs: update keyboard shortcuts reference with all current hotkeys
Added R (reload), Shift+0-9 (columns), Ctrl+S (save), Escape (close),
Double-click (favorite). Fixed F description (fullscreen, not auto-fit).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:03:03 -07:00
Jason HokuandClaude Opus 4.6 d48c77515a feat: add upscale preset load/save to Builder UI upscale settings
Preset dropdown with Load/Save buttons at the top of the upscale
settings section. Loads preset pipelines + hires prompt config and
re-renders the section. Saves current config to shared presets file.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:01:23 -07:00
Jason HokuandClaude Opus 4.6 9b8f01ea48 feat: add Start At Job # option for custom job resume/skipping
New 'Run Settings' section in Builder UI with a job number input.
When set > 0, the generation loop skips all jobs before that number.
Useful for resuming at a specific point without relying on
auto-detection. Flows through session settings to the orchestrator.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:00:43 -07:00
Jason HokuandClaude Opus 4.6 e1bba3e8f5 fix: prevent cross-tab dashboard from force-loading running session
CASE 2 auto-load now only triggers when no session is loaded yet,
not when the user is manually browsing a different session. Prevents
a running generation in one tab from hijacking the dashboard in
another tab.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:56:51 -07:00
Jason HokuandClaude Opus 4.6 d94a0695bd feat: add upscale modal HTML container and wire JS into dashboard
Modal overlay with click-outside-to-close. JS file added to
html_generator.py load order after logic_ui.js.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:35:33 -07:00
Jason HokuandClaude Opus 4.6 06a3a1933d feat: create upscale modal JS with preset management and async upscale
Modal with scope toggle (single/all favorites), preset load/save/delete,
config summary display, progress bar with polling, and cancel support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:34:31 -07:00
Jason HokuandClaude Opus 4.6 e825438c5d feat: add ⬆ upscale button to dashboard card hover overlay
Purple button positioned between favorite star and revise button on
the right side. Appears on hover, calls openUpscaleModal(imageId).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:33:12 -07:00
Jason HokuandClaude Opus 4.6 1136c3765d feat: add upscale_images, upscale_status, cancel_upscale REST endpoints
Async upscale API: POST starts a background job, GET polls status,
POST cancels. Supports single image and all-favorited modes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:32:10 -07:00
Jason HokuandClaude Opus 4.6 b0c480c2a5 feat: create upscale_runner.py for dashboard async upscaling
Background thread loads models, runs full pipeline chains, saves
upscaled images, updates manifests, and sends progress events.
Supports single image and all-favorited modes with cancel support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:30:56 -07:00
Jason HokuandClaude Opus 4.6 6be99e1bc7 feat: add upscale presets REST endpoints (GET/POST)
Stored at output/benchmarks/USCG-upscale-presets.json following the
custom resolutions pattern. Shared between Builder UI and Dashboard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:29:31 -07:00
Jason HokuandClaude Opus 4.6 85ed723b21 feat: show 'Upscaling' phase label in dashboard ETA bar
Progress events with phase="upscaling" display "Upscaling 5/30"
instead of "Job 5/30". Handles missing finish_time gracefully.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 02:30:47 -07:00
Jason HokuandClaude Opus 4.6 dd104b521a feat: implement deferred upscales with run_deferred_upscales()
When run_upscales_at_end is enabled, inline upscale is skipped and
jobs are queued. After generation completes (before cleanup), the
deferred phase loads base images from disk, VAE-encodes them, and
runs full pipeline chains. Includes resume support, interrupt handling,
and progress reporting with phase="upscaling".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 02:30:28 -07:00
Jason HokuandClaude Opus 4.6 c0f4def625 feat: wire run_upscales_at_end through config export and Python
Added to JS convertStateToConfigs() and Python generate_config()
session settings dict.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 02:26:35 -07:00
Jason HokuandClaude Opus 4.6 a79008847b feat: add 'Run Upscales At End' checkbox to upscale settings UI
New checkbox with description and warning text. Defaults to off.
Migration ensures existing configs get the new field.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 02:26:14 -07:00
Jason HokuandClaude Opus 4.6 d6ced4aebc fix: always include all config fields to prevent manifest data loss
Fields like vae, seed_behavior, model_type, attention_mode,
model_prompt_prefix/suffix, sampling overrides, lora_omit_triggers,
and trigger append settings are now always included with defaults
instead of being conditionally omitted. This prevents data loss when
sessions are reloaded from manifests with toggled-off sections.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:14:56 -07:00
Jason HokuandClaude Opus 4.6 d2e6717867 feat: dashboard session picker with search and sort by recent
Replace the session <select> dropdown with a searchable scrollable list.
Sessions already come sorted by most recent from the backend. Added
search input that filters sessions by name in real time.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:13:53 -07:00
Jason HokuandClaude Opus 4.6 b701c5f8b2 feat: add Steps, CFG, and Upscale Model/Method to dashboard filters
New filter buttons for Steps, CFG, and Upscale (combined mode + model
name). Applied in both the new-items filter path and the full
executePipeline filter path.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 20:12:28 -07:00
Jason HokuandClaude Opus 4.6 51dd73b254 fix: centering zoom fits columns width and pins top row below header
Scale to fit all columns across viewport width, center horizontally,
and position the top row just below the header bar instead of using
a hardcoded 20px offset.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 19:44:25 -07:00
Jason HokuandClaude Opus 4.6 f19a0f08c2 fix: centering zoom accounts for topbar and bottom bar height
autoFitZoom() now measures header and json-container heights to
calculate actual available viewport space. Fits to both width and
height constraints and centers vertically in the remaining space.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:00:55 -07:00
Jason HokuandClaude Opus 4.6 9cf556d886 fix: prompt ordering and duration metric with upscaling
- Replace set() with ordered list dedup for batch encoding so prompts
  generate in the order they're written in the config array
- Track cumulative upscale duration so the time metric includes both
  generation and all upscale steps instead of just the last upscale

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:00:47 -07:00
Jason HokuandClaude Opus 4.6 cf896ec1e5 feat: add label size slider to dashboard settings
Slider in Label Mode settings (6-16px range) controls overlay text size.
Uses CSS custom property for instant updates. Persisted to localStorage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:00:38 -07:00
Jason HokuandClaude Opus 4.6 6041fa9919 feat: show LoRA model/clip strength in label overlays
Labels now display strength values (e.g. "loraName:1.0:0.8") instead
of just the filename, matching the config_json format.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 18:00:29 -07:00
Jason Hoku cbac033c38 Refactor Requests To Make Comfy's Security Review Team's Job Easier :) - Also Fixed Diffusers Incompat Version Full App Failure 2026-03-15 12:00:43 -07:00
Jason HokuandClaude Opus 4.6 d5fd56541b fix: lazy-import torch/safetensors in network gateway, update stale comments
Move torch and safetensors imports inside huggingface_vae_decode() so
CivitAI and Distribution functions still work if those packages are
missing. Update stale "Uses urllib" comments to reference the gateway.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:27:20 -07:00
Jason HokuandClaude Opus 4.6 7dcb4068a6 refactor: migrate distribution_routes.py to network gateway
test_worker_connection, notify_workers_to_start, and stop_all_workers
now use gateway functions. No more inline urllib imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:21:37 -07:00
Jason HokuandClaude Opus 4.6 3da8a07f80 refactor: migrate distribution_worker.py to network gateway
All 6 urllib call patterns (download, register, claim, submit,
heartbeat, fail) now use gateway functions from network_utils.py.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:20:34 -07:00
Jason HokuandClaude Opus 4.6 9f7d9ae6c5 feat: add Distribution LAN section to network gateway
GET, POST JSON, POST multipart, and streaming download functions for
LAN-only worker coordination between ComfyUI instances.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:18:28 -07:00
Jason HokuandClaude Opus 4.6 a413f3b722 refactor: migrate remote_vae.py to network gateway, remove urllib
HF_ENDPOINTS now imported from network_utils as single source of truth.
Tensor serialization and query string construction moved to gateway.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:17:54 -07:00
Jason HokuandClaude Opus 4.6 28999721ee feat: add HuggingFace Remote VAE section to network gateway
Allowlisted endpoints with validation. Handles tensor serialization,
query string construction, and HTTP transport.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:16:43 -07:00
Jason HokuandClaude Opus 4.6 77b30a3ca6 refactor: migrate config_builder_node.py CivitAI calls to network gateway
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:16:02 -07:00
Jason HokuandClaude Opus 4.6 f43bdf45e0 refactor: migrate lora_utils.py CivitAI calls to network gateway
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:15:37 -07:00
Jason HokuandClaude Opus 4.6 a192354a49 feat: create network_utils.py gateway with CivitAI section
Centralizes all outbound network requests into a single module for
easier Comfy Registry security review. Starts with CivitAI API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:15:14 -07:00
Jason HokuandClaude Opus 4.6 895931bd57 fix: restore diffusers to requirements without version pin
Keep diffusers as a dependency but without a version constraint to
avoid conflicts with other custom nodes that may need different versions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 23:04:09 -07:00
Jason HokuandClaude Opus 4.6 9ad8108fe9 fix: graceful fallback when diffusers is missing or outdated
Remove diffusers from requirements.txt to avoid conflicts with other
custom nodes that may pin older versions. Wrap the import in remote_vae.py
with try/except so the node loads fully even without diffusers — only
Remote VAE features are unavailable, with a clear error message guiding
users on how to fix it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 22:52:30 -07:00
JasonHoku 97725bf271 Major Version Release 1.17, Cartesian Upscaling Testing Features, Smart Labeling Overlay Display, Optional MetaData/Workflow Packing, Dashboard Landing Page, More Builder UI Settings & minor fixes. 2026-03-09 15:37:24 -07:00
JasonHokuandClaude Opus 4.6 fc6137462d docs: restore project documentation to tracking
Re-add AI-CONTEXT.md, ProjectStructure.md, README.md, and Roadmap.md
to git tracking. Only docs/plans/ remains gitignored as local-only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:34:28 -07:00
JasonHokuandClaude Opus 4.6 89b6ce4eb1 feat: upscale pipelines system + save pre-upscale + HiRes prompt adjust
Replace flat upscale configs with pipeline/steps/repeat architecture:
- Pipelines run independently from base image
- Steps chain sequentially within a pipeline
- Steps support repeat count for iterative refinement

Add "Save Pre-Upscaled Output" option to also keep the base image.

Add "Adjust Prompt During HiRes Fix" with prepend/append/replace
behaviors. HiRes-adjusted prompts are batch pre-encoded for efficiency.
Results written to manifest metadata and exposed as label overlays.

Fix fmtVal scoping error in buildLabelOverlay (was referenced outside
the upscale block where it was defined).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:33:04 -07:00
JasonHokuandClaude Opus 4.6 9ede82faa9 fix: label mode unique-only not working on first load and not updating
computeLabelGlobalValues() now runs after loadSession() assigns data
so unique-only filtering works immediately. processNewData() calls
refreshLabelOverlays() so existing card labels update when new images
change what's unique.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:32:51 -07:00
JasonHokuandClaude Opus 4.6 5fef83db25 fix: dashboard landing page loading default session instead of showing picker
New nodes now show the session landing page instead of auto-loading
"my_session". Uses _configured_from_workflow flag to distinguish fresh
nodes from saved workflows. Also fixes session cards Y-axis overflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:32:44 -07:00
JasonHokuandClaude Opus 4.6 6d1fcdb87f chore: gitignore local-only docs and remove from tracking
ProjectStructure.md, README.md, Roadmap.md, AI-CONTEXT.md, and docs/
are local development references — not needed in the repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:32:37 -07:00
JasonHokuandClaude Opus 4.6 2bded1cf6c fix: upscaling manifest issues — correct file URL, add id field, skip base image
Three bugs fixed:
1. Upscaled images used bare 'filename=...' instead of full '/view?filename=...&type=output&subfolder=...' URL format, causing 404s in dashboard
2. Upscaled manifest entries missing 'id' and 'rejected' fields, causing holes in dashboard grid
3. Base (non-upscaled) images were still saved to pending_batch when upscaling was enabled — now only upscaled final versions appear in output

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 03:29:11 -07:00
JasonHokuandClaude Opus 4.6 5e1c1a410a fix: add utf-8 encoding to manifest read in delete_non_favorites
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 02:49:08 -07:00
JasonHokuandClaude Opus 4.6 fadd29a916 feat: add workflow packing to export, cleaned manifest copy, and delete non-favorites endpoint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 02:47:11 -07:00
JasonHokuandClaude Opus 4.6 36acf2bc18 fix: use workflowExample as fallback only when no workflow data provided
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 02:45:20 -07:00
JasonHokuandClaude Opus 4.6 a7961ee4bc feat: add workflow capture, nodes workflow generation, and delete non-favorites to export
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 02:44:44 -07:00
JasonHokuandClaude Opus 4.6 f9077d4c20 refactor: extract buildComfyNodesWorkflow from copyConfigsAsComfyNodes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 02:41:47 -07:00
JasonHokuandClaude Opus 4.6 6ad1f792c2 feat: add workflow packing checkboxes and delete non-favorites button to template
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 02:00:30 -07:00
JasonHokuandClaude Opus 4.6 094b1a7207 docs: add favorites workflow packing implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 01:14:26 -07:00
JasonHokuandClaude Opus 4.6 1ec57272f6 docs: add favorites workflow packing & cleanup design
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 01:09:49 -07:00
JasonHokuandClaude Opus 4.6 b443184316 fix: prevent crash on empty model name and correct upscale_size for model_only mode
Skip upscale combos that require a model when none is selected.
Use effective_size=2.0 for model_only mode instead of 1.0 which
would resize the model output back to original resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 21:36:48 -07:00