Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
792 commits
Select commit Hold shift + click to select a range
f129a03
feat(diffusers): expose extended video workflows
sdevil7th Aug 14, 2026
4589387
feat(diffusers): close Chroma and LTX2 direct routes
sdevil7th Aug 14, 2026
161710f
feat(diffusers): promote exact image edit and inpaint routes
sdevil7th Aug 14, 2026
e9477bd
feat(diffusers): seal Chroma and LTX2 closure
sdevil7th Aug 14, 2026
1272d31
test(coverage): close exact pin partition
sdevil7th Aug 14, 2026
d6b9069
chore(transformers): relock latest main
sdevil7th Aug 14, 2026
94d5e09
docs(janus): record app cache install receipt
sdevil7th Aug 14, 2026
b2d57ac
feat(workflows): regenerate expanded canonical library
sdevil7th Aug 14, 2026
5e2aae9
feat(coverage): reseal expanded workflow contracts
sdevil7th Aug 14, 2026
08fc3c7
docs(roadmap): record final upstream closure
sdevil7th Aug 14, 2026
d6e5d89
build(web): mirror final client bundle
sdevil7th Aug 14, 2026
28eb577
feat(templates): draft hidden workflow authoring specs
sdevil7th Aug 15, 2026
22e7e87
feat(research): resolve Comfy contract candidates
sdevil7th Aug 15, 2026
7e7cf34
feat(research): resolve ambiguous Comfy metadata
sdevil7th Aug 15, 2026
e08c9cc
fix(research): map text outputs to generation workflows
sdevil7th Aug 15, 2026
8c29373
feat(media): add bounded image operations
sdevil7th Aug 15, 2026
bf6e021
feat(studio): expose built-in image operations
sdevil7th Aug 15, 2026
c4abd38
feat(workflows): publish built-in image operation contracts
sdevil7th Aug 15, 2026
35aa93a
test(runtime): allow install-free execution profiles
sdevil7th Aug 15, 2026
e44a48f
feat(media): add bounded image resizing
sdevil7th Aug 15, 2026
5c7eb92
feat(media): publish bounded image upscale workflow
sdevil7th Aug 15, 2026
816c421
feat(media): add bounded mask compositing
sdevil7th Aug 15, 2026
afc18ea
feat(workflows): publish mask composite contract
sdevil7th Aug 15, 2026
9e2ab0e
feat(media): add bounded video utility workflows
sdevil7th Aug 15, 2026
bd7f6f8
feat(workflows): publish bounded video utility contracts
sdevil7th Aug 15, 2026
f92dfe5
test(runtime): close built-in video delivery assertions
sdevil7th Aug 15, 2026
9000d4b
feat(video): add bounded model upscale workflow
sdevil7th Aug 15, 2026
59af289
fix(video): bind upscale preview to retained output
sdevil7th Aug 15, 2026
1daa313
feat(workflows): publish model video upscale contract
sdevil7th Aug 15, 2026
c5eafde
test(runtime): close expanded execution contracts
sdevil7th Aug 15, 2026
19aa955
feat(video): add bounded trim reverse and tile
sdevil7th Aug 15, 2026
c5b3568
feat(workflows): publish retained video utilities
sdevil7th Aug 15, 2026
6ecd3c2
feat(coverage): seal retained video candidates
sdevil7th Aug 15, 2026
7fb36b5
chore(research): reseal video utility sources
sdevil7th Aug 15, 2026
7c54a7a
feat(audio): add bounded built-in operations
sdevil7th Aug 15, 2026
9200b8c
feat(workflows): publish built-in audio utilities
sdevil7th Aug 15, 2026
b7f8ca9
feat(coverage): seal built-in audio candidates
sdevil7th Aug 15, 2026
ed33fee
test(runtime): classify built-in audio delivery
sdevil7th Aug 15, 2026
ceffd15
feat(data): add bounded built-in operations
sdevil7th Aug 15, 2026
b720800
feat(workflows): publish built-in data utilities
sdevil7th Aug 15, 2026
1f974ce
feat(coverage): seal built-in data candidates
sdevil7th Aug 15, 2026
9e2a1d5
test(studio): reseal data workflow closure
sdevil7th Aug 15, 2026
f997e78
feat(data): add bounded text branch selection
sdevil7th Aug 15, 2026
456c6e6
feat(workflows): publish bounded text switching
sdevil7th Aug 15, 2026
7406385
feat(coverage): seal bounded switch candidate
sdevil7th Aug 15, 2026
22229bb
feat(video): add bounded frame interpolation
sdevil7th Aug 15, 2026
d8e2c78
feat(workflows): publish bounded frame interpolation
sdevil7th Aug 15, 2026
335dce8
feat(coverage): seal bounded interpolation candidate
sdevil7th Aug 15, 2026
3cf90f8
fix(nodes): expose executable option containers
sdevil7th Aug 15, 2026
9ef523e
fix(runtime): replace document-local node collisions
sdevil7th Aug 15, 2026
a2168d4
fix(audio): route exports to the audio directory
sdevil7th Aug 15, 2026
4e8b058
feat(data): add bounded review exports
sdevil7th Aug 15, 2026
f412601
feat(workflows): persist built-in data outputs
sdevil7th Aug 15, 2026
6198c43
chore(coverage): reseal durable data workflows
sdevil7th Aug 15, 2026
574384c
test(studio): align expanded spec inventory
sdevil7th Aug 15, 2026
06c1b12
feat(review): capture local candidate receipts
sdevil7th Aug 15, 2026
01dbe05
fix(transformers): bind generic loader identities
sdevil7th Aug 15, 2026
02c31c9
fix(transformers): apply bounded text chat templates
sdevil7th Aug 15, 2026
0214e53
chore(workflows): reseal Transformers loader contracts
sdevil7th Aug 15, 2026
b3c4c75
docs(roadmap): record final local review state
sdevil7th Aug 15, 2026
13e995e
feat(review): append bounded local receipts
sdevil7th Aug 15, 2026
47e5fb1
fix(runtime): resolve loader profiles by mode
sdevil7th Aug 15, 2026
b98250a
fix(audio): disable unsupported LongCat VAE slicing
sdevil7th Aug 15, 2026
da37883
fix(audio): disable unsupported LongCat VAE tiling
sdevil7th Aug 15, 2026
accef77
chore(workflows): reseal LongCat audio contract
sdevil7th Aug 15, 2026
5c52f55
docs(roadmap): record expanded local review batch
sdevil7th Aug 15, 2026
4f53667
fix(server): reject malformed graph receipts
sdevil7th Aug 15, 2026
e2caae7
docs(roadmap): record AnimateDiff CPU ceiling
sdevil7th Aug 15, 2026
4b65aea
fix(runtime): enforce graph execution deadlines
sdevil7th Aug 15, 2026
5a1fe1f
docs(roadmap): record automatic graph deadlines
sdevil7th Aug 15, 2026
6796b74
feat(research): source-review exact Comfy candidates
sdevil7th Aug 15, 2026
57a6e8b
docs(roadmap): record Comfy source reviews
sdevil7th Aug 15, 2026
f80f83e
feat(research): resolve Comfy model partitions
sdevil7th Aug 15, 2026
0fa07b1
docs(roadmap): record Comfy partition decisions
sdevil7th Aug 15, 2026
40adea2
feat(research): resolve Comfy Qwen edit candidates
sdevil7th Aug 15, 2026
5d0eb82
docs(roadmap): record Comfy Qwen decisions
sdevil7th Aug 15, 2026
5af255a
feat(research): resolve Comfy LTX generations
sdevil7th Aug 15, 2026
7eff7e8
docs(roadmap): record Comfy LTX decisions
sdevil7th Aug 15, 2026
c756949
feat(research): resolve Comfy ACE generations
sdevil7th Aug 15, 2026
5d88d51
docs(roadmap): record Comfy ACE decisions
sdevil7th Aug 15, 2026
dfe18ec
feat(research): resolve Comfy Wan control tasks
sdevil7th Aug 15, 2026
0adef06
docs(roadmap): record Comfy Wan decisions
sdevil7th Aug 15, 2026
9230b11
feat(research): resolve Comfy Qwen control variants
sdevil7th Aug 15, 2026
bfa17a5
docs(roadmap): record Comfy Qwen control decisions
sdevil7th Aug 15, 2026
dd5591e
feat(research): resolve Comfy image generation gaps
sdevil7th Aug 15, 2026
a916887
docs(roadmap): record Comfy image decisions
sdevil7th Aug 15, 2026
ac7c320
feat(research): resolve Comfy Flux and SDXL gaps
sdevil7th Aug 15, 2026
da141c0
docs(roadmap): record Comfy Flux SDXL decisions
sdevil7th Aug 15, 2026
0a48984
feat(research): resolve Comfy LTX auxiliary routes
sdevil7th Aug 15, 2026
265f815
docs(roadmap): record Comfy LTX auxiliary decisions
sdevil7th Aug 15, 2026
a81bd03
feat(research): resolve Comfy motion variants
sdevil7th Aug 15, 2026
3c157c6
docs(roadmap): record Comfy motion reviews
sdevil7th Aug 15, 2026
e6205d1
feat(research): resolve Comfy Wan VACE variants
sdevil7th Aug 15, 2026
6fb7e3a
docs(roadmap): record Comfy Wan VACE reviews
sdevil7th Aug 15, 2026
527709b
feat(research): resolve Comfy utility model routes
sdevil7th Aug 15, 2026
85100b0
docs(roadmap): record Comfy utility reviews
sdevil7th Aug 15, 2026
9d62715
feat(research): resolve Comfy multimodal text routes
sdevil7th Aug 15, 2026
abcf084
docs(roadmap): record Comfy text reviews
sdevil7th Aug 15, 2026
80f86fd
feat(research): resolve Comfy MiniMax media contracts
sdevil7th Aug 15, 2026
18bcaa9
docs(roadmap): record Comfy MiniMax reviews
sdevil7th Aug 15, 2026
04c0445
feat(research): resolve Comfy audio driven video routes
sdevil7th Aug 15, 2026
384b53b
docs(roadmap): record Comfy audio video reviews
sdevil7th Aug 15, 2026
f7bf0b1
feat(research): resolve Comfy inpaint media routes
sdevil7th Aug 15, 2026
2868866
docs(roadmap): record Comfy inpaint reviews
sdevil7th Aug 15, 2026
24efba9
feat(research): resolve Comfy endpoint video routes
sdevil7th Aug 15, 2026
2736269
docs(roadmap): record Comfy endpoint video reviews
sdevil7th Aug 15, 2026
b433ff8
feat(research): resolve Comfy video model generations
sdevil7th Aug 15, 2026
b53360f
docs(roadmap): record Comfy video generation reviews
sdevil7th Aug 15, 2026
b091868
feat(research): resolve Comfy composite video routes
sdevil7th Aug 15, 2026
3a9b354
docs(roadmap): record Comfy composite video reviews
sdevil7th Aug 15, 2026
5f60154
feat(research): resolve Comfy HiDream variants
sdevil7th Aug 15, 2026
7fa7f98
docs(roadmap): record Comfy HiDream reviews
sdevil7th Aug 15, 2026
b8a884a
feat(research): resolve Comfy image model variants
sdevil7th Aug 15, 2026
99518ef
docs(roadmap): record Comfy image model reviews
sdevil7th Aug 15, 2026
620dc9a
feat(research): resolve Comfy image generation models
sdevil7th Aug 15, 2026
3339883
docs(roadmap): record Comfy image generation reviews
sdevil7th Aug 15, 2026
45e1d72
feat(research): complete Comfy source contract reviews
sdevil7th Aug 15, 2026
bb0df40
docs(roadmap): close Comfy source review inventory
sdevil7th Aug 15, 2026
d827762
feat(image): add bounded image stitching
sdevil7th Aug 15, 2026
411eff2
feat(workflows): add canonical image stitching
sdevil7th Aug 15, 2026
3275f22
feat(templates): seal image stitching authoring contract
sdevil7th Aug 15, 2026
5f76910
docs(roadmap): record image stitching closure
sdevil7th Aug 15, 2026
a5171e4
test(coverage): align expanded workflow catalog
sdevil7th Aug 15, 2026
8eb958e
fix(image): normalize stitch facade output
sdevil7th Aug 15, 2026
7478b80
docs(roadmap): record stitch execution receipt
sdevil7th Aug 15, 2026
39a0e51
fix(reviews): bootstrap local receipt capture
sdevil7th Aug 15, 2026
c8bae74
feat(reviews): reconcile unchanged graph evidence
sdevil7th Aug 15, 2026
4999acd
docs(roadmap): reconcile local review evidence
sdevil7th Aug 15, 2026
1cb2d5a
fix(research): reuse canonical Wan FLF boundary
sdevil7th Aug 15, 2026
e0481ed
complete generic contracts and exact quantized runtimes
sdevil7th Aug 20, 2026
5c87768
rebuild client assets from Studio stabilization
sdevil7th Aug 20, 2026
40c4f25
complete GLM mixed-dtype prompt bridge
sdevil7th Aug 20, 2026
87e67f5
Checkpoint shared source before AMD runtime fixes
sdevil7th Sep 5, 2026
d70d737
feat: Added clusters structure for actual modular diffusers visualisa…
sdevil7th Sep 11, 2026
d395b68
fix(contracts): include reviewed conditional snapshot in source
sdevil7th Sep 11, 2026
8c12b46
fix: make clean-checkout validation portable and preserve video frames
sdevil7th Sep 11, 2026
e2d449f
fix: emit coverage ledgers with stable Git-compatible newlines
sdevil7th Sep 11, 2026
1368696
test: make runtime and filesystem fixtures explicit across platforms
sdevil7th Sep 11, 2026
01019a9
test: keep relative-path fixture on the checkout drive
sdevil7th Sep 11, 2026
90dadc3
Merge pull request #3 from sdevil7th/integrate/amd-runtime
sdevil7th Sep 11, 2026
5393ed4
chore: Fixed right panel issues and tested on windows further
sdevil7th Sep 14, 2026
40d9e09
chore: Merged other dev changes
sdevil7th Sep 14, 2026
1c4aa34
test: isolate Windows ACL checks from PowerShell Core modules
sdevil7th Sep 14, 2026
9987159
Merge pull request #4 from sdevil7th/integrate/amd-runtime
sdevil7th Sep 14, 2026
4cac48b
docs: plan generic Diffusers workbench migration
sdevil7th Sep 17, 2026
aa2340c
build: bundle generic-stage node discovery
sdevil7th Sep 17, 2026
5d03622
build: bundle compatible drag-to-add node discovery
sdevil7th Sep 17, 2026
58de6bf
docs: mirror workbench progress and M2 implementation checklist
sdevil7th Sep 17, 2026
9e289b6
Bundle independent workbench views and resource controls
sdevil7th Sep 17, 2026
0456c1a
Record completed mode separation and workbench action inventory
sdevil7th Sep 17, 2026
0f16764
Publish generic Modular stage declarations from existing adapters
sdevil7th Sep 17, 2026
ca5f6d0
Track completed Modular operation contract foundation
sdevil7th Sep 17, 2026
b08c703
Describe standard Diffusers operations through existing task adapters
sdevil7th Sep 17, 2026
35dff1e
Track completed standard operation declaration milestone
sdevil7th Sep 17, 2026
1ebe608
feat: resolve canonical Diffusers operations and task coverage
sdevil7th Sep 17, 2026
6e849c7
docs: mark workbench M3 complete with paired validation
sdevil7th Sep 17, 2026
3d89d99
feat: derive connected operation starters from reviewed contracts
sdevil7th Sep 17, 2026
1c9144f
docs: record completed M4 and paired client implementation
sdevil7th Sep 17, 2026
897e27a
Separate output recomputation from model lifetime and preserve cached…
sdevil7th Sep 17, 2026
3df354d
Record paired M5 checkpoint and remaining qualification work
sdevil7th Sep 17, 2026
b2e8ec5
Complete runtime reuse with bounded memory and isolated retry state
sdevil7th Sep 17, 2026
2404236
Record paired M5 completion commits
sdevil7th Sep 17, 2026
12fb46e
feat(extensions): add reviewed custom node staging and reload
sdevil7th Sep 17, 2026
1d59ccf
docs(workbench): record completed M6 implementation pair
sdevil7th Sep 17, 2026
875176b
Add script-free setup and reproducible API service packages
sdevil7th Sep 18, 2026
95b2c27
Record M7 implementation commits and remaining Windows validation
sdevil7th Sep 18, 2026
f4d84cb
Track remaining M7 Windows runner requirement
sdevil7th Sep 18, 2026
9931f22
Integrate M8 Block workbench and preserve legacy runtime compatibility
sdevil7th Sep 18, 2026
1bee5ed
Record completed M8 implementation commits and validation
sdevil7th Sep 18, 2026
3424faf
Honor offline mode when loading Modular Diffusers components
sdevil7th Sep 18, 2026
b533a69
Record downloaded-model validation and outstanding DDPM recipes
sdevil7th Sep 18, 2026
706aa12
Fix canonical loader defaults and validate Windows workbench
sdevil7th Sep 18, 2026
a39e34d
Bind ambiguous standard operation loaders to their selected public pr…
sdevil7th Sep 18, 2026
dad53f4
Document uv and npm developer setup directly in README
sdevil7th Sep 20, 2026
594769b
Plan Creator and Developer workspaces with model qualification gates
sdevil7th Sep 20, 2026
eeddbf7
Bundle Creator and Developer workspace controls from client 236ed49
sdevil7th Sep 20, 2026
5e0d4de
feat(workflows): bind starter profiles and release stale signal waits
sdevil7th Sep 20, 2026
d135926
chore(web): publish Creator and Developer entry flows
sdevil7th Sep 20, 2026
d3a52eb
chore(web): publish shared node and Block inspector
sdevil7th Sep 20, 2026
a9e2d06
chore(web): publish Saved Block canvas discovery
sdevil7th Sep 20, 2026
3d2a966
chore(web): publish unified node discovery
sdevil7th Sep 20, 2026
7905628
chore(web): publish bound node drag support
sdevil7th Sep 20, 2026
291098d
feat(catalog): expose compiled Block interfaces for canvas search
sdevil7th Sep 20, 2026
afb67cd
docs(workspaces): record shared Block authoring acceptance
sdevil7th Sep 20, 2026
9881b52
feat(web): publish loader-owned model and task changes
sdevil7th Sep 20, 2026
b8ec9b2
fix(web): publish guarded Block model switching
sdevil7th Sep 20, 2026
8aabdf1
fix(web): publish generic Block input preservation
sdevil7th Sep 20, 2026
6ff5d73
feat(web): publish generic Block model and task switching
sdevil7th Sep 20, 2026
8a69d9b
Publish connected Block input preservation and track execution gaps
sdevil7th Sep 20, 2026
bf949d6
Resolve Modular graph tasks for Auto planning and output history
sdevil7th Sep 20, 2026
ba48ba1
Publish captured-history Gallery fixes and update W5 progress
sdevil7th Sep 21, 2026
b5dfb37
Publish task-required media contracts and client readiness checks
sdevil7th Sep 21, 2026
626cc4c
Complete W5 task contracts and resource planning with verified client…
sdevil7th Sep 21, 2026
349f4bf
Resolve custom Hub sources and accept optional Mellon model metadata
sdevil7th Sep 21, 2026
a1f2464
Connect approved Modular blocks to managed model components
sdevil7th Sep 21, 2026
4bc0028
Load pinned custom block components through shared model management
sdevil7th Sep 21, 2026
0fb3750
Publish bounded workflow browsing and persistent planning feedback
sdevil7th Sep 21, 2026
b34eb6f
Reduce cold-load progress bursts and history write latency
sdevil7th Sep 21, 2026
3a13bd1
Keep generic Modular field metadata responsive during inference
sdevil7th Sep 21, 2026
df41cd5
Complete W7 metadata isolation and recovery acceptance
sdevil7th Sep 21, 2026
5812553
Fix Sana Sprint step schedules and publish image utility discovery
sdevil7th Sep 21, 2026
8ccb022
Seed generic image workflows from selected model defaults
sdevil7th Sep 21, 2026
bbca963
Keep retained history and Saved Block discovery responsive
sdevil7th Sep 21, 2026
3d6d229
Track completed native image-to-image modification checks
sdevil7th Sep 21, 2026
8a0b2d9
fix: align generic image step controls with adapter limits
sdevil7th Sep 21, 2026
f9b6920
feat: add generic bounded Transformers depth workflows
sdevil7th Sep 21, 2026
cbd5ae9
build: ship generic model discovery and refreshed catalog fingerprints
sdevil7th Sep 21, 2026
86422fd
fix: bundle verified legacy Block switching and preview recovery
sdevil7th Sep 21, 2026
baf56cd
Bundle shared image preprocessor discovery from client 545fd17
sdevil7th Sep 21, 2026
e8ff74e
Expose existing upscale action as an integrated workflow operation
sdevil7th Sep 21, 2026
20f31c2
Record native upscale recovery and remaining W8 acceptance
sdevil7th Sep 21, 2026
df0565d
Fix cached image pipeline loading, explicit sizes and progress
sdevil7th Sep 21, 2026
7c356a0
Respect image dimensions and index exact run history lookups
sdevil7th Sep 22, 2026
367d514
Record native dimension and concurrent run lookup checks
sdevil7th Sep 22, 2026
e54be61
Record verified Ovis and LongCat native recoveries
sdevil7th Sep 22, 2026
136ee2e
Pin installed upscaler identities when model selections change
sdevil7th Sep 22, 2026
bedf8aa
Publish tested Saved Block metadata routing client
sdevil7th Sep 22, 2026
76cb472
Track verified x4 Saved Block model-switch recovery
sdevil7th Sep 22, 2026
c36938e
Fix distilled guidance defaults in new image workflows
sdevil7th Sep 22, 2026
0134d5d
Record W8 pause checkpoint and prioritize W9 qualification
sdevil7th Sep 22, 2026
bc5a401
Expose text prompts as string inputs in service packages
sdevil7th Sep 22, 2026
cb1671a
Omit completed preview observations from portable services
sdevil7th Sep 22, 2026
5561d3a
Initialize new audio operations with reviewed model defaults
sdevil7th Sep 22, 2026
7f16cab
Capture audio inputs after adapter normalization
sdevil7th Sep 22, 2026
80bcec6
Handle unimplemented optional VAE memory hooks
sdevil7th Sep 22, 2026
1fd77ef
Resolve reviewed Modular controls for service interfaces
sdevil7th Sep 22, 2026
68a41d8
Initialize video and 3D workflows from reviewed defaults
sdevil7th Sep 22, 2026
8b34771
Record W8 pause and W9 native service coverage
sdevil7th Sep 22, 2026
9cc1ba1
Add generic Qwen Image 2.1 workflows on reviewed Diffusers runtime
sdevil7th Sep 22, 2026
433a19e
Keep ROCm multimodal vision embeddings finite with eager attention
sdevil7th Sep 22, 2026
7d412c6
Preserve multi-file inputs in exported service workflows
sdevil7th Sep 22, 2026
4b4a430
Document qualified image demo workflows and remaining acceptance scope
sdevil7th Sep 22, 2026
1710efe
Mark the published image demo checkpoint complete
sdevil7th Sep 22, 2026
0ecf112
Improve workflow authoring defaults and ship task-first model selection
sdevil7th Sep 22, 2026
59bc342
Add task-first workflow authoring support
sdevil7th Sep 22, 2026
101b02a
Complete native image authoring, recovery, and editorial demo
sdevil7th Sep 24, 2026
b2c7f81
Include readiness inventory in fresh installs and fix Windows UTF-8 test
sdevil7th Sep 24, 2026
c3d6c1d
Fix platform-dependent readiness inventory and catalog tests
sdevil7th Sep 24, 2026
1700b26
Simplify custom node imports and preserve Guidance control visibility
sdevil7th Sep 25, 2026
e7cb735
docs: surface uv and npm quick start in README
sdevil7th Sep 25, 2026
41ddff9
fix: resolve installed caches and ACE audio offload on Windows
sdevil7th Sep 25, 2026
f8546c0
fix: recognize canonical managed cache roots
sdevil7th Sep 26, 2026
ed07fe4
build: include reviewed Auto runtime targets in bundled client
sdevil7th Sep 26, 2026
3c16c1d
build: refresh coverage fingerprints for bundled client
sdevil7th Sep 26, 2026
01d9191
Fix cached Modular Diffusers loading and Gallery bundle validation
sdevil7th Sep 26, 2026
58d54ec
Merge pull request #5 from sdevil7th/feat/generic-diffusers-workbench
sdevil7th Sep 26, 2026
a0d29db
fix: expose required encoder inputs and clarify Auto qualification
sdevil7th Sep 26, 2026
a75d30a
build: bundle workflow authoring fixes from client 73c6598
sdevil7th Sep 26, 2026
7be1f81
Refresh coverage ledgers for rebuilt client bundle
sdevil7th Sep 26, 2026
ec01269
Merge pull request #6 from sdevil7th/fix/workflow-block-authoring
sdevil7th Sep 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 6 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:

backend:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
Expand All @@ -29,7 +30,7 @@ jobs:
- os: windows-latest
python: '3.12'
managed-python: ./.venv/Scripts/python.exe
- os: macos-14
- os: macos-15
python: '3.12'
managed-python: ./.venv/bin/python
runs-on: ${{ matrix.os }}
Expand All @@ -40,8 +41,10 @@ jobs:
with: { python-version: '${{ matrix.python }}' }
- uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6
with: { version: '0.11.26' }
- run: python -m modiff.install --accelerator cpu --backend-only --non-interactive --json
- run: uv run --no-project --no-sync --python 3.12 -m modiff.dev plan --accelerator cpu --backend-only --json
- run: uv run --no-project --no-sync --python 3.12 -m modiff.dev setup --accelerator cpu --backend-only --non-interactive --json
- run: uv pip install --python ${{ matrix.managed-python }} -r requirements/test.txt
- run: uv pip check --python ${{ matrix.managed-python }}
- run: ${{ matrix.managed-python }} -m modiff.preflight --json --check-port 8088 --fail-on-error
- run: uv run --no-project --no-sync --python 3.12 -m modiff.dev check --json --check-port 8088 --fail-on-error
- run: ${{ matrix.managed-python }} scripts/smoke_service_package.py
- run: ${{ matrix.managed-python }} -m pytest -q
100 changes: 100 additions & 0 deletions .github/workflows/qualify-optional-runtime-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Qualify optional runtime on macOS

on:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: optional-runtime-macos-${{ github.ref }}
cancel-in-progress: false

jobs:
qualify-macos-arm64:
runs-on: macos-15
timeout-minutes: 35
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4

- name: Verify hosted target
run: |
test "$(uname -m)" = "arm64"
sw_vers

- name: Prepare prospective clean base
run: |
cat > "$RUNNER_TEMP/prospective-base.patch" <<'PATCH'
diff --git a/pyproject.toml b/pyproject.toml
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -12,16 +12,14 @@ dependencies = [
"aiohttp-cors>=0.7.0",
"kornia>=0.8.1",
"nanoid>=2.0.0",
# Keep unqualified targets base-delivered until their executable qualifier
# passes; Linux/Windows x86-64 receive the exact optional overlay on use.
- "peft>=0.17.0; sys_platform == 'darwin' or platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 'ARM64'",
"protobuf>=6.31.1",
"scipy>=1.15.2",
"sentencepiece>=0.2.0",
"torch>=2.6.0",
"torchsde>=0.2.6",
"torchvision>=0.21.0",
- "transformers>=4.49.0; sys_platform == 'darwin' or platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 'ARM64'",
"diffusers @ git+https://github.com/huggingface/diffusers.git@fbf49e7f35857f76bc57b177e26f12b03687c668",
"ftfy>=6.3.1",
"huggingface-hub>=1.31.0,<2.0",
PATCH
git apply --check "$RUNNER_TEMP/prospective-base.patch"
git apply "$RUNNER_TEMP/prospective-base.patch"
test "$(git diff --name-only)" = "pyproject.toml"
git diff --check
git diff -- pyproject.toml > "$RUNNER_TEMP/prospective-base.diff"
git config user.name "MoDiff qualification"
git config user.email "qualification@modiff.invalid"
git add -- pyproject.toml
git commit -m "chore: prepare prospective macOS qualification base"
test -z "$(git status --porcelain)"

- name: Install isolated CPU base
run: ./install.sh --accelerator cpu --backend-only --non-interactive

- name: Require clean-base qualification readiness
run: |
./scripts/with-runtime-env.sh ./.venv/bin/python \
scripts/qualify_optional_runtime.py --preflight-only \
--profile-id huggingface-transformers-main-96fe6dce-peft-0.20.0 \
| tee "$RUNNER_TEMP/preflight.json"
./.venv/bin/python -c 'import json, os, pathlib; value=json.loads(pathlib.Path(os.environ["RUNNER_TEMP"], "preflight.json").read_text()); assert value["status"] == "ready"; assert value["profileId"] == "huggingface-transformers-main-96fe6dce-peft-0.20.0"; assert value["platform"] == "macos"; assert value["machine"] == "arm64"; assert value["sourceRevisionReady"] is True; assert value["cleanBase"] is True; assert value["stagedPackagesPresent"] == []'

- name: Run explicit-consent qualification
run: |
./scripts/with-runtime-env.sh ./.venv/bin/python \
scripts/qualify_optional_runtime.py --consent \
--profile-id huggingface-transformers-main-96fe6dce-peft-0.20.0 \
--evidence "$RUNNER_TEMP/optional-runtime-macos-arm64.json"
./.venv/bin/python -c 'import json, os, pathlib; value=json.loads(pathlib.Path(os.environ["RUNNER_TEMP"], "optional-runtime-macos-arm64.json").read_text()); assert value["status"] == "passed"; assert value["profileId"] == "huggingface-transformers-main-96fe6dce-peft-0.20.0"; assert value["platform"] == "macos"; assert value["machine"] == "arm64"; assert value["sourceRevisionReady"] is True; assert value["cleanBase"] is True; assert value["managedStateRetained"] is False; assert value["sourceFlagsChanged"] is False'

- name: Record bounded target context
if: ${{ always() }}
run: |
{
git rev-parse HEAD
uname -m
sw_vers
test ! -x ./.venv/bin/python || ./.venv/bin/python --version
} > "$RUNNER_TEMP/target-context.txt"

- name: Upload review evidence
if: ${{ always() }}
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: optional-runtime-macos-arm64-${{ github.run_id }}
path: |
${{ runner.temp }}/optional-runtime-macos-arm64.json
${{ runner.temp }}/preflight.json
${{ runner.temp }}/prospective-base.diff
${{ runner.temp }}/target-context.txt
if-no-files-found: warn
retention-days: 14
40 changes: 40 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,31 @@ config.ini
*.local

artifacts/
# Local review notes, evidence, recordings, and handoff checkpoints.
/review/
/reviews/
/review-assets/
/checkpoints/
/maintenance/
/output/
/playwright-report/
/playwright-report-*/
/blob-report/
/test-results/
/test-results-*/
review-pending/
review-approved/
.pytest_cache/
.ruff_cache/
.mypy_cache/
.hypothesis/
.tox/
.nox/
.coverage
.coverage.*
coverage.xml
htmlcov/
build/
*.egg-info/

# Installer-managed downloads, toolchains, journals, and diagnostics.
Expand All @@ -23,6 +46,23 @@ custom/*

data/*
!data/model-artifact-catalog.json
!data/image-prototyping-readiness.v1.json
!data/huggingface-cluster-promotion-receipts.v1.json
!data/huggingface-cluster-promotion-receipts.v2.json
!data/huggingface-cluster-catalog-gates.v1.json
!data/legacy-cluster-semantic-equivalence-receipts.v1.json
!data/legacy-cluster-archived-definitions.v1.json
!data/legacy-cluster-compiler-mappings.v1.json
!data/legacy-cluster-studio-spec-evidence.v1.json
!data/legacy-cluster-studio-spec-partial-reviews.v1.json
!data/modular-block-contracts.json
!data/modular-conditional-contracts.json
!data/modular-workflow-contracts.json
!data/anima-artifact-review.json
!data/flux2-klein-base-4b-artifact-review.json
!data/minimax-music3-artifact-review.json
!data/qualification-graphs/
!data/qualification-graphs/**
!data/graphs/
!data/workflow-library-manifest.json
data/graphs/*
Expand Down
24 changes: 20 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
# MoDiff Backend Agent Instructions

Before node/Block/hierarchy, persistence/execution, qualification or cross-machine
integration work, read [Cluster engineering lessons and required procedure](docs/cluster-engineering-lessons.md)
completely. Treat its reproduction, preservation and proof-level checks as required,
not optional background. Keep the mirrored guide in both repositories aligned.

These rules apply to AI-assisted work in this repository. `CONTRIBUTING.md` is the complete contributor guide; read it together with `SECURITY.md` and the relevant document under `docs/` before editing.

## Scope And Runtime Boundary

- Keep each change focused on a diagnosed problem. Trace the existing call path and tests before editing, and remove incidental generated files from the diff.
- Hugging Face Diffusers and Modular Diffusers are MoDiff's only supported model-execution layer. Do not add an alternate graph executor, hosted inference provider, independent Transformers application, or another model driver.
- Supporting libraries used by Diffusers and ordinary deterministic media processing are not alternate drivers. They must remain narrowly scoped, documented, and covered by tests.
- MoDiff may execute models through an official library maintained and published by Hugging Face. A Hub repository, organization name, or compatible API is not enough: verify the library's upstream ownership and package provenance, then declare and review the exact integration in MoDiff's executable dependency contract.
- All supported libraries run locally behind MoDiff's existing node graph, resource management, Auto/Expert, file, and security boundaries. Do not add an alternate graph executor, hosted inference provider, browser-side runtime, or library-owned workflow representation.
- Keep nodes and client contracts task- or modality-generic. Library- and model-specific loading, parameter aliases, and output normalization belong in small backend adapters selected from a declared execution specification, not new model-named nodes or frontend branches.
- Transformers is an optional runtime, not a default application dependency. Do not install it during startup, registry discovery, template browsing/opening, or Auto planning. A workflow that requires it must declare a reviewed optional runtime profile, present an explicit install/consent action, and verify the installed version before becoming runnable.
- Ordinary deterministic media processing is allowed when narrowly scoped, documented, and covered by tests.
- Never enable arbitrary remote Python code, mutable model revisions, or custom model execution implicitly. Trust-sensitive behavior requires an explicit operator choice and an immutable revision.
- Prefer existing module, graph, configuration, error, and test patterns. Do not create a parallel workflow representation or model-loading path.

## Diffusers And Modular Diffusers
## Hugging Face Model Libraries

- Keep the reviewed Diffusers revision pinned in the executable installation contract and update its compatibility test when changing it.
- Treat support for each additional official Hugging Face library as an explicit integration: document its purpose and provenance, constrain its compatible version, keep heavyweight imports lazy, and add no-download compatibility and boundary tests.
- Official-library eligibility is not blanket trust for Hub artifacts or repository code. Prefer `safetensors`; pin curated models and adapters immutably; and require a separate explicit operator decision for any reviewed remote-code path.
- Use Diffusers loaders, pipelines, components, schedulers, adapters, and offload hooks instead of reimplementing upstream behavior.
- Modular blocks should declare inputs, outputs, and dependencies clearly, avoid hidden cross-block state, and remain composable through `init_pipeline`.
- Keep model-specific differences explicit and small. Put reusable behavior in the existing shared Diffusers modules rather than copying it into another pipeline.
- Prefer `safetensors`; document and test any unavoidable unsafe deserialization or remote-code boundary.
- For non-Diffusers libraries, put reusable behavior in the corresponding generic task module and preserve the same graph, resource, progress, cancellation, and output contracts.

## Security And Data

Expand All @@ -26,6 +36,12 @@ These rules apply to AI-assisted work in this repository. `CONTRIBUTING.md` is t
- Never commit `config.ini`, tokens, local paths, generated outputs, model caches, qualification workspaces, virtual environments, logs, or template media.
- Public template media belongs in the configured public Hugging Face Dataset repository. Keep only its versioned source descriptor, hashes, and documentation in Git.

## Custom extensions

- Read [Custom node development](docs/custom-nodes.md) before changing extension discovery, staging, enable, reload, or execution. Keep approvals outside source packages and bind them to inspected source and declared dependency versions.
- Executable custom Python uses explicit Add/Load/Reload and the existing executor. Bind source/dependency hashes internally; discovery, preview and graph import are not consent. Contract-only Blocks remain non-executable.
- A custom resource declaration is operator-reviewed code metadata, not catalog or hardware qualification. Do not execute custom suppliers during Auto inspection or assume their Python references are safe for early model eviction.

## Quality And Evidence

- Add a regression test that fails for the original defect and covers related instances of the same pattern.
Expand Down
53 changes: 52 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@ MoDiff is an experimental local backend with a separately maintained frontend bu

Before starting, read [SECURITY.md](SECURITY.md) and the relevant guide in [docs/README.md](docs/README.md).

Before changing nodes, Blocks, graph persistence/execution, model qualification or
integrating another machine's work, read and follow
[Cluster engineering lessons and required procedure](docs/cluster-engineering-lessons.md).

## Development setup

For script-free `uv`/`npm` setup, use [Developer setup](docs/developer-setup.md).

Use Python 3.12 and create the same managed CPU profile used by baseline CI:

```bash
Expand All @@ -22,7 +28,7 @@ uv pip install --python .venv/Scripts/python.exe -r requirements/test.txt
.\.venv\Scripts\python.exe -m modiff.preflight --json --check-port 8088 --fail-on-error
```

Choose the qualified accelerator profile relevant to a hardware-specific change and report that validation separately. Do not use `uv sync` or `uv run`: the project is intentionally `uv`-unmanaged because the installer, not the generic resolver, owns the executable Torch profile.
Choose the qualified accelerator profile relevant to a hardware-specific change and report that validation separately. Do not use `uv sync` or ordinary `uv run` (the documented `uv run --no-project --no-sync ... -m modiff.dev` bootstrap is the explicit exception): the project is intentionally `uv`-unmanaged because the installer, not the generic resolver, owns the executable Torch profile.

Do not commit `config.ini`, `.env` files, model caches, generated outputs, local logs, virtual environments, or test caches.

Expand All @@ -34,6 +40,10 @@ Do not commit `config.ini`, `.env` files, model caches, generated outputs, local
- Treat file access, custom-module installation, remote code, token handling, and mutating routes as security-sensitive changes.
- Avoid importing the full model registry from lightweight diagnostics such as preflight.

### Custom node development

For local/Git Python nodes and pinned Hub Modular blocks, follow [Custom node development](docs/custom-nodes.md). Stage and inspect without imports, explicitly enable the exact code hash, then review/reload after edits. Do not add an unconditional startup import or install dependencies from discovery. Test stale code, relative helper isolation, approval rejection, import diagnostics, and cache ownership through ordinary graph dispatch.

### Adding a node module

Built-in node packages live under `modules/<Name>/` and normally contain:
Expand Down Expand Up @@ -65,6 +75,10 @@ uv pip check --python .venv/bin/python

Use the corresponding accelerator instead of `cpu` when the change affects CUDA, ROCm, or MPS. Update the compatibility manifest and public installation guidance only when the evidence supports the claim. MoDiff deliberately has no `uv.lock`; do not generate one or describe the top-level requirements files as a cross-platform lock.

MoDiff may integrate model libraries officially maintained and published by Hugging Face, but each library remains a separately reviewed execution dependency. Verify its upstream ownership, package provenance, license, supported version, loading behavior, and remote-code boundary. Hub hosting alone does not establish that a library or model is maintained by Hugging Face. Keep execution in the existing backend graph and expose task-generic contracts to the client.

Transformers-specific execution is opt-in. Do not add Transformers to the base application environment or install an optional runtime merely because a template is viewed, nodes are discovered, or Auto compatibility is planned. A requiring workflow must identify its versioned optional runtime, show an explicit install/consent action, perform installation outside graph execution, and re-run package and compatibility checks before the workflow can run.

## Validation

The baseline backend checks are:
Expand All @@ -78,6 +92,31 @@ uv pip check --python .venv/bin/python

The wrapper applies the installed accelerator profile's process environment before Python imports Torch. On Windows, run `.venv/Scripts/python.exe` directly in the equivalent commands.

To exercise tests requiring an **already installed and activated** optional
runtime, use the verified entry point instead of adding a sealed site-packages
directory to `PYTHONPATH` manually:

```bash
./scripts/with-runtime-env.sh .venv/bin/python scripts/test_reviewed_optional_runtime.py -q tests
```

It validates the active artifact-locked runtime through the normal startup
boundary, performs no installation, and disables bytecode writes in this process
and child generators. Generated `__pycache__` files inside a sealed overlay are
integrity drift, not files to whitelist. Keep base-gate and optional-runtime
results separate; skipped model-library tests are not execution coverage.

Pytest redirects the default extension store to a temporary directory before
collection so registry imports cannot execute or change the operator's installed
custom sources. Extension tests use explicit temporary roots. Subprocess tests
must also isolate extension discovery; they do not inherit Python monkeypatches.

The checked-in image readiness inventory uses a fixed Linux/x86_64 reference
target; `scripts/generate_image_prototyping_readiness.py --check` must reproduce
it on every host. This static inventory is not local runtime readiness. Live
execution profiles continue to resolve the current OS/architecture and installed
runtime through the normal readiness boundary.

On a host with Git Bash or a POSIX shell:

```bash
Expand All @@ -104,6 +143,18 @@ See [README.md](README.md#updating-the-bundled-client) for exact-mirror examples

Update public documentation when commands, extras, routes, storage behavior, trust boundaries, or compatibility guarantees change. Keep claims proportional to the evidence actually run.

Put lasting guidance in the relevant API, runtime, module, or troubleshooting
guide and link it from `docs/README.md`. Keep dated execution trackers, private
task IDs, raw logs, screenshots, recordings, and handoff notes outside public
documentation. Local `reviews/`, `checkpoints/`, and `maintenance/` directories
are ignored; sanitized evidence can be attached to the issue or pull request.

Before committing, inspect `git status --short`, `git diff --cached --stat`, and
`git diff --cached --check`, then review the staged content. Ignore rules do not
remove already tracked files. Keep intentional fixtures, executable catalogs,
and the checked frontend bundle; do not confuse these required artifacts with
local reports, cache contents, or generated model output.

A useful change description includes:

- The user-visible problem and intended behavior.
Expand Down
Loading
Loading