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
Open
feat: Wan2GP v10.83 + LTX-2 19B + IC LoRA + Uni3C + ltx2_controlled + 1817-test suite#19xliry wants to merge 45 commits intobanodoco:mainfrom
xliry wants to merge 45 commits intobanodoco:mainfrom
Conversation
- 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>
This reverts commit f07f666.
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>
…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>
4 tasks
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>
# 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Consolidated PR — includes everything from PR #20 (codex/pr19-layered-port) merged with additional features. Supersedes #20.
From PR #20
apply_changes→get_default_settings/set_model_settingsNew (not in PR #20)
ltx2_controlledunified task type — single entry point for any combination of IC-LoRA + standard LoRA + image guides_download_to_temp()helper — reusable URL→tempfile downloaderTest plan
ltx2_controlledpayloads (IC-LoRA, LoRA, image guides, combined)ltx2,ltx2_multiframe,ltx2_ic_multiframebackward compatSupersedes #20.
🤖 Generated with Claude Code