Skip to content

Comments

feat: Wan2GP v10.83 + LTX-2 19B + IC LoRA + Uni3C + ltx2_controlled + 1817-test suite#19

Open
xliry wants to merge 45 commits intobanodoco:mainfrom
xliry:main
Open

feat: Wan2GP v10.83 + LTX-2 19B + IC LoRA + Uni3C + ltx2_controlled + 1817-test suite#19
xliry wants to merge 45 commits intobanodoco:mainfrom
xliry:main

Conversation

@xliry
Copy link

@xliry xliry commented Feb 14, 2026

Summary

Consolidated PR — includes everything from PR #20 (codex/pr19-layered-port) merged with additional features. Supersedes #20.

From PR #20

  • Wan2GP v10.83 syncapply_changesget_default_settings/set_model_settings
  • LTX-2 19B support — latent injection, multi-frame guide images, IC LoRA + union control routing
  • Uni3C restoration — hard-fail on param drops, centralized model settings
  • Travel VACE fix — restrict detection to explicit VACE models only
  • LTX-2 travel pipeline — native keyframe anchoring, model-aware frame quantization (8N+1), 24fps, audio mux
  • 1817-test suite — 113 test files covering headless, GPU, and regression scenarios
  • Wan2GP upstream — new model configs, Uni3C controlnet

New (not in PR #20)

Test plan

  • Verify ltx2_controlled payloads (IC-LoRA, LoRA, image guides, combined)
  • Verify existing ltx2, ltx2_multiframe, ltx2_ic_multiframe backward compat
  • Run headless test suite
  • Verify LTX-2 travel pipeline

Supersedes #20.

🤖 Generated with Claude Code

xliry and others added 30 commits February 11, 2026 19:45
- Replace Wan2GP/ with upstream v10.83 (was v10.01, 82 versions behind)
- Add LTX-2 model detection (_is_ltx2) and task type registration
- Wire 12 new generate_video() params (audio_scale, self_refiner, etc.)
- Add image/audio path bridging: start_image/end_image → PIL, audio_input → audio_guide
- Auto-detect image_prompt_type (T/TS/TE/TSE) for LTX-2 models
- Add use_ltx2 toggle in travel_between_images.py with native keyframe anchoring
- Fix smoke mode stubs to handle ltx2/qwen model types
- Add comprehensive test suite (28 tests, all passing)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WGP v10.83 removed the apply_changes() function - config is now applied
at module level during import. Updated headless_wgp.py to directly set
output paths on wgp module-level variables instead. Also added GPU test
script for LTX-2 19B validation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add per-phase integration status tables covering LTX-2 model support,
image anchoring, audio-driven video, and the Wan/LTX-2 toggle.
Also fix NameError for 'app' in wgp.py headless mode and add a
model download helper script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
43 smoke tests (no GPU) covering orchestrator payload, segment assignment,
frame quantization, dependency chains, and stitch decisions.
Real GPU test generates actual LTX-2 video transitioning between test images.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5 new test files (147 tests total, all passing):
- test_service_health.py: structural regression gate (set sizes, handler coverage, config health)
- test_all_services_headless.py: registration & model detection for all services
- test_wan_headless.py: WAN core services smoke tests (T2V, I2V, VACE, Flux, Hunyuan)
- test_ltx_headless.py: LTX family (LTXv + cross-model switching)
- test_task_conversion_headless.py: DB->GenerationTask pipeline & phase_config parsing

Also updates .gitignore to track all test files and adds tests/README.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…control

- Add ICLoraPipeline routing in ltx2.py (elif pipeline_kind == "ic_lora")
- Update ICLoraPipeline to accept stage_1_models/stage_2_models from WanGP
- Add _get_stage_model() helper, replace all model_ledger calls
- Add extra params (latent_conditioning_stage2, self_refiner_*) for compatibility
- Add TestICLoraAudioImageSmoke headless tests (signature + audio conditioning)
- Add ic_lora_audio_images test task template in create_test_task.py
- Add test_ic_lora_gpu.py with real GPU tests for all 3 IC LoRA types

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace Wan2GP/ with upstream v10.83 (was v10.01, 82 versions behind)
- Add LTX-2 model detection (_is_ltx2) and task type registration
- Wire 12 new generate_video() params (audio_scale, self_refiner, etc.)
- Add image/audio path bridging: start_image/end_image → PIL, audio_input → audio_guide
- Auto-detect image_prompt_type (T/TS/TE/TSE) for LTX-2 models
- Add use_ltx2 toggle in travel_between_images.py with native keyframe anchoring
- Fix smoke mode stubs to handle ltx2/qwen model types
- Add comprehensive test suite (28 tests, all passing)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WGP v10.83 removed the apply_changes() function - config is now applied
at module level during import. Updated headless_wgp.py to directly set
output paths on wgp module-level variables instead. Also added GPU test
script for LTX-2 19B validation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add per-phase integration status tables covering LTX-2 model support,
image anchoring, audio-driven video, and the Wan/LTX-2 toggle.
Also fix NameError for 'app' in wgp.py headless mode and add a
model download helper script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
43 smoke tests (no GPU) covering orchestrator payload, segment assignment,
frame quantization, dependency chains, and stitch decisions.
Real GPU test generates actual LTX-2 video transitioning between test images.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5 new test files (147 tests total, all passing):
- test_service_health.py: structural regression gate (set sizes, handler coverage, config health)
- test_all_services_headless.py: registration & model detection for all services
- test_wan_headless.py: WAN core services smoke tests (T2V, I2V, VACE, Flux, Hunyuan)
- test_ltx_headless.py: LTX family (LTXv + cross-model switching)
- test_task_conversion_headless.py: DB->GenerationTask pipeline & phase_config parsing

Also updates .gitignore to track all test files and adds tests/README.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…control

- Add ICLoraPipeline routing in ltx2.py (elif pipeline_kind == "ic_lora")
- Update ICLoraPipeline to accept stage_1_models/stage_2_models from WanGP
- Add _get_stage_model() helper, replace all model_ledger calls
- Add extra params (latent_conditioning_stage2, self_refiner_*) for compatibility
- Add TestICLoraAudioImageSmoke headless tests (signature + audio conditioning)
- Add ic_lora_audio_images test task template in create_test_task.py
- Add test_ic_lora_gpu.py with real GPU tests for all 3 IC LoRA types

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
After syncing with upstream's structural refactoring (headless_wgp.py →
source/models/wgp/orchestrator.py), port all LTX-2 19B integration
changes to the new file location:

