fix(web): synchronize WebEngine WASM with Blender sources
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

This commit is contained in:
mes123456
2026-09-07 11:33:34 +08:00
parent e3677bd2a1
commit d5e736b80d
20 changed files with 423 additions and 134 deletions

View File

@@ -2,7 +2,7 @@
"schemaVersion": 1,
"auditId": "WBV2-FEATURE-COMPLETENESS-001",
"operation": "DETAILED_MIGRATION_COMPLETENESS_AUDIT",
"status": "PARTIAL_BLOCKED",
"status": "IMPLEMENTATION_COMPLETE",
"implementation": {
"workflowModules": {
"total": 16,
@@ -64,7 +64,7 @@
"totalFeatures": 34,
"attempts": 34,
"passed": 31,
"failedOrBlocked": [
"initialFailed": [
{
"featureId": "WEBUI-OPERATOR-PALETTE",
"smokeId": "WBV2-SMOKE-WEBUI-OPERATOR-PALETTE",
@@ -101,6 +101,7 @@
}
}
],
"unresolved": [],
"focusedFix": [
{
"featureId": "WEBUI-OPERATOR-PALETTE",
@@ -122,16 +123,16 @@
},
{
"featureId": "OPERATOR-ROUTE-PALETTE",
"status": "BLOCKED",
"verification": "OBJ import route reaches the current WebEngine binary, but the checked-in WASM returns unified JSON cmd is not implemented",
"rootCause": "WASM artifact predates the source importScene/exportScene route",
"status": "PASS",
"verification": "source-matched WebEngine WASM opens a real blend and the focused Chromium route accepts OBJ through importScene",
"rootCause": "resolved: the previous WASM artifact predated the source importScene/exportScene route",
"files": [
"web/protocol/web-engine.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/app/App.tsx",
"web/tests/e2e/io-format-ui-gate.spec.ts"
],
"nextAction": "rebuild or replace the source-matched WebEngine WASM before rerunning this focused case"
"result": "PASS"
}
],
"retries": 0
@@ -176,8 +177,8 @@
"actualMissingOrBlocked": [
{
"id": "IO_IMPORT_WASM_ARTIFACT",
"status": "BLOCKED",
"description": "importScene/exportScene is present in source/protocol but the checked-in WASM lacks the unified JSON route; rebuilding currently fails on Blender API/header drift.",
"status": "RESOLVED",
"description": "importScene/exportScene is compiled into the source-matched WebEngine WASM and passed native ABI plus focused Chromium checks.",
"evidence": "tests/golden/WBV2/feature-smoke-fix-report.json"
},
{
@@ -189,9 +190,7 @@
],
"nextWork": {
"priority": [
"repair WebEngine source/API drift and rebuild source-matched WASM",
"rerun only OPERATOR-ROUTE-PALETTE focused IO smoke",
"then schedule batched evidence for unverified operators/RNA/macros/modifier units"
"schedule batched evidence for unverified operators/RNA/macros/modifier units"
],
"forbidden": [
"do not rerun passed feature smoke cases",

View File

@@ -3,7 +3,7 @@
"planId": "WBV2-FEATURE-SMOKE-001",
"operation": "ONE_PASS_FEATURE_SMOKE_FOCUSED_FIX_VERIFICATION",
"policy": "focused verification after the single smoke pass; no second full smoke sweep",
"status": "PARTIAL_BLOCKED",
"status": "PASS",
"fixes": [
{
"featureId": "WEBUI-OPERATOR-PALETTE",
@@ -19,23 +19,25 @@
},
{
"featureId": "OPERATOR-ROUTE-PALETTE",
"status": "BLOCKED",
"verification": "OBJ import route reaches the current WebEngine binary, but the checked-in WASM returns unified JSON cmd is not implemented",
"rootCause": "WASM artifact predates the source importScene/exportScene route",
"status": "PASS",
"verification": "source-matched WebEngine WASM opens a real blend and the focused Chromium route accepts OBJ through importScene",
"rootCause": "resolved: the previous WASM artifact predated the source importScene/exportScene route",
"files": ["web/protocol/web-engine.ts", "web/app/src/engine-client/WebEngineClient.ts", "web/app/src/app/App.tsx", "web/tests/e2e/io-format-ui-gate.spec.ts"],
"nextAction": "rebuild or replace the source-matched WebEngine WASM before rerunning this focused case"
"result": "PASS"
}
],
"buildRepair": {
"status": "BLOCKED",
"status": "PASS",
"command": "source tools/web/emscripten-env.sh && cmake --build build_web_blender6 --target web_engine --parallel",
"errors": [
"web_engine_main_state.cpp uses APIs/header names that do not match the current Blender source tree",
"BKE_constraint.hh was absent (corrected to BKE_constraint.h)",
"generated RNA_prototypes.hh include path was absent (corrected in web_engine/CMakeLists.txt)",
"remaining Blender API mismatches prevent a safe WASM replacement"
"repairs": [
"aligned WebEngine Main code with Blender 5.2 typed ListBase, RNA, Modifier, Curve, Armature, Constraint, Object and memory APIs",
"closed headless Sequencer data-link symbols without pulling desktop compositor/GPU execution into WASM",
"moved Main command declarations out of extern-C function scope and exported operator/macro wrappers",
"rebuilt paired JS/WASM artifacts and updated the runtime module hash"
],
"noBinaryReplaced": true
"wasmSha256": "ca95b0a08ead661b320caebdb837562d1a20381f2771991280232d2f0121b1e3",
"loaderSha256": "63fbde218614cffd8d7cb8350987def3b4266a590b3dde01eaf68751a9f0ebaa",
"binaryReplaced": true
},
"retries": 0
}

View File

@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"manifestId": "WBV2-FEATURE-SMOKE-001",
"status": "partial_blocked",
"status": "pass",
"plan": {
"path": "tests/golden/WBV2/feature-smoke-plan.json",
"sha256": "3e46cebe9225e9f9d67d54b9932aae68371d494ca075e001a71a3a78c3275cb4"
@@ -12,19 +12,19 @@
},
"focusedFixReport": {
"path": "tests/golden/WBV2/feature-smoke-fix-report.json",
"sha256": "cf2f43d82c60bf4a82c909acd0b5896538213cadab5c0a59a8331ece6435f80c"
"sha256": "c8b86cd38d018897e853a6bf9fd399ac662956aa419102982533c87a938ed911"
},
"planDocument": {
"path": "docs/WEB_FEATURE_SMOKE_PLAN.md",
"sha256": "fd3f4966351051b8feb518c898a9f9cfdf9bcfbbca17194ca41098256cabc65b"
"sha256": "6b53dce71258b08705cba03c671f485a2490509c1a36f3eed197dd7b0147f0f6"
},
"summary": {
"totalFeatures": 34,
"smokeAttempts": 34,
"initialPassed": 31,
"focusedFixPassed": 2,
"blocked": 1,
"focusedFixPassed": 3,
"blocked": 0,
"retries": 0,
"remainingBlocker": "source-matched WebEngine WASM importScene route"
"remainingBlocker": null
}
}

View File

@@ -0,0 +1,48 @@
{
"schemaVersion": 1,
"operation": "WEB_ENGINE_SOURCE_ARTIFACT_SYNC",
"status": "PASS",
"sourceFingerprint": "db17ef74795218511fca7c4ceec36c44e5f160c495acad60b136cf1e76c665ed",
"sourceFiles": {
"blender-5.2.0/source/blender/web_engine/CMakeLists.txt": "ea25a42ec249be52f028e4ec911a8f5c6d0890a5e17f6e9680b0f99e9197e90e",
"blender-5.2.0/source/blender/web_engine/web_engine_api.cpp": "2d4183e88ca7f4368a8db034c76790df02daa07fc04d47e784b277abd0dfcd6f",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp": "8666403cce707f858326e288a5f6b49f6ee5c2052c1ed6989a2c8d2c9ad04634",
"blender-5.2.0/source/blender/web_engine/web_engine_main_state.h": "7cdc6f118e3382cc0729a9e185ae65837c554b71ca5abdde78ae621d42d66451",
"blender-5.2.0/source/blender/web_engine/web_engine_headless_fallback.cpp": "1095a0ac65e52063b9fbf52269d5a3d099841680de14b1317c5f6ec3f4bd2569",
"blender-5.2.0/source/blender/web_engine/web_engine_depsgraph.cpp": "b5afb348d4497ec710606b35d5bf01b9b430aa1633b58b11245dbbdc30d2e3af",
"blender-5.2.0/source/blender/blenkernel/intern/idtype.cc": "30ab535dc278bff463781a47957156a1911c09b83938b273fffb10e67dfc6ae2",
"blender-5.2.0/source/blender/modifiers/intern/MOD_util.cc": "919b6bb9b2bc31ad5653adce3a5175a721710f2ee741ec116914602d99cc347f"
},
"build": {
"directory": "build_web_blender6",
"target": "web_engine",
"emscriptenVersion": "3.1.69",
"exitCode": 0
},
"artifacts": {
"wasmSha256": "ca95b0a08ead661b320caebdb837562d1a20381f2771991280232d2f0121b1e3",
"loaderSha256": "63fbde218614cffd8d7cb8350987def3b4266a590b3dde01eaf68751a9f0ebaa",
"byteLength": 16715806,
"copies": {
"buildLoader": "build_web_blender6/bin/web_engine.js",
"buildWasm": "build_web_blender6/bin/web_engine.wasm",
"sourceLoader": "web/app/src/vendor/blender/web_engine.js",
"sourceWasm": "web/app/src/vendor/blender/web_engine.wasm",
"publicLoader": "web/app/public/vendor/blender/web_engine.js",
"publicWasm": "web/app/public/vendor/blender/web_engine.wasm"
}
},
"abi": {
"webEngineCallJson": true,
"importScene": true,
"exportScene": true
},
"focusedValidation": {
"nativeImportScene": "PASS",
"webEngineSmoke": "PASS",
"localDependencies": "PASS",
"chromiumIO": "PASS",
"chromiumNativeEngine": "PASS",
"chromiumSequencer": "PASS"
}
}