Commit Graph
10 Commits
Author SHA1 Message Date
ausboss c8383da808 LoRA Loader: accept a LoRA file that is a link
resolve_lora_path followed links before checking that the file sits in
models/loras, so a LoRA kept on another drive and linked into the folder
was refused as escaping it and then reported missing, which stops the
run when the node is set to stop on a missing LoRA. Containment is now
checked on the path as written, with '..' folded but links not followed,
the way ComfyUI's own loaders treat linked files.
2026-09-27 18:09:29 -05:00
ausboss 60fd7ce8cf Declare LoRA Loader's on_missing choices from MISSING_MODES
_lora_helpers.py defines the tuple but nothing used it; the node spelled
the same list out again. It now reads the constant, so the two cannot
drift apart. The choices and their order are unchanged.
2026-09-24 00:20:11 -05:00
ausboss 9f75e2928c Leave a missing LoRA's trigger words out of the triggers output
In skip mode a row whose file cannot be found is warned about and left
out of the stack, yet its trigger words still reached the prompt,
steering the image toward a LoRA that never loaded. apply_lora_stack can
now report the rows it skipped as missing, and the node joins words only
from the rest. Rows parked at strength 0 keep their words, as the node
docs promise, so comparing with and without a LoRA changes only the
weights. The output tooltip no longer says "comma-joined": the
separator is configurable.
2026-09-24 00:20:11 -05:00
ausboss 463bd89f7f Remove the Civitai lookup so the pack makes no network requests
The lookup was the pack's only outbound request and a standing Registry
finding. Its info-card button, gear-menu switch, server route, sidecar
writer and hash cache are gone. A .civitai.info sidecar already beside a
LoRA is still read, so words and links from earlier lookups or other
tools keep showing.
2026-09-23 23:47:52 -05:00
ausboss 010f996bd0 Keep Civitai lookups fixed and generate the completion chime locally 2026-09-10 09:47:08 -05:00
ausboss 699208dadc Prepare 2.0.0 release candidate 2026-09-07 19:56:23 -05:00
ausboss 67d8512425 Promote the lab LoRA loader feature set into the public node
Strength bars behind each row's name (name doubles as a scrub surface),
the absorb-chain gear action (core/rgthree/Pixaroma/AusBoss loaders,
both directions, originals bypassed), moved-file resolution at run time
with warn-and-skip for missing files plus the reconnect button riding
ComfyUI's R refresh, folder-free row names, the amber duplicate ring,
master-toggle memory, the control bar reclaiming the slot band, + LoRA
inside the stack, and unified strengths as a hard per-node default.

Pure logic merged from the lab's lora_lab.mjs into lora_stack.mjs;
settings_menu gains action rows and persist:false; _lora_helpers gains
match_lora_name and the resolve fallback; VALIDATE_INPUTS is structural
only so a missing file can never block the queue.
2026-08-31 11:01:37 -05:00
ausboss 3f715a4af8 Ship the crush-list build-out: 7 new node files, replace button, video and LoRA polish
- New nodes: Image Resize plus the Utility group (Text, Integer, Float,
  Show Text, Math Expression, Select Every Nth, Split Batch, Merge
  Batches, Free Memory) - the dependency-free gaps that let shared
  workflows drop heavy packs.
- Replace with AusBoss nodes (prototype): preview-then-confirm graph
  rewrite swapping known third-party nodes for pack equivalents, with a
  tested translation map, per-node opt-out, and refuse-with-reason for
  nodes the pack cannot stand in for.
- Load Video: single-frame FRAME picker, an honest "what will load"
  label from the probed source rate, drop-a-video-to-restore. Save
  Video: format-aware widgets and a file_path output. Stitch Inpaint
  gained a blend_mask output, Select Frame negative from-the-end
  indexing, Image Size a batch count - all appended, saved workflows
  load unchanged.
- LoRA Loader: drag-to-reorder rows, hover thumbnails on rows, file
  size and date in the info card.
- Appearance: flagship scheme deepened to slate-teal; the retired
  bright-teal pair upgrades automatically via LEGACY_SCHEME_PAIRS.
  Optional queue-completion chime, off by default.
- Image Resize invariant: pixels are only invented on an explicit
  width+height pad request - scale-derived modes resolve divisible_by
  snaps with a sub-half-step resize, never bars.
- Docs refreshed for six stale pages, stale text and metadata fixed
  across the pack, the panel-height rule codified in AGENTS.md and the
  brand skill, and ausboss_node_tour.json added - a model-free example
  exercising 17 node types in one graph.

Validated: scripts/validate_nodes.py (24 files), 300 JS tests, all
Python suites under the ComfyUI embedded interpreter.
2026-08-27 13:30:35 -05:00
ausboss 80ef06bb4b Use standard Civitai LoRA sidecars 2026-08-25 15:05:05 -05:00
ausboss 139082a9d9 Fix LoRA mismatch detection, LM Studio reasoning, Compare height; add pad stitcher
Six fixes found while testing every node against real workflows.

LoRA Loader: the "wrong base model" warning never fired on a modern stack.
It matched comfy's model class name against a table covering 8 of the 81
classes comfy ships, so Krea 2, Qwen, WAN, LTXV, Z-Image and friends read as
"unknown" and skipped the check entirely - an SD 1.5 LoRA on Krea 2 patched
nothing, changed nothing, and said nothing. It now measures the applied-patch
count across model and CLIP before and after each row and warns when a row
patched nothing, which needs no table, no LoRA metadata, and works on every
model family. base_model_family also stopped mining ss_sd_model_name: that is
the trainer's source filename, and reading substrings out of it labelled any
..._v1.safetensors as SD1.5 and anything containing xl as SDXL.

LM Studio Chat: reasoning returned in the server's own reasoning_content field
now reaches the thinking output. Only inline <think> tags were read, so with
gemma/qwen-style hybrids the whole reply landed in a field the node never
looked at and text came back blank. An empty answer now explains itself,
naming the max_tokens budget when the model ran out of room mid-thought.

Compare: the stage follows the node's height, not only its width. Its panel
declared a computeSize, and the widget layout gives any widget that defines one
a fixed height and leaves it out of the leftover-space split, so dragging the
node taller only added dead space under the image.

Pad Image / Load Image + Pad: a stitcher output, so an outpaint can put the
source back exactly. Padding now builds the same stitcher shape Crop For
Inpaint emits - the crop is simply the whole canvas - so the existing Stitch
Inpaint node serves both and no second stitch node has to exist. Appended
last, so saved workflows keep their links.

Settings menus: editing one row no longer reverts the others. Each save handed
back a value set rebuilt from stored defaults, silently replacing every other
row on a node whose workflow differed from those defaults.

LoRA templates popover: Save was clipped off the panel edge and each saved
row's delete x was stretched across the whole row - one blanket
.ausboss-lora-menu button rule outranked the specialized buttons inside it.
2026-08-17 20:47:27 -05:00