- Add _is_ltx2() detection method + generation_helpers implementation
- Update smoke mode stubs for ltx2/qwen model detection
- Add LTX-2 image/audio parameter bridging (start_image → image_start,
  audio_input → audio_guide, auto image_prompt_type detection)
- Add WGP v10.83 parameters: alt_prompt, duration_seconds, pause_seconds,
  audio_scale, input_video_strength, override_attention, custom_settings,
  top_k, self_refiner_* to both passthrough and normal mode param dicts

https://claude.ai/code/session_01UKvbJG5LnAyZi26P6Jztn8
… Evolution LoRA

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests were referencing old source/task_types, source/task_conversion,
headless_wgp.py, and source/task_handlers/travel_between_images.py
paths that moved during upstream refactor. Also fix SupabaseClient
union type annotation for environments without supabase installed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace references to CICEK .png / 2AF816...jpeg with the available
1.jpg, 2.jpg, 3.jpg test fixtures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lora

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The section referenced old file paths (headless_wgp.py:774,
source/task_types.py, source/task_handlers/travel_between_images.py)
that no longer exist after the upstream refactor. Syncs README with
upstream at 9bb3102.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…d missing Path import

- orchestrator.py: upstream wgp.py removed apply_changes(); use
  get_default_settings + set_model_settings instead
- qwen_main.py: add missing Path and sys imports needed for PROJECT_ROOT

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts:
#	source/core/db/config.py
#	source/models/wgp/orchestrator.py
#	source/task_handlers/travel/orchestrator.py
Introduce model-aware parameterization so the travel pipeline supports
both Wan (grid=16, frame_step=4, fps=16) and LTX-2 (grid=64,
frame_step=8, fps=24) without breaking existing behavior.

Key changes:
- resolution_utils: add get_model_grid_size(), parameterize grid snapping
- orchestrator: replace hardcoded //4 quantization with _quantize_frames(frame_step),
  add model-aware FPS helpers, auto-disable SVI for LTX-2
- preflight: parameterize min_frames safety check (Wan=5, LTX-2=17)
- segment_processor: add LTX-2 TSEV prompt type builder
- stitch: model-aware FPS fallback, audio mux from segments
- ffmpeg_ops: add video_has_audio() and mux_audio_from_segments()
- task_registry: pass grid_size to snap_resolution_to_model_grid
- lora_utils: add ltx2 lora cleanup path

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The function was being called but never imported, causing all
phase_config-related tests to fail (11/147). It was likely missed
during the refactoring that moved it to source/core/params/.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…LoRA features

