From 0cbd0de14c70b58c1af028fc09cd0d5d3d2efa5c Mon Sep 17 00:00:00 2001 From: Don Kackman Date: Tue, 27 Oct 2026 20:18:07 -0500 Subject: [PATCH 001/125] chore: open 0.17.0-alpha.1 on develop --- plugins/dw/.claude-plugin/plugin.json | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/dw/.claude-plugin/plugin.json b/plugins/dw/.claude-plugin/plugin.json index c1a6e533..b222535f 100644 --- a/plugins/dw/.claude-plugin/plugin.json +++ b/plugins/dw/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "dw", "description": "Compose MiniMax H3 video, MiniMax Music 3, LTX-2.5 and Kandinsky 6.0 workflows over a dw MCP server, and cut a multi-episode series from them: which template fits which shape, the hard rules, cost, and how to judge the output. Prompt format comes from the vendors' own guides.", - "version": "0.16.0", + "version": "0.17.0-alpha.1", "author": { "name": "Don Kackman" }, diff --git a/pyproject.toml b/pyproject.toml index 868017bd..bc55cba5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ name = "diffusers-workflow" # runtime (static in TOML because importing dw at build time would drag # torch into the build environment). Release tags must match it - see # docs/RELEASING.md -version = "0.16.0" +version = "0.17.0-alpha.1" description = "Declarative workflow engine and web UI for Hugging Face Diffusers" readme = "README.md" requires-python = ">=3.10" From 3bf128b02d06349c9b8b90a523c6cfdba3549e1d Mon Sep 17 00:00:00 2001 From: Don Kackman Date: Fri, 30 Oct 2026 18:59:05 -0500 Subject: [PATCH 002/125] docs: add an attributions page, linked from the README Credits the code included from other projects (RIFE, the H3 latent upscaler, the RF-Inversion community pipeline, sd_embed) and the projects whose ideas dw reimplemented: comfyui-vrgamedevgirl, Kablex/ComfyUI-Ref2VA-VSA (and FastVideo's VSA-H3 work), mo-akkakk's TemporalWindow-SpatialTiles, and Kinoloom. Co-Authored-By: Claude Opus 5.5 --- README.md | 1 + docs/ATTRIBUTIONS.md | 80 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 docs/ATTRIBUTIONS.md diff --git a/README.md b/README.md index e8d01692..86f77da2 100644 --- a/README.md +++ b/README.md @@ -245,3 +245,4 @@ frame interpolation and more. - [Testing](docs/TESTING.md) — Running the test suite - [Releasing](docs/RELEASING.md) — Cutting a release from a version tag - [Agent Loop](docs/AGENT_LOOP.md) — What the automated implementer/tester ticket labels mean, for anyone joining an Issue +- [Attributions](docs/ATTRIBUTIONS.md) — Code included from other projects, and the projects whose ideas dw reimplemented diff --git a/docs/ATTRIBUTIONS.md b/docs/ATTRIBUTIONS.md new file mode 100644 index 00000000..1adb6efc --- /dev/null +++ b/docs/ATTRIBUTIONS.md @@ -0,0 +1,80 @@ +# Attributions + +diffusers-workflow is Apache-2.0. This page credits the work it builds on that +a dependency list does not show: code that was copied in, and other projects +whose ideas were reimplemented here. Python dependencies are in +[requirements.txt](../requirements.txt) and [pyproject.toml](../pyproject.toml). +Model and LoRA weights keep their own licences, and each catalog entry +([workflows/models/](../workflows/models/), [loras/](../loras/)) names the +repository it downloads from. + +## Code included in this repository + +Each file keeps its upstream licence notice in its header. + +| File | Source | Licence | +|---|---|---| +| [dw/tasks/rife_model.py](../dw/tasks/rife_model.py) | The RIFE interpolation network from [hzwer/Practical-RIFE](https://github.com/hzwer/Practical-RIFE) | MIT, Copyright (c) Megvii Inc. | +| [dw/tasks/h3_latent_upscaler_model.py](../dw/tasks/h3_latent_upscaler_model.py) | The MiniMax H3 3D-convolution latent upscaler from [LBH-123-AI/Comfyui_Minimax_h3_latent_Upscaler](https://github.com/LBH-123-AI/Comfyui_Minimax_h3_latent_Upscaler) | MIT, Copyright (c) LBH-123-AI | +| [dw/community_pipelines/pipeline_flux_rf_inversion.py](../dw/community_pipelines/pipeline_flux_rf_inversion.py) | The diffusers community RF-Inversion pipeline, after [RF Inversion](https://rf-inversion.github.io/) by Litu Rout, Yujia Chen, Nataniel Ruiz, Constantine Caramanis, Sanjay Shakkottai and Wen-Sheng Chu | Apache-2.0, Copyright 2024 Black Forest Labs and The HuggingFace Team | +| [dw/prompt_weighting.py](../dw/prompt_weighting.py) | Based on [sd_embed](https://github.com/xhinker/sd_embed) by Andrew Zhu | Apache-2.0 | + +## Ideas reimplemented here + +These projects showed an approach that dw rebuilt in its own code for +diffusers. No code, prompt text or data was copied from them; where a licence +does not allow reuse, only the concept was taken. The issue numbers link to the +design discussion, which names the source files consulted. + +### [vrgamegirl19/comfyui-vrgamedevgirl](https://github.com/vrgamegirl19/comfyui-vrgamedevgirl) + +A ComfyUI node pack and set of workflows for MiniMax H3 and LTX-2 film making, +assessed in October 2026. It is source-available under a licence that does not +allow reuse here, so only concepts were taken. It inspired: + +- holding the reference audio during H3 denoising, and a refine pass after the + latent upscale ([#598](https://github.com/dkackman/diffusers-workflow/issues/598)) +- tracked, distance-gated face repair with LTX on face crops ([#599](https://github.com/dkackman/diffusers-workflow/issues/599)) +- the music-video timing stack: beat analysis, a lyric- and beat-aware cut + planner, pad-then-trim shots ([#600](https://github.com/dkackman/diffusers-workflow/issues/600)) +- overlapping windows for long video sources, joined with a cosine blend + (`window_video`, `join_windows`; [#601](https://github.com/dkackman/diffusers-workflow/issues/601)) +- the exact size and frame-count round trip for video-to-video templates + (`fit_to_model`, `restore_to_source`; [#602](https://github.com/dkackman/diffusers-workflow/issues/602)) +- the finishing tasks: LUT apply and make, film grain, sharpen, tonal controls + in `grade` ([#603](https://github.com/dkackman/diffusers-workflow/issues/603)) +- stem separation as its own task (`separate_stems`; [#604](https://github.com/dkackman/diffusers-workflow/issues/604)) +- strength-selectable same-size LTX refine and per-segment strength decay in + chains ([#606](https://github.com/dkackman/diffusers-workflow/issues/606)) +- laying out a reference sheet from individual images (`ingredients_grid`; [#607](https://github.com/dkackman/diffusers-workflow/issues/607)) +- the H3 dialogue-budget warnings ([#608](https://github.com/dkackman/diffusers-workflow/issues/608)) +- checking a take's transcript against the expected lines (`check_script`; [#609](https://github.com/dkackman/diffusers-workflow/issues/609)) +- the script-to-video shot-list contract and voice bible ([#610](https://github.com/dkackman/diffusers-workflow/issues/610)) +- H3 chunk continuation in latent space ([#611](https://github.com/dkackman/diffusers-workflow/issues/611)) +- trying the Alissonerdx H3 LoRAs, which its workflows use ([#612](https://github.com/dkackman/diffusers-workflow/issues/612)) + +### [Kablex/ComfyUI-Ref2VA-VSA](https://github.com/Kablex/ComfyUI-Ref2VA-VSA) + +Apache-2.0. Showed that MiniMax H3's Ref2VA attention could run block-sparse, +building on the [FastVideo](https://github.com/hao-ai-lab/FastVideo) team's +VSA-H3 sparse-attention work. dw's `sparse` attention backend +([dw/sparse_attention.py](../dw/sparse_attention.py), +[#931](https://github.com/dkackman/diffusers-workflow/issues/931)) runs on +[comfy-kitchen](https://pypi.org/project/comfy-kitchen/)'s Sol-Attn kernel, a +dependency. + +### [mo-akkakk/ComfyUI-MiniMaxH3-TemporalWindow-SpatialTiles](https://github.com/mo-akkakk/ComfyUI-MiniMaxH3-TemporalWindow-SpatialTiles) + +MIT. The tiled low-sigma refine after an H3 upscale (`refine_tiles`, +[#1043](https://github.com/dkackman/diffusers-workflow/issues/1043)), and the +approach of the test that checks a one-segment H3 chain is bit-identical to a +native run on a tiny random-weight model on CPU +([#1046](https://github.com/dkackman/diffusers-workflow/issues/1046)). + +### [harlixay7/Kinoloom](https://github.com/harlixay7/Kinoloom) + +MIT. Its seamless-chain research gave `analyze_seams` its saturation, +lightness, contrast and detail measures +([#1031](https://github.com/dkackman/diffusers-workflow/issues/1031)), and the +`script-to-video` skill its guidance on re-rolling a chained segment whose seam +fails ([#1034](https://github.com/dkackman/diffusers-workflow/issues/1034)). From e745bca9cc12fc070c8b72aff63b2e231e32c6b7 Mon Sep 17 00:00:00 2001 From: Don Kackman Date: Fri, 30 Oct 2026 21:33:05 -0500 Subject: [PATCH 003/125] feat(plugin): #1070 - minimax-h3 style-skills pointer (references/style.md) Lists MiniMax's eight H3 style packs by name with a per-pack install line, adds the medium line attributed to the packs and marked unprobed, and points SKILL.md and the plugin README at it. Co-Authored-By: Claude Opus 5.5 --- plugins/dw/README.md | 3 +- plugins/dw/skills/minimax-h3/SKILL.md | 6 +-- .../dw/skills/minimax-h3/references/style.md | 43 +++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 plugins/dw/skills/minimax-h3/references/style.md diff --git a/plugins/dw/README.md b/plugins/dw/README.md index 8b0b4685..b6a4bb24 100644 --- a/plugins/dw/README.md +++ b/plugins/dw/README.md @@ -35,7 +35,8 @@ npx skills add MiniMax-AI/MiniMax-Music3 --skill music-caption-rewriter Name the skill: the H3 repo also ships eight style packs (`brand-promo-video-generator` and the like) that `--skill '*'` would install -alongside it. +alongside it. When a request wants one of those looks, install that pack the +same way, by name; the `minimax-h3` skill's `references/style.md` lists them. Each skill quotes catalog names and numeric rules that `tests/test_plugin_skills.py` holds to the catalog and to the diffusers module that enforces them. A diff --git a/plugins/dw/skills/minimax-h3/SKILL.md b/plugins/dw/skills/minimax-h3/SKILL.md index 8a9db008..26a8623e 100644 --- a/plugins/dw/skills/minimax-h3/SKILL.md +++ b/plugins/dw/skills/minimax-h3/SKILL.md @@ -150,6 +150,7 @@ the rules are MiniMax's: Either way: write the whole script before the first shot. Repeat a speaker's voice description verbatim across shots. Several characters: one cropped reference each, never a group picture, which imposes its framing on every shot (`references/per-character.md`). Before writing lines, read `references/dialogue.md`: how long a line fits a clip, and what not to name. +A wanted look (clay, paper): `references/style.md`. ## Run and judge @@ -191,6 +192,5 @@ Before writing lines, read `references/dialogue.md`: how long a line fits a clip ## Sources -MiniMax-H3 model card and prompt guides, `h3-prompt-writing`, diffusers' -MiniMax-H3 modular pipeline, `lightx2v/Minimax-h3-Turbo` LoRA notes; read -2026-09-07; audit `docs/proposals/audits/2026-09-07-minimax-h3-audit.md`. +Model card, prompt guides, `h3-prompt-writing`, diffusers' pipeline, +`lightx2v/Minimax-h3-Turbo` notes; read 2026-09-07; audit `docs/proposals/audits/2026-09-07-minimax-h3-audit.md`. diff --git a/plugins/dw/skills/minimax-h3/references/style.md b/plugins/dw/skills/minimax-h3/references/style.md new file mode 100644 index 00000000..5cd187c9 --- /dev/null +++ b/plugins/dw/skills/minimax-h3/references/style.md @@ -0,0 +1,43 @@ +# MiniMax H3: a request that wants a look + +Part of the `minimax-h3` skill; its *Prompts* section says when to read this. + +MiniMax's H3 repo ships eight style packs next to `h3-prompt-writing`. Each +plans a whole piece in one look - style rules, shots, and the prompts for +them. When a request asks for one of these looks, install that pack by name +and let it write the prompts; the templates and hard rules in `SKILL.md` +still pick what runs. + +```bash +npx skills add MiniMax-AI/MiniMax-H3 --skill +``` + +Name the pack. `--skill '*'` installs all eight plus `h3-prompt-writing`. + +| Pack | Suits a request for | +|---|---| +| papercraft-stop-motion-explainer | an explainer built from folded, cut paper, animated frame by frame | +| paper-collage-explainer-generator | an editorial explainer of torn-paper and halftone cut-outs | +| 3d-animation-short-generator | a 3D animated short | +| handdrawn-live-video-generator | hand-drawn animation over a live-action scene | +| minimalist-product-ad-generator | a clean, minimal product ad | +| music-video-subtitle-generator | a music video with on-screen lyrics or subtitles | +| brand-promo-video-generator | a brand promo | +| co-op-game-intro-generator | an intro for a co-op game | + +The names are MiniMax's and nothing here checks them; if one fails to +install, the pack was renamed, so look in the repo's `skills/` folder. + +## Without a pack: name the medium, then what it looks like + +A medium named alone tends to render as its smooth CG version. Name it, then +the physical traits that make it that medium: for claymation, fingerprints, +tool marks and stepped, frame-by-frame motion; for paper, fibres, folds and +cut edges; for crayon, wobbling lines and uneven fill. + +This is MiniMax's practice, not ours: the papercraft, paper-collage and +hand-drawn packs each prompt this way (read 2026-10-30). It is **unprobed on +dw** - no job here has compared a bare medium with a described one. + +It doesn't override `SKILL.md`'s guide rule: a guide clip holds its look as +well as its motion, and no style prompt restyles it. From 7495862f8eca746e89e74e6cb1d2d7c4cd9bafca Mon Sep 17 00:00:00 2001 From: Don Kackman Date: Fri, 30 Oct 2026 22:37:08 -0500 Subject: [PATCH 004/125] feat(audit): #1071 - H3 AISkills probes 2, 3 and 5 on lem (all refuted) Co-Authored-By: Claude Opus 5.5 --- .../audits/2026-10-h3-aiskills-probes.md | 184 ++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 docs/proposals/audits/2026-10-h3-aiskills-probes.md diff --git a/docs/proposals/audits/2026-10-h3-aiskills-probes.md b/docs/proposals/audits/2026-10-h3-aiskills-probes.md new file mode 100644 index 00000000..190ce5bf --- /dev/null +++ b/docs/proposals/audits/2026-10-h3-aiskills-probes.md @@ -0,0 +1,184 @@ +# MiniMax-H3 AISkills claims: record-only probes (#1059 stage 2, #1071) + +Probe date: 2026-10-30 (lem's clock reads 2026-10-31 in the run ids). Server `lem`, develop @ 7735379d, +dw 0.17.0-alpha.1, diffusers 0.42.0.dev0, torch 2.14.1+cu130, two RTX 3090s. +Agent: claude-opus-5-5 (anthropic). Workspace `qa-h3-aiskills-probes`. +No engine, skill or template file was changed. This document only records results. + +The claims come from einhorn13/AISkills, as listed on #1059. Plan v1 there keeps three of them +(2, 3 and 5). Probes 1 and 4 are deferred, and 6 and 7 are dropped. Neither the plan nor this +document copies anything from that repository. + +## Configuration + +Every probe ran at 960x544 and 124 frames, int4 sdnq (VAE int8), 24 fps. + +| Probe | Workflow | Pipeline | LoRA (`lightx2v/Minimax-h3-Turbo`) | Steps | Shift (video/audio) | +| --- | --- | --- | --- | --- | --- | +| P2 | `templates/minimax/voice-timbre-reference`, as shipped | Ref2VA, one audio reference | `minimax_h3_ref2v_turbo_8step_v1.0_768p_bf16.safetensors`, pinned by the template (plan: runs as shipped, despite the `` line) | 9 | 12 / 3 | +| P3 | `p3-style-reference`, hand-authored and saved in the workspace | Ref2VA, one image reference | `minimax_h3_ref2v_turbo_8step_v1.0_768p_bf16.safetensors` | 9 | 12 / 3 | +| P5 | `templates/minimax/video-with-audio`, template defaults | T2VA | `minimax_h3_fl2v_turbo_4step_v1.2_768p_bf16.safetensors` (the template's default) | 5 | 6 / 3 | + +P3's workflow copies the `reference-to-video` step's loading (sparse attention, tau 0.5, top-k +0.15, block-level group offload) and drops the audio reference. It has one +`MiniMaxH3ImageReference` from the variable `subject`. + +Each arm ran on seeds 1001 and 2002. A claim is **held** only when both seeds of the broken arm +show the effect and neither seed of the followed arm does. It is **refuted** when the broken arm +doesn't show the effect, and **not settled** when the seeds disagree. A job that failed would be +**not run**. None did: all 12 probe jobs and 4 check-script jobs succeeded. + +## Verdicts + +| # | Claim | Verdict | Jobs | Observation | +| --- | --- | --- | --- | --- | +| P2 | A timbre-only audio reference replays its source words. | **refuted** | clip A: 679d1647474e (s1001), 23951087cc0e (s2002). Clip B: 1ae32a340b81 (s1001), 8b5321bf4db3 (s2002). check-script: 558af206ad68, e247ffc86d1b, 58d17f8beea2, 94115820bfa5 | On all four, Whisper heard only the new line: "Bring the copper kettle inside before the storm reaches the harbor." `findings` was empty (no `line_mismatch`), the similarity was 0.9091 (only the harbour/harbor spelling differed), and nothing landed in `unmatched`. No source word from either clip was transcribed. See *Probe 2*. | +| P3 | A style image pulls in its person and composition. | **refuted**, but the reference also carried no style, so the probe says little about style references in general | arm a (old man at window): f90a041af26a (s1001), 1b751acfc1d4 (s2002). Arm b (still life): b1469a34cea9 (s1001), db3b5b47095b (s2002) | On no seed of either arm did the old man, his cap or beard, a seated pose, the window, its curtains or the reference's framing appear. Frames 0–5 show the beach shot, so the reference didn't leak into frame 0. All four clips are photographic, not watercolour. Same-seed clips of the two arms are near-identical, so the reference had no visible effect under this phrasing. See *Probe 3*. | +| P5 | "Screen right" plus the anatomical side holds handedness; the anatomical side alone misses. | **refuted** | arm a ("in her left hand"): a6c07856c701 (s1001), cb19f9007653 (s2002). Arm b ("in her left hand, on screen right"): e96170407504 (s1001), 7ce8ed6f90ab (s2002) | All four clips are right on both counts. She lifts the mug with her left hand, which shows on screen right because she faces the camera, and holds it at chest height there to the end. Her right hand stays flat on the counter, on screen left. See *Probe 5*. | + +## Probe 2: timbre-only audio reference + +The template's `voice` step makes the reference clip with Bark (`v2/en_speaker_6`) from +`voice_line`. Its Ref2VA step is prompted to take only the timbre of `