mirror of
https://github.com/affaan-m/ECC.git
synced 2026-09-18 15:50:25 +02:00
* feat: bundle standalone taste distillation and application workflows * docs: fix imported taste skill markdown lint * docs: align Turkish agent catalog with taste skills * refactor: make ECC the canonical reusable video engine * fix: preserve video duration when applying image overlays * fix: preserve background colors in image compositing * fix: report best-effort duration targets and shortfalls * feat: ship verified Fusion presets with compatibility provenance * feat(tasteforge): preserve native edits in application bundles * feat(tasteforge): compile local preservation without hosted input * fix: update js-yaml to patched 4.3.2 * test: report bounded Stop wrapper failure diagnostics * fix(tasteforge): fail closed on unsafe output names, missing overlays and cadence - cli: default report and spec paths are derived from pack name and profile genre; require the manifest's name pattern before using either as a filename part so a traversal string cannot write outside cwd/out. - apply_local: a pack without cadence.json, or with no measured shots and no explicit mean_shot, raises instead of silently planning 1.0s shots and reporting a measured cadence. - legacy apply: a missing overlay aborts before any paid upload; forge() would have rejected it after every take was generated. - requirements-live: pin fal-client>=0.13.0, the first release whose subscribe() accepts client_timeout. Addresses the five P1 findings from the independent review of #3033. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015fxHRsydPqEcYngGbqkgt1 --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
103 lines
2.2 KiB
JSON
103 lines
2.2 KiB
JSON
{
|
|
"name": "taste-prop3d",
|
|
"title": "taste-prop3d",
|
|
"contents": {
|
|
"name": "workflow",
|
|
"nodes": {
|
|
"node-plate": {
|
|
"type": "run",
|
|
"id": "node-plate",
|
|
"depends": [
|
|
"input"
|
|
],
|
|
"metadata": {
|
|
"position": {
|
|
"x": 380,
|
|
"y": 0
|
|
}
|
|
},
|
|
"app": "fal-ai/nano-banana-pro",
|
|
"input": {
|
|
"prompt": "$input.prop",
|
|
"num_images": 1,
|
|
"aspect_ratio": "1:1",
|
|
"output_format": "png"
|
|
}
|
|
},
|
|
"node-3d": {
|
|
"type": "run",
|
|
"id": "node-3d",
|
|
"depends": [
|
|
"node-plate"
|
|
],
|
|
"metadata": {
|
|
"position": {
|
|
"x": 800,
|
|
"y": 0
|
|
}
|
|
},
|
|
"app": "fal-ai/hunyuan-3d/v3.1/pro/image-to-3d",
|
|
"input": {
|
|
"input_image_url": "$node-plate.images.0.url",
|
|
"generate_type": "Normal",
|
|
"enable_pbr": true,
|
|
"face_count": 300000
|
|
}
|
|
},
|
|
"output": {
|
|
"type": "display",
|
|
"id": "output",
|
|
"depends": [
|
|
"node-3d"
|
|
],
|
|
"input": {},
|
|
"metadata": {
|
|
"position": {
|
|
"x": 1220,
|
|
"y": 0
|
|
}
|
|
},
|
|
"fields": {
|
|
"mesh_glb": "$node-3d.model_glb",
|
|
"mesh_obj": "$node-3d.model_urls.obj",
|
|
"preview": "$node-3d.thumbnail",
|
|
"plate": "$node-plate.images.0"
|
|
}
|
|
}
|
|
},
|
|
"output": {
|
|
"mesh_glb": "$node-3d.model_glb",
|
|
"mesh_obj": "$node-3d.model_urls.obj",
|
|
"preview": "$node-3d.thumbnail",
|
|
"plate": "$node-plate.images.0"
|
|
},
|
|
"schema": {
|
|
"input": {
|
|
"prop": {
|
|
"name": "prompt",
|
|
"label": "Prop description (append the plate rules)",
|
|
"description": "Prop description (append the plate rules)",
|
|
"required": true,
|
|
"defaultValue": "",
|
|
"examples": [],
|
|
"ui": {
|
|
"field": "textarea"
|
|
},
|
|
"type": "string",
|
|
"modelId": "node-plate"
|
|
}
|
|
},
|
|
"output": {}
|
|
},
|
|
"version": "1",
|
|
"metadata": {
|
|
"input": {
|
|
"position": {
|
|
"x": 0,
|
|
"y": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|