- headless_wgp.py: accept upstream 2-line facade (logic in source/models/wgp/)
- any2video.py, qwen_main.py, z_image_main.py: accept PR v10.83 sync
- travel_between_images.py: removed (upstream decomposed to source/task_handlers/travel/)
- Fix stale imports in tests: source.task_types → source.task_handlers.tasks.task_types,
  source.task_handlers.travel_between_images → source.task_handlers.travel.svi_config

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Conflicts resolved:
- headless_wgp.py: keep upstream 2-line facade
- any2video.py, qwen_main.py, z_image_main.py: keep PR v10.83 sync
- travel_between_images.py: removed (decomposed to travel/ package)
- Test files: use decomposed paths (orchestrator.py, task_registry.py, svi_config.py)
- .gitignore: keep generic glob patterns for test images

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add union control LoRA URL to ltx2_19B.json preload_URLs
- Update get_loras_transformer() to use single union LoRA when multiple
  control types requested (P+D, P+E, etc.), fallback to separate LoRAs
  for single control type
- Add smoke test (test_ltx2_pose_smoke.py) with AST-based verification
- Add workflow parameter reference (ltx2pose_params.py)
- Add GPU tests for pose workflow params and union control (PDVG)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace removed `apply_changes` API with `get_default_settings` + `set_model_settings` in orchestrator
- Add 12 missing v10.x parameters (alt_prompt, duration_seconds, audio_scale, self_refiner_*, etc.) to both passthrough and normal mode in wgp_params.py
- Fix union control LoRA 404 by correcting filename to `ltx-2-19b-ic-lora-union-control-ref0.5.safetensors`
- Fix NoneType crash in control_net_weight2 by moving defaults outside VACE-specific block
- Update test to search wgp_params.py after parameter refactor
- Update README with test results, bug fix log, IC-LoRA pipeline status

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Main README: minimal test section with run commands, link to tests/README.md
tests/README.md: compact summary with bug fixes, IC-LoRA insight, run instructions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements a new ltx2_multiframe task type that generates video with 4
guide images at configurable frame positions via ComfyUI. Image 4 is
encoded directly into the latent (inplace), images 1-3 are guide
conditioning at specified frames.

New files:
- ltx2_multiframe_workflow.py: builds API-format ComfyUI workflow
- ltx2_multiframe_handler.py: task handler (download, upload, execute)
- ltx2_multiframe_params.py: reference parameters
- test_ltx2_multiframe_smoke.py: structure/wiring smoke tests
- test_ltx2_multiframe_gpu.py: GPU integration tests

Modified:
- comfy_utils.py: add upload_image() to ComfyUIClient
- task_types.py: register ltx2_multiframe model mapping
- task_registry.py: register handler in dispatch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
xliry and others added 3 commits February 16, 2026 12:18
New ltx2_multiframe task type that supports N guide images at arbitrary
frame positions, reusing the existing latent injection mechanism.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mages

Enables both structural control (pose/depth/canny via IC LoRA) and
multi-frame guide images at arbitrary frame positions in a single generation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
peteromallet and others added 8 commits February 18, 2026 16:00
…LoRA + image guides

Single task type that accepts any combination of controls, replacing the need
to choose between ltx2, ltx2_multiframe, and ltx2_ic_multiframe on the frontend.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Complete test coverage suite built alongside the PR19 layered port,
covering all major modules: task handlers, model management, media
processing, queue lifecycle, params, logging, and utilities.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
xliry and others added 2 commits February 20, 2026 16:56
Broad indicators like "lightning" and "cocktail" caused false positives
for non-VACE models. Now only matches models with "vace" in the name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@xliry xliry changed the title Wan2GP v10.83 + LTX-2 19B + IC LoRA into main feat: Wan2GP v10.83 + LTX-2 19B + IC LoRA + Uni3C + ltx2_controlled + 1817-test suite Feb 20, 2026
xliry and others added 2 commits February 20, 2026 17:06
# Conflicts:
#	source/media/video/ffmpeg_ops.py
#	source/models/wgp/generation_helpers.py
#	source/models/wgp/generators/preflight.py
#	source/task_handlers/tasks/task_registry.py
#	source/task_handlers/tasks/task_types.py
#	source/task_handlers/travel/orchestrator.py
#	source/task_handlers/travel/segment_processor.py
#	source/task_handlers/travel/stitch.py
#	source/utils/resolution_utils.py
- "G" flag in video_prompt_type now only appended when image_guides are resolved
- Added os.path.exists() checks for local guide_video and image_guides paths
- Moved os import to module level (removed shadowing local imports)
- Added test_ltx2_controlled.py with 22 smoke tests + 1 GPU test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants