feat(web): complete user-facing workflow command coverage
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-06 05:48:41 +08:00
parent 187deb0986
commit 23c59c2c2e
20 changed files with 670 additions and 40 deletions

View File

@@ -11,7 +11,7 @@
},
"plan": {
"path": "tests/golden/WBV2-P1420-000/product-implementation-plan.json",
"sha256": "c3fde3a825257ce340742dcd3ec9d5a4d5e8963887c91340f0674bee29a22584"
"sha256": "3f2df56fbf17f597aa750bb03d3c23dc4d9fa03651acdcb95da10efcd9be819f"
},
"report": {
"path": "tests/golden/WBV2-P1420-000/product-migration-authorization.json",

View File

@@ -2,7 +2,7 @@
"schemaVersion": 1,
"planId": "BLENDER_WEB_PRODUCT_IMPLEMENTATION_P1420",
"operation": "FUNCTION_MODULE_MIGRATION_PLAN",
"status": "ACTIVE_PRODUCT_IMPLEMENTATION",
"status": "PRODUCT_IMPLEMENTATION_COMPLETE",
"authority": "blender_main_source_and_existing_hash_bound_receipts",
"executionPointer": "docs/EXECUTION_QUEUE.md",
"inventory": {
@@ -52836,8 +52836,8 @@
"commands": [
"python3 my-tools/run_web_product_migration.py"
],
"status": "in_progress",
"ready": true,
"status": "done",
"ready": false,
"queueMutationAllowed": true,
"productBacklog": "tests/golden/WBV2/web-product-backlog.json"
}

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "WBV2-P1420-001",
"parentTask": "WBV2-P1420-000",
"operation": "WEB_PRODUCT_IMPLEMENTATION_COMPLETE",
"status": "done",
"implementationComplete": true,
"verificationDeferred": true,
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1420-000/manifest.json",
"sha256": "e128b5b7d332bc081f4b4e2a85b339874ce71cbadc6434670b6256a476ce8b6a"
},
"backlog": {
"path": "tests/golden/WBV2/web-product-backlog.json",
"sha256": "68f1a393de353c2edeb4ca23f3be415fbee20b0f7e0d4b6c829491764cbc7138"
},
"strategy": {
"path": "docs/WEB_PRODUCT_MIGRATION_STRATEGY.md",
"sha256": "b0086cf81a52c71b9efdd764c005d65de7fe48a8f013ce6405a76486bf2310e6"
},
"report": {
"path": "tests/golden/WBV2-P1420-001/product-implementation-report.json",
"sha256": "3333e08cac256488b1b95ce04aec66fe3c9b1153344af48d0fa8cb47901b559a"
},
"status": {
"path": "docs/status/WBV2-P1420-001.md",
"sha256": "0db7d7b3d4cbc14367a50746c88f98d5729e4d9dcb50f68b9dda0c29602fc81a"
},
"plan": {
"path": "tests/golden/WBV2-P1420-000/product-implementation-plan.json",
"sha256": "3f2df56fbf17f597aa750bb03d3c23dc4d9fa03651acdcb95da10efcd9be819f"
},
"taskContext": {
"path": "tests/golden/WBV2-P1420-001/task-context.json",
"sha256": "6924f578fb38bc40c4fb26b0d18ea32fbf635cfd8cff0316128bc2448a5fdd56"
}
},
"nextTask": null
}

View File

@@ -0,0 +1,196 @@
{
"schemaVersion": 1,
"task": "WBV2-P1420-001",
"operation": "WEB_PRODUCT_IMPLEMENTATION_COMPLETE",
"status": "implemented",
"strategy": "implementation_first_user_feedback",
"verificationPolicy": "deferred_until_user_reports",
"workflowModules": [
{
"id": "PROJECT",
"title": "Project open, save and recovery",
"status": "implemented"
},
{
"id": "WORKSPACE",
"title": "Web workspace and viewport",
"status": "implemented"
},
{
"id": "OBJECT",
"title": "Object and scene graph",
"status": "implemented"
},
{
"id": "MESH",
"title": "Mesh modeling and UV",
"status": "implemented"
},
{
"id": "NONMESH",
"title": "Non-mesh geometry",
"status": "implemented",
"taskIds": [
"WEBUI-NONMESH-ADVANCED",
"WEBUI-FONT-ASSETS"
]
},
{
"id": "MATERIAL",
"title": "Materials, shaders and textures",
"status": "implemented"
},
{
"id": "MODIFIER",
"title": "Modifiers and geometry nodes",
"status": "implemented"
},
{
"id": "ANIMATION",
"title": "Animation and NLA",
"status": "implemented",
"taskIds": [
"WEBUI-NLA-STRIP"
]
},
{
"id": "PAINT",
"title": "Sculpt, paint and Grease Pencil",
"status": "implemented",
"taskIds": [
"WEBUI-SCULPT"
]
},
{
"id": "RENDER",
"title": "Render, light, camera and world",
"status": "implemented"
},
{
"id": "COMPOSITOR",
"title": "Compositor",
"status": "implemented"
},
{
"id": "SIMULATION",
"title": "Physics and simulation",
"status": "implemented"
},
{
"id": "MEDIA",
"title": "Media, audio and sequencer",
"status": "implemented"
},
{
"id": "ASSET_IO",
"title": "Assets, libraries and interchange",
"status": "implemented"
},
{
"id": "STORAGE",
"title": "Browser storage and recovery",
"status": "implemented"
},
{
"id": "RUNTIME",
"title": "Worker, performance and modular WASM lifecycle",
"status": "implemented"
}
],
"implementationTasks": [
{
"id": "WEBUI-NONMESH-ADVANCED",
"module": "NONMESH",
"title": "Expose advanced curve, surface and non-mesh deletion commands",
"status": "implemented",
"attempts": 1,
"commands": [
"deleteNonMeshData",
"setCurveHandle",
"setCurveSplines",
"setSurfaceTopology"
],
"ownedPaths": [
"web/app/src/app/App.tsx",
"web/protocol/nonmesh-geometry-commands.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json",
"implementation": "Add context-aware user controls that construct the existing typed commands from the active non-mesh snapshot. Reuse current curve/surface state; do not create a generic JSON command console.",
"startedAt": "2026-09-05T20:52:34.181776+00:00",
"completedAt": "2026-09-05T21:00:54.734385+00:00"
},
{
"id": "WEBUI-FONT-ASSETS",
"module": "NONMESH",
"title": "Expose advanced font layout and browser font import commands",
"status": "implemented",
"attempts": 1,
"commands": [
"setFontAdvanced",
"importVFont",
"setFontLinks"
],
"ownedPaths": [
"web/app/src/app/App.tsx",
"web/protocol/nonmesh-geometry-commands.ts",
"web/app/src/fonts/external-vfont-import.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json",
"implementation": "Add usable font layout/link controls and a TTF/OTF/PFB file picker that uses the existing browser font import adapter and native command route.",
"startedAt": "2026-09-05T21:05:24.110864+00:00",
"completedAt": "2026-09-05T21:28:47.019954+00:00"
},
{
"id": "WEBUI-SCULPT",
"module": "PAINT",
"title": "Expose native sculpt stroke and sculpt mesh attribute commands",
"status": "implemented",
"attempts": 1,
"commands": [
"sculptStroke",
"setSculptMeshAttributes"
],
"ownedPaths": [
"web/app/src/app/App.tsx",
"web/protocol/paint.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-SCULPT-result.json",
"implementation": "Add a compact sculpt panel for the active mesh, including brush controls, a deliberate apply action, and the existing native sculpt attribute route.",
"startedAt": "2026-09-05T21:30:26.904527+00:00",
"completedAt": "2026-09-05T21:37:32.541017+00:00"
},
{
"id": "WEBUI-NLA-STRIP",
"module": "ANIMATION",
"title": "Expose native NLA strip movement",
"status": "implemented",
"attempts": 1,
"commands": [
"moveNLAStrip"
],
"ownedPaths": [
"web/app/src/app/App.tsx",
"web/protocol/animation-render-commands.ts",
"web/protocol/nla.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NLA-STRIP-result.json",
"implementation": "Add context-aware NLA track/strip selection and frame-start editing to the Timeline, using the existing typed moveNLAStrip command.",
"startedAt": "2026-09-05T21:37:32.541259+00:00",
"completedAt": "2026-09-05T21:44:42.999869+00:00"
}
],
"changedFiles": [
"web/app/src/app/App.tsx",
"web/protocol/nonmesh-geometry-commands.ts",
"tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json",
"web/app/src/fonts/external-vfont-import.ts",
"tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json",
"web/protocol/paint.ts",
"web/protocol/animation-render-commands.ts"
],
"sourceInventory": {
"unitCount": 3745,
"role": "traceability_only",
"completionDenominator": false
}
}

View File

@@ -74,12 +74,12 @@
"excluded": [
{
"path": "tests/golden/WBV2/web-product-backlog.json",
"bytes": 5133,
"bytes": 5315,
"reason": "CONTEXT_REMAINING_SPACE"
},
{
"path": "web/app/src/app/App.tsx",
"bytes": 224710,
"bytes": 246180,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{

View File

@@ -0,0 +1,12 @@
{
"schemaVersion": 1,
"task": "WEBUI-FONT-ASSETS",
"status": "implemented",
"changedFiles": [
"web/app/src/app/App.tsx",
"web/protocol/nonmesh-geometry-commands.ts",
"web/app/src/fonts/external-vfont-import.ts",
"tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json"
],
"summary": "Exposed setFontAdvanced and setFontLinks layout controls plus a TTF/OTF/PFB browser picker routed through the existing validated VFont adapter and Blender Main command path."
}

View File

@@ -0,0 +1,10 @@
{
"schemaVersion": 1,
"task": "WEBUI-NLA-STRIP",
"status": "implemented",
"changedFiles": [
"web/app/src/app/App.tsx",
"web/protocol/animation-render-commands.ts"
],
"summary": "Exposed context-aware NLA track and strip selection in the Timeline and routed frame-start edits through the typed moveNLAStrip command with the active object and snapshot revision."
}

View File

@@ -0,0 +1,11 @@
{
"schemaVersion": 1,
"task": "WEBUI-NONMESH-ADVANCED",
"status": "implemented",
"changedFiles": [
"web/app/src/app/App.tsx",
"web/protocol/nonmesh-geometry-commands.ts",
"tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json"
],
"summary": "Exposed context-aware non-mesh deletion, advanced curve handle/spline, and surface topology controls through typed Main/WASM commands using the active snapshot state."
}

View File

@@ -0,0 +1,10 @@
{
"schemaVersion": 1,
"task": "WEBUI-SCULPT",
"status": "implemented",
"changedFiles": [
"web/app/src/app/App.tsx",
"web/protocol/paint.ts"
],
"summary": "Added an active-mesh Sculpt panel with explicit brush and attribute apply actions routed through native sculptStroke and setSculptMeshAttributes commands."
}

View File

@@ -618,4 +618,4 @@
{"id":"WBV2-P1419-000","gapId":"workflow:authorize_modifier_reader_batch","ownerFamily":"PROGRAM","sourceTask":"1419","state":"completed","targetImplementationClass":"QUEUE_ONLY","exitCriteria":["prior evidence remains hash-bound","batch source mapping is explicit","inventory remains source-derived"]}
{"id":"WBV2-P1419-001","gapId":"MESH_MERGE_MACRO_BATCH","ownerFamily":"MESH","sourceTask":"1419","state":"completed","targetImplementationClass":"LOCAL_EXACT","exitCriteria":["source and protocol hashes are bound","every selected Main reader type is proven","negative no-mutation and recovery are proven","Chromium and save/reopen evidence are exact"]}
{"id":"WBV2-P1420-000","gapId":"workflow:authorize implementation-first Web product migration","ownerFamily":"PROGRAM","sourceTask":"1420","state":"completed","targetImplementationClass":"QUEUE_ONLY"}
{"id":"WBV2-P1420-001","gapId":"workflow:complete user-facing Web workflow implementation","ownerFamily":"WEB_PRODUCT","sourceTask":"1420","state":"active","targetImplementationClass":"PRODUCT_WORKFLOW"}
{"id":"WBV2-P1420-001","gapId":"workflow:complete user-facing Web workflow implementation","ownerFamily":"WEB_PRODUCT","sourceTask":"1420","state":"completed","targetImplementationClass":"PRODUCT_WORKFLOW"}

File diff suppressed because one or more lines are too long

View File

@@ -31,7 +31,7 @@
{
"id": "NONMESH",
"title": "Non-mesh geometry",
"status": "partial",
"status": "implemented",
"taskIds": [
"WEBUI-NONMESH-ADVANCED",
"WEBUI-FONT-ASSETS"
@@ -50,7 +50,7 @@
{
"id": "ANIMATION",
"title": "Animation and NLA",
"status": "partial",
"status": "implemented",
"taskIds": [
"WEBUI-NLA-STRIP"
]
@@ -58,7 +58,7 @@
{
"id": "PAINT",
"title": "Sculpt, paint and Grease Pencil",
"status": "partial",
"status": "implemented",
"taskIds": [
"WEBUI-SCULPT"
]
@@ -104,8 +104,8 @@
"id": "WEBUI-NONMESH-ADVANCED",
"module": "NONMESH",
"title": "Expose advanced curve, surface and non-mesh deletion commands",
"status": "pending",
"attempts": 0,
"status": "implemented",
"attempts": 1,
"commands": [
"deleteNonMeshData",
"setCurveHandle",
@@ -117,14 +117,16 @@
"web/protocol/nonmesh-geometry-commands.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NONMESH-ADVANCED-result.json",
"implementation": "Add context-aware user controls that construct the existing typed commands from the active non-mesh snapshot. Reuse current curve/surface state; do not create a generic JSON command console."
"implementation": "Add context-aware user controls that construct the existing typed commands from the active non-mesh snapshot. Reuse current curve/surface state; do not create a generic JSON command console.",
"startedAt": "2026-09-05T20:52:34.181776+00:00",
"completedAt": "2026-09-05T21:00:54.734385+00:00"
},
{
"id": "WEBUI-FONT-ASSETS",
"module": "NONMESH",
"title": "Expose advanced font layout and browser font import commands",
"status": "pending",
"attempts": 0,
"status": "implemented",
"attempts": 1,
"commands": [
"setFontAdvanced",
"importVFont",
@@ -136,14 +138,16 @@
"web/app/src/fonts/external-vfont-import.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-FONT-ASSETS-result.json",
"implementation": "Add usable font layout/link controls and a TTF/OTF/PFB file picker that uses the existing browser font import adapter and native command route."
"implementation": "Add usable font layout/link controls and a TTF/OTF/PFB file picker that uses the existing browser font import adapter and native command route.",
"startedAt": "2026-09-05T21:05:24.110864+00:00",
"completedAt": "2026-09-05T21:28:47.019954+00:00"
},
{
"id": "WEBUI-SCULPT",
"module": "PAINT",
"title": "Expose native sculpt stroke and sculpt mesh attribute commands",
"status": "pending",
"attempts": 0,
"status": "implemented",
"attempts": 1,
"commands": [
"sculptStroke",
"setSculptMeshAttributes"
@@ -153,14 +157,16 @@
"web/protocol/paint.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-SCULPT-result.json",
"implementation": "Add a compact sculpt panel for the active mesh, including brush controls, a deliberate apply action, and the existing native sculpt attribute route."
"implementation": "Add a compact sculpt panel for the active mesh, including brush controls, a deliberate apply action, and the existing native sculpt attribute route.",
"startedAt": "2026-09-05T21:30:26.904527+00:00",
"completedAt": "2026-09-05T21:37:32.541017+00:00"
},
{
"id": "WEBUI-NLA-STRIP",
"module": "ANIMATION",
"title": "Expose native NLA strip movement",
"status": "pending",
"attempts": 0,
"status": "implemented",
"attempts": 1,
"commands": [
"moveNLAStrip"
],
@@ -170,7 +176,9 @@
"web/protocol/nla.ts"
],
"resultPath": "tests/golden/WBV2/product-migration/WEBUI-NLA-STRIP-result.json",
"implementation": "Add context-aware NLA track/strip selection and frame-start editing to the Timeline, using the existing typed moveNLAStrip command."
"implementation": "Add context-aware NLA track/strip selection and frame-start editing to the Timeline, using the existing typed moveNLAStrip command.",
"startedAt": "2026-09-05T21:37:32.541259+00:00",
"completedAt": "2026-09-05T21:44:42.999869+00:00"
}
]
}