Commit Graph
54 Commits
Author SHA1 Message Date
Darksidewalker 6785f0dcd6 perf(rtx upscaler): lazy output allocation + mmap off by default
Align memory behaviour with the reference Comfy-Org NVIDIA RTX node:
- torch.empty instead of torch.zeros: physical pages fault in as frames
  are written, so reserving large video batches no longer forces the
  full footprint up front (the OOM source).
- 24 GiB VRAM output ceiling (32 GB card): large batches stay in VRAM
  instead of bouncing to the CPU tier.
- Drop the conservative up-front RAM pre-check from the default path;
  the kernel decides. 'use_mmap' (now off by default, with a warning in
  the help text) is the opt-in last tier of VRAM -> RAM -> disk.
- Collapse per-frame output write to 0 extra buffers in the in-VRAM case
  (strided view + in-place copy_); cross-device/dtype still uses one.
- Director recipe + JS UI default follow use_mmap: false.

Tests: 26/26 green; allocator exercised in isolation for both tiers.
2026-08-23 13:55:05 +02:00
Darksidewalker 24ea823e75 fix(director v2): strip preview_tiny_vae ring client-side; drop dead socketless flag
The bare-list combo (3861b6c) fixed the widget type, but the optional
socket's hollow ring still draws: LiteGraph draws optional sockets as
HollowCircle and core VAELoader.vae_name (required) draws none. The
backend socketless option-dict flag is ineffective in frontend v1.49.x
(addComboWidget only copies values/advanced/hidden onto widget.options,
so the !c?.options?.socketless gate never fires). The Director's JS
install() now nulls the preview_tiny_vae socket shape on create + load
-- same look as VAELoader, socket stays connectable. Drop the dead
socketless flag; update tests + docs.
2026-08-23 11:40:01 +02:00
Darksidewalker 3861b6c84d fix(director v2): render tiny-VAE selector as true combo (bare-list spec)
Frontend v1.49.x maps a legacy ("STRING", {"combo": [...]}) tuple to a
free-text widget, not a dropdown. Use the bare-list combo spec shape
(same form as core VAELoader.vae_name) so preview_tiny_vae renders as a
clean model-selector combo; socketless=True in the options dict keeps the
optional input dot hidden.
2026-08-23 11:16:15 +02:00
Darksidewalker 301aed54be feat(director v2): render preview tiny-VAE combo socketless (model-selector look)
The combo widget still carried a hollow optional input dot on the node edge
because the new frontend adds a widget-linked input socket for every non-
socketless widget. Mark preview_tiny_vae socketless (legacy dict key, same
pattern KJNodes uses in curve_nodes.py) so it renders like the VAE loader's
model-selector dropdown with no dot. Combo still sourced from
models/vae_approx. Align .tests + docs with source.
2026-08-23 10:43:00 +02:00
Darksidewalker 6557afd7ed feat(director v2): preview tiny-VAE as combo widget (models/vae_approx) + narrower preview panel
- drop forceInput on preview_tiny_vae: now a selectable combo widget
  sourced from models/vae_approx (folder_paths.get_filename_list),
  matching KJ tiny-VAE loader; keep positional widget ordering stable
- preview popup 600px -> 400px (one third narrower)
- align .tests + docs with source
2026-08-23 10:28:54 +02:00
Darksidewalker f5c4f4c6cc feat(director v2): external sampling/shift override sockets + sampling panel UI
SAMPLER/SCHEDULER/STEPS/SHIFT external sockets (external > internal > default), sampling panel in the node UI with clamped inputs and external-override connected state, settings persisted across reloads. Import-safe: lazy comfy imports in the preview helper, guarded folder_paths vae_approx combo, synthetic-package test loader so tests pass with and without ComfyUI on PYTHONPATH (9 passed dev, 14 passed live).
2026-08-23 08:21:23 +02:00
Darksidewalker a8e05fd415 refactor(director): fork MiniMax H3 Director into independent v1 + v2
- v1 reverted to the exact GitHub (origin/main) state, byte-for-byte:
  nodes_minimax_h3_director{,_guide}.py, helper_minimax_h3_director.py,
  helper_minimax_h3_prompt_builder.py, js/minimax_h3_director.js, plus the
  github-versioned docs and mjs/py tests.

- v2 is a fully standalone 2.0 node (MiniMaxH3DirectorV2 +
  MiniMaxH3DirectorGuideV2) with its own _v2 helper copies and
  js/minimax_h3_director_v2.js. It no longer subclasses v1 and has zero
  imports from v1 director modules, so both can coexist without affecting
  each other.

- v2-only helper_media_output.py / helper_minimax_h3_director_execute.py are
  superseded by their _v2 copies (v1-named originals removed); the v2 tests
  now target the _v2 modules and v2 js.

- __init__.py registers all four: MiniMaxH3Director, MiniMaxH3DirectorV2,
  MiniMaxH3DirectorGuide, MiniMaxH3DirectorGuideV2 (+ input_images route).

Verified: 22 pytest director tests pass, v2 imports with no v1 side-effects,
all four variants register.
2026-08-19 21:33:53 +02:00
Darksidewalker a1c8df6f61 feat(minimax-h3-director): add Image Inpaint mode with internal execute + media output publisher
Add an "Image Inpaint" mode to the MiniMax H3 Director with an optional
internal_execute path (clip/vae/seed inputs, prompt/extra_pnginfo hidden)
so the timeline can drive native inpaint execution in-node. Add
helper_media_output.publish_media_output to route images/video/audio through
the existing saver nodes, and helper_minimax_h3_director_execute for the
Director-owned inpaint execution + postprocess recipe. Extend JS + tests.
2026-08-19 15:18:05 +02:00
Darksidewalker d4fec3f57b chore: bump 0.4.18 -> 0.4.19; update director changelog
Update the MiniMax H3 Director changelog (docs/minimax_h3_director.md)
with three bug-fix entries added since the last 0.4.14 changelog:

- Legacy Director prompt preservation (36b9b3a): pre-builder prompts
  are now detected on load and migrated into a lossless Simple-prompt
  state instead of being silently dropped.
- Serialized standard prompt (009cd47): emit() now writes the resolved
  prompt back to the prompt widget so it round-trips through
  widgets_values on save/load.
- Legacy widget order preserved (ed5d393): frame_rate moved to the
  end of the required input list so pre-frame_rate saves keep their
  positional order; build_guide coerces a stale non-numeric value.

Bump pyproject version 0.4.18 -> 0.4.19.
2026-08-17 20:35:05 +02:00
Darksidewalker e23ac612ba feat(rtx-upscaler): use_mmap is now a permission switch (default on, VRAM->RAM->disk)
- use_mmap off = never use disk; VRAM short -> use RAM if possible, else clear error
- auto_unload_models stays the first remediation when the active tier is short
- default flipped False->True; helper untouched (Watermark unaffected)
- docs/README reworded; bump 0.4.19
2026-08-17 19:31:34 +02:00
Darksidewalker 3b4de3200f docs(rtx-upscaler): document use_mmap + auto_unload_models; bump 0.4.18 2026-08-17 19:02:25 +02:00
Darksidewalker da331c78b4 fix: align Director canvases to H3 patch grid 2026-08-16 19:33:02 +02:00
Darksidewalker 107d39b255 docs: update README + director doc + changelog; fix 2 stale tests; bump 0.4.14
README.md:
- Add missing node docs: Patch Comfy Kitchen Attention (INT8 model-scope
  attention patch, chainbar with H3 Cache) and Inpaint Crop Prep +
  Composite (mask-bounds crop/scale + composite with channel/histogram match)
- Director: document new features — Simple/Structured prompt-mode toggle,
  frame_rate input/output (0.1–240, default 24), ▶ crop playback preview,
  paste-replace, grouped dropdowns with "Native (ShortEdge 768px/2048px)"
  labels

docs/minimax_h3_director.md:
- Changelog (since 99e3e11): new features + bug fixes (prompt-mode toggle,
  grouped/Native dropdowns, frame_rate, crop preview, paste-replace,
  category rename to DaSiWa/MiniMax H3, companion nodes, non_diegetic_music
  default; WAV .wave/RIFF fallback, Ctrl+Enter/wheel forwarding, crop end-guard)
- Body: quick overview, toolbar, upstream inputs (frame_rate), guide dict
  (frame_rate fps instead of hardcoded 24 fps)

tests (2 stale assertions fixed to match intentional code):
- test_minimax_h3_cache.py: category is now "DaSiWa/MiniMax H3" (rename 2f1f3e2)
- test_enhanced_video_combine.py: audio marker is "_audio" not "-audio"
  (underscore required for ComfyUI counter-scanner)

pyproject.toml: 0.4.13 → 0.4.14
2026-08-16 18:36:44 +02:00
Darksidewalker 2f1f3e2dfb MiniMax H3: rename node category to DaSiWa/MiniMax H3 2026-08-16 17:31:30 +02:00
Darksidewalker 99e3e11601 MiniMax H3 Director: resolution/aspect/input-scaling panel + external overwrite inputs
- New Resolution panel (Aspect / Resolution / Input scaling, all Auto default)
  driving hidden width/height on MiniMax 16px grid; Auto aspect follows the
  first visual reference (4:3 fallback), Auto resolution sets 768px short side;
  aspect/MP/pixel presets plus CUSTOM values
- Input scaling delegates to DaSiWa_TorchResize (Off/Auto/Target/Fit/Fill and
  crop/Fit and pad/Long side divisible crop); Auto never upscales sources at or
  below a 2048px short edge
- external_prompt_overwrite replaces external_prompt (legacy input migrated
  in-UI); external_width/height_overwrite replace the canvas and bypass
  Director sizing/preprocessing when both are connected
- Toolbar consolidated (Mode / Prompt Mode / actions), video dimension probing
  for auto aspect, progress doc for the feature
2026-08-16 13:03:32 +02:00
Darksidewalker 26c09b6966 feat: add MiniMax H3 caching and attention nodes 2026-08-16 10:14:38 +02:00
Darksidewalker 1ab9ccb887 Docs: refresh recent changes + bump to 0.4.13
- Director changelog: external prompt input feature; packed-stereo
  audio de-interleave, integer PCM magnitude scaling, and the REF2VA
  'imd' KeyError fix (PR #15).
- System Monitor: document backend real-disable (DASWA_SYSTEM_MONITOR
  env var) vs browser-local hide, container/sandbox /proc safety, and
  content-sized Lite chips (max-content) that stop 4K text clipping.
- Video Combine: note audio sidecar counter fix (underscore separator).
- LoRA Loader: note STR/VIS/A nullish-fallback fix so 0 holds.
- RTX Upscaler: note empty_cache is now optional (default False, #24).
- README: external prompt input + container-safe monitor.
- Bump version 0.4.12 -> 0.4.13.
2026-08-15 18:03:59 +02:00
Darksidewalker 41911db55a MiniMax H3 Director: new prompt builders, video thumbnails, helper buttons, toolbar cleanup, bug fixes
Features:
- REF2VA prompt builder simplified to six free-text fields; automatic header insertion; v1→v2 backward compat
- Insert [Shot N] button places shot markers at cursor
- Prefill Labels & Summary auto-generates Picture/Video/Audio labels from timeline media
- Preview Prompt popup shows exact assembled prompt with copy-to-clipboard
- Video thumbnails: first frame extracted at upload and displayed behind clip tiles
- Cleaner toolbar: single horizontal bar, bare mode pills, dedicated Clear/Remove/? controls
- Dark-blue audio lane accent

Docs:
- Updated README.md MiniMax H3 Director section
- Expanded minimax_h3_director.md changelog, quick overview, toolbar row, clip tiles, prompt editors, processing flow, guide node, practical workflow

Fixes:
- Guarded non-string values against .strip() TypeError
- Fixed textarea onChange passing Event instead of value
- Guarded missing p2_shot/last_shot keys
- Trim sliders only respond when clicking crop markers
- Images can now be dragged out of locked L2VA slots
- Corrected slot-capacity check for image acceptance
- Restored center drag handles on resize bars

Updated screenshot: assets/DaSiWa-MiniMaxH3-Director.png
2026-08-05 20:00:18 +02:00
Darksidewalker a297af2031 docs(minimax-h3-director): correct VAE/CLIP names from Comfy-Org repo 2026-08-04 13:23:10 +02:00
Darksidewalker 41b76822f5 docs(minimax-h3-director): add wiring diagram, clarify Guide replaces native nodes 2026-08-04 13:20:38 +02:00
Darksidewalker f576ba56a8 docs(minimax-h3-director): expand documentation, add changelog, bump to 0.4.1
- Dense README entry for MiniMax H3 Director with new features
- Complete doc rewrite: UI walkthrough, controls explanation, processing flow diagram
- Changelog section listing latest additions:
  - Embedded video audio extraction (V/A/V+A switch)
  - Trim support for standalone audio clips
  - Attached soundtrack trim alignment
  - Mode-switch safety (FL2VA/REF2VA preserves assets)
  - Hardened video duration detection
- Version bump 0.4.0 -> 0.4.1
2026-08-04 12:50:51 +02:00
Darksidewalker e362af6f40 fix: MiniMax H3 Director full refresh 2026-08-04 12:26:29 +02:00
Darksidewalker 9ba7b4c573 feat: MiniMax H3 Director helper, JS fixes, tests, docs 2026-08-04 10:16:40 +02:00
Darksidewalker f6c7596585 feat: integrate MiniMax H3 Director 2026-08-03 23:50:17 +02:00
Darksidewalker fb159729e1 docs(enhanced-video-combine): reflect AV1 auto precedence, AV1/H.265 transcoded preview, and H.265 exclusion from Auto 2026-08-03 14:30:56 +02:00
Darksidewalker 07419ba487 feat: add browser-compatible AV1 auto encoding 2026-08-03 14:11:17 +02:00
Darksidewalker 86318bf773 feat(system-monitor): add disk telemetry and docking 2026-08-01 12:59:01 +02:00
Darksidewalker ff192e3f1b refactor(logging): centralize node output and rename modules 2026-08-01 08:45:21 +02:00
Darksidewalker 79ac0ac3dd refactor(batch-output): adaptive CPU RAM reserve for RTX Upscaler and Watermark
Extract shared CPU batch-output allocator into nodes/batch_output.py.
Replace the fixed 8 GiB in-memory cap with a dynamic reserve based on
system total RAM:

  reserve = clamp(total_RAM * 25%, 1 GiB, 8 GiB)

The allocator checks psutil.available RAM at allocation time and falls
back to disk-backed mmap only when the complete output batch would
cross the reserve. GPU outputs keep their separate 8 GiB VRAM guard.

Migrated RTX Upscaler & Refiner and Watermark Overlay to the new helper.
Updated documentation and added targeted tests.
2026-08-01 07:37:44 +02:00
Darksidewalker 62e92cc33b feat: add wildcard preset prompt builder 2026-07-30 21:44:00 +02:00
Darksidewalker 8bee9201e8 feat: add LLM cache and GGUF backends 2026-07-30 16:56:52 +02:00
Darksidewalker b6c6800fc2 feat: accelerate animated AVIF encoding 2026-07-21 21:34:13 +02:00
Darksidewalker a57c88ba38 feat: add animated image outputs 2026-07-21 19:35:23 +02:00
Darksidewalker 063c4faff5 docs: document resolved video combine audio logs 2026-07-19 10:06:38 +02:00
Darksidewalker b3beaffbf1 fix: preserve video combine workflow audio settings 2026-07-19 10:05:50 +02:00
Darksidewalker 7cc63988fd docs: document enhanced video combine automations 2026-07-19 09:11:55 +02:00
Darksidewalker 63834e6951 feat: enhance video combine previews 2026-07-19 08:28:42 +02:00
Darksidewalker 6ad8d3f565 feat: make system monitor dockable 2026-07-18 18:32:18 +02:00
Darksidewalker 2ec3fa1b33 docs: add Torch Resize screenshot, update README, bump v0.2.12 2026-07-17 14:28:41 +02:00
Darksidewalker 45c92e1e1d docs: add full system monitor preview 2026-07-16 21:31:27 +02:00
Darksidewalker ae56c99a68 feat: add configurable system monitor display 2026-07-16 21:11:55 +02:00
Darksidewalker 112e6d1e4f fix: match ComfyUI native MP convention (1024^2) in Resolution Scale Calculator (#4)
- Switch multiplier from 1_000_000 to 1024*1024 (1,048,576) to match
  ComfyUI's Scale Image to Total Pixels node
- Recalibrate resolution presets (###p) to real-world pixel counts under
  new formula with sufficient precision to avoid off-by-one rounding
- Keep MP precision preset labels unchanged (0.26-8.30) — they now
  correctly map to ComfyUI-native megapixels
- Add unit tests for ComfyUI compatibility and preset accuracy
- Update documentation with MP convention explanation

Bump version to 0.2.10
2026-07-16 13:22:12 +02:00
Darksidewalker df4c52a221 feat: add DaSiWa System Monitor node
Compact, color-coded system telemetry bar in the ComfyUI top toolbar.
Displays CPU, RAM, SWAP, DISK, and per-GPU Util/VRAM/Temp metrics
with proportional 0-100% background fills.

Features:
- Multi-GPU support (NVIDIA, AMD, Intel) with indexed labels (GPU0, GPU1...)
- Cross-platform (Linux/Windows) with graceful GPU tool fallbacks
- Responsive layout that hides lower-priority metrics on narrow viewports
- Independent toolbar placement, no dependency on rgthree or other extensions
- Detailed tooltips with device names, IDs, and byte-level usage

Files:
- nodes/system_monitor.py: psutil + nvidia-smi/rocm-smi/sysfs collector
- js/dasiwa_system_monitor.js: ComfyUI frontend extension with live polling
- tests/test_system_monitor.py: collector tests including Windows fixtures
- docs/system_monitor.md: full documentation
- assets/DaSiWa_System_Monitor.png: screenshot
- README.md: updated with new node section
2026-07-16 12:48:52 +02:00
Darksidewalker 671391a593 HF dl of models 2026-06-11 09:47:23 +02:00
Darksidewalker 74ee06ec96 rtx node fix for black frames and wrong order 2026-06-10 08:34:23 +02:00
Darksidewalker 81036de68d Corrected bug for blurry upscale 2026-06-08 19:57:17 +02:00
Darksidewalker 3c05c1b0fe Added new Node RandomStringPicker 2026-06-06 16:41:25 +02:00
Darksidewalker 6fb01e3eb3 Added Watermark overlay, reworked dasiwa scaler 2026-06-05 18:52:53 +02:00
Darksidewalker 5cf7074ba5 Added New Node for LTX23 Lora Loading 2026-06-04 20:02:46 +02:00
Darksidewalker 8c342be7d3 New Node- MetadataImageSaver 2026-05-26 14:06:02 +02:00