Files
workinf_Blender_Wasm/my-tools/local-workflows/MODIFIER-STACK-AUTHORING.json
mes123456 f3e21c6b98
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
chore: checkpoint web Blender migration source, tools and docs
Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer,
web workflow engine and protocol, tooling, docs and task records.
Large generated evidence, user-testing archives, build snapshots and
imported test assets remain untracked.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-10 11:18:01 +08:00

809 lines
24 KiB
JSON

{
"schemaVersion": 1,
"task": "WBV2-P1424-001",
"job": "MODIFIER-STACK-AUTHORING",
"parentSha256": "46a3ce65d56747da8684af422a1a94540612c767a6dcc42da7939930731399d5",
"acceptance": "pending independent local validation",
"result": {
"status": "ready",
"summary": "Modifier stack editing uses original Blender RNA accessors and retains the active data owner",
"workflow": "Add, remove and reorder modifiers; edit supported BEVEL, ARRAY, MIRROR, SOLIDIFY and SUBSURF parameters; validate native Main, invalid input rollback, history, save/reopen and deterministic replay",
"sourceUnits": [
"web-command:addModifier",
"web-command:removeModifier",
"web-command:moveModifier",
"web-command:setModifierParameters",
"web-command:setModifierParameters",
"web-command:setModifierParameters",
"web-command:setModifierParameters",
"web-command:setModifierParameters"
],
"routeIds": [
"web-command:addModifier",
"web-command:removeModifier",
"web-command:moveModifier",
"web-command:setModifierParameters",
"web-command:setModifierParameters",
"web-command:setModifierParameters",
"web-command:setModifierParameters",
"web-command:setModifierParameters"
],
"sourceReferences": [
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/editors/object/object_modifier.cc",
"blender-5.2.0/source/blender/web_engine/extract_modifier_accessors.py",
"blender-5.2.0/source/blender/web_engine/extract_id_property_rna.py",
"blender-5.2.0/source/blender/web_engine/web_engine_modifier_properties.hh",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/CMakeLists.txt"
],
"changedFiles": [
"web/tests/e2e/modifier-stack-ui-production.spec.ts",
"web/tests/fixtures/modifier-stack-main-snapshots.py",
"my-tools/prepare_wbv2_modifier_stack_workflow.py",
"web/app/src/app/App.tsx",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/editors/object/object_modifier.cc",
"blender-5.2.0/source/blender/web_engine/extract_modifier_accessors.py",
"blender-5.2.0/source/blender/web_engine/extract_id_property_rna.py",
"blender-5.2.0/source/blender/web_engine/web_engine_modifier_properties.hh",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/CMakeLists.txt",
"web/app/src/app/ModifierParameterField.tsx",
"web/app/src/app/ModifierParameterField.css",
"web/app/src/app/app-shell.css",
"web/protocol/modifier.ts",
"web/protocol/scene-ir.ts",
"web/tests/fixtures/create-modifier-stack-input.py",
"my-tools/test_wbv2_modifier_accessors.py"
],
"dependencies": [
".emscripten-web",
"blender-5.2.0/source/blender/editors/object/object_modifier.cc",
"blender-5.2.0/source/blender/makesrna/intern/rna_modifier.cc",
"blender-5.2.0/source/blender/web_engine/CMakeLists.txt",
"blender-5.2.0/source/blender/web_engine/extract_id_property_rna.py",
"blender-5.2.0/source/blender/web_engine/extract_modifier_accessors.py",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h",
"blender-5.2.0/source/blender/web_engine/web_engine_modifier_properties.hh",
"build_web_blender6/CMakeCache.txt",
"build_web_blender6/source/blender/makesrna/intern/rna_modifier_gen.cc",
"my-tools/build_local_webengine.py",
"my-tools/prepare_wbv2_modifier_stack_workflow.py",
"my-tools/test_wbv2_modifier_accessors.py",
"tests/files/web/modifier_stack_scene.blend",
"tools/web/incremental-web-build.mjs",
"tools/web/sync-web-engine-runtime.mjs",
"web/app/src/app/App.tsx",
"web/app/src/app/ModifierParameterField.css",
"web/app/src/app/ModifierParameterField.tsx",
"web/app/src/app/app-shell.css",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/workers/web-engine.worker.ts",
"web/app/vite.config.ts",
"web/package.json",
"web/playwright.config.ts",
"web/protocol/modifier.ts",
"web/protocol/scene-ir.ts",
"web/protocol/web-engine.ts",
"web/tests/e2e/modifier-stack-ui-production.spec.ts",
"web/tests/fixtures/create-modifier-stack-input.py",
"web/tests/fixtures/modifier-stack-main-snapshots.py",
"web/tests/fixtures/native-ui-workflow.ts",
"web/tsconfig.json"
],
"artifacts": [
"build_web_blender6/bin/web_engine.wasm",
"build_web_blender6/bin/web_engine.js",
"build_blender_native/bin/blender"
],
"checks": [
{
"id": "wasm-source-build",
"argv": [
"python3",
"my-tools/build_local_webengine.py"
],
"cwd": ".",
"kinds": [
"source_build"
],
"timeoutSeconds": 1200,
"continueOnFailure": true
},
{
"id": "web-build",
"argv": [
"node",
"tools/web/incremental-web-build.mjs"
],
"cwd": ".",
"kinds": [
"typecheck"
],
"dependsOn": [
"wasm-source-build"
],
"timeoutSeconds": 300,
"continueOnFailure": true
},
{
"id": "authoring-lint",
"argv": [
"node",
"node_modules/eslint/bin/eslint.js",
"app/src/app/App.tsx",
"tests/e2e/modifier-stack-ui-production.spec.ts"
],
"cwd": "web",
"kinds": [
"lint"
],
"timeoutSeconds": 90,
"continueOnFailure": true
},
{
"id": "chromium-panel",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack panel ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-add",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack add ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-remove",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack remove ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-move",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack move ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-parameters-bevel",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack parameters bevel ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-parameters-array",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack parameters array ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-parameters-mirror",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack parameters mirror ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-parameters-solidify",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack parameters solidify ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
},
{
"id": "chromium-parameters-subsurf",
"argv": [
"env",
"WEB_TEST_PORT=5382",
"node",
"node_modules/@playwright/test/cli.js",
"test",
"--config",
"playwright.config.ts",
"tests/e2e/modifier-stack-ui-production.spec.ts",
"--grep",
"modifier stack parameters subsurf ",
"--workers=1",
"--max-failures=1"
],
"cwd": "web",
"kinds": [
"chromium",
"positive",
"negative",
"undo_redo",
"save_reopen",
"determinism"
],
"dependsOn": [
"wasm-source-build",
"web-build",
"authoring-lint"
],
"timeoutSeconds": 75,
"continueOnFailure": true
}
],
"cases": [
{
"id": "modifier-add-positive",
"kind": "positive",
"checkId": "chromium-add",
"receipt": "unallocated/add-positive.json",
"unitIds": [
"web-command:addModifier"
]
},
{
"id": "modifier-add-negative",
"kind": "negative",
"checkId": "chromium-add",
"receipt": "unallocated/add-negative.json",
"unitIds": [
"web-command:addModifier"
]
},
{
"id": "modifier-add-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-add",
"receipt": "unallocated/add-undo_redo.json",
"unitIds": [
"web-command:addModifier"
]
},
{
"id": "modifier-add-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-add",
"receipt": "unallocated/add-save_reopen.json",
"unitIds": [
"web-command:addModifier"
]
},
{
"id": "modifier-add-determinism",
"kind": "determinism",
"checkId": "chromium-add",
"receipt": "unallocated/add-determinism.json",
"unitIds": [
"web-command:addModifier"
]
},
{
"id": "modifier-remove-positive",
"kind": "positive",
"checkId": "chromium-remove",
"receipt": "unallocated/remove-positive.json",
"unitIds": [
"web-command:removeModifier"
]
},
{
"id": "modifier-remove-negative",
"kind": "negative",
"checkId": "chromium-remove",
"receipt": "unallocated/remove-negative.json",
"unitIds": [
"web-command:removeModifier"
]
},
{
"id": "modifier-remove-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-remove",
"receipt": "unallocated/remove-undo_redo.json",
"unitIds": [
"web-command:removeModifier"
]
},
{
"id": "modifier-remove-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-remove",
"receipt": "unallocated/remove-save_reopen.json",
"unitIds": [
"web-command:removeModifier"
]
},
{
"id": "modifier-remove-determinism",
"kind": "determinism",
"checkId": "chromium-remove",
"receipt": "unallocated/remove-determinism.json",
"unitIds": [
"web-command:removeModifier"
]
},
{
"id": "modifier-move-positive",
"kind": "positive",
"checkId": "chromium-move",
"receipt": "unallocated/move-positive.json",
"unitIds": [
"web-command:moveModifier"
]
},
{
"id": "modifier-move-negative",
"kind": "negative",
"checkId": "chromium-move",
"receipt": "unallocated/move-negative.json",
"unitIds": [
"web-command:moveModifier"
]
},
{
"id": "modifier-move-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-move",
"receipt": "unallocated/move-undo_redo.json",
"unitIds": [
"web-command:moveModifier"
]
},
{
"id": "modifier-move-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-move",
"receipt": "unallocated/move-save_reopen.json",
"unitIds": [
"web-command:moveModifier"
]
},
{
"id": "modifier-move-determinism",
"kind": "determinism",
"checkId": "chromium-move",
"receipt": "unallocated/move-determinism.json",
"unitIds": [
"web-command:moveModifier"
]
},
{
"id": "modifier-parameters-bevel-positive",
"kind": "positive",
"checkId": "chromium-parameters-bevel",
"receipt": "unallocated/parameters-bevel-positive.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-bevel-negative",
"kind": "negative",
"checkId": "chromium-parameters-bevel",
"receipt": "unallocated/parameters-bevel-negative.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-bevel-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-parameters-bevel",
"receipt": "unallocated/parameters-bevel-undo_redo.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-bevel-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-parameters-bevel",
"receipt": "unallocated/parameters-bevel-save_reopen.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-bevel-determinism",
"kind": "determinism",
"checkId": "chromium-parameters-bevel",
"receipt": "unallocated/parameters-bevel-determinism.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-array-positive",
"kind": "positive",
"checkId": "chromium-parameters-array",
"receipt": "unallocated/parameters-array-positive.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-array-negative",
"kind": "negative",
"checkId": "chromium-parameters-array",
"receipt": "unallocated/parameters-array-negative.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-array-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-parameters-array",
"receipt": "unallocated/parameters-array-undo_redo.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-array-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-parameters-array",
"receipt": "unallocated/parameters-array-save_reopen.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-array-determinism",
"kind": "determinism",
"checkId": "chromium-parameters-array",
"receipt": "unallocated/parameters-array-determinism.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-mirror-positive",
"kind": "positive",
"checkId": "chromium-parameters-mirror",
"receipt": "unallocated/parameters-mirror-positive.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-mirror-negative",
"kind": "negative",
"checkId": "chromium-parameters-mirror",
"receipt": "unallocated/parameters-mirror-negative.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-mirror-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-parameters-mirror",
"receipt": "unallocated/parameters-mirror-undo_redo.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-mirror-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-parameters-mirror",
"receipt": "unallocated/parameters-mirror-save_reopen.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-mirror-determinism",
"kind": "determinism",
"checkId": "chromium-parameters-mirror",
"receipt": "unallocated/parameters-mirror-determinism.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-solidify-positive",
"kind": "positive",
"checkId": "chromium-parameters-solidify",
"receipt": "unallocated/parameters-solidify-positive.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-solidify-negative",
"kind": "negative",
"checkId": "chromium-parameters-solidify",
"receipt": "unallocated/parameters-solidify-negative.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-solidify-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-parameters-solidify",
"receipt": "unallocated/parameters-solidify-undo_redo.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-solidify-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-parameters-solidify",
"receipt": "unallocated/parameters-solidify-save_reopen.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-solidify-determinism",
"kind": "determinism",
"checkId": "chromium-parameters-solidify",
"receipt": "unallocated/parameters-solidify-determinism.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-subsurf-positive",
"kind": "positive",
"checkId": "chromium-parameters-subsurf",
"receipt": "unallocated/parameters-subsurf-positive.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-subsurf-negative",
"kind": "negative",
"checkId": "chromium-parameters-subsurf",
"receipt": "unallocated/parameters-subsurf-negative.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-subsurf-undo_redo",
"kind": "undo_redo",
"checkId": "chromium-parameters-subsurf",
"receipt": "unallocated/parameters-subsurf-undo_redo.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-subsurf-save_reopen",
"kind": "save_reopen",
"checkId": "chromium-parameters-subsurf",
"receipt": "unallocated/parameters-subsurf-save_reopen.json",
"unitIds": [
"web-command:setModifierParameters"
]
},
{
"id": "modifier-parameters-subsurf-determinism",
"kind": "determinism",
"checkId": "chromium-parameters-subsurf",
"receipt": "unallocated/parameters-subsurf-determinism.json",
"unitIds": [
"web-command:setModifierParameters"
]
}
]
}
}