feat(web): complete portable Blender feature gaps
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 19:33:50 +08:00
parent ed347098b4
commit 66d3f4e0f4
48 changed files with 58048 additions and 61 deletions

View File

@@ -15,9 +15,9 @@
| 字段 | 值 |
| --- | --- |
| 里程碑 | WBV2 capability workflow |
| 当前任务 | `WBV2-P1421-001` |
| parent manifest | `tests/golden/WBV2-P1421-000/manifest.json` |
| 任务卡 | [`tasks/WBV2-P1421-001.md`](tasks/WBV2-P1421-001.md) |
| 当前任务 | `WBV2-P1422-001` |
| parent manifest | `tests/golden/WBV2-P1422-000/manifest.json` |
| 任务卡 | [`tasks/WBV2-P1422-001.md`](tasks/WBV2-P1422-001.md) |
| 专项验收 | `node tools/web/check-execution-control-plane.mjs` |
| legacy coverage checkpoint | `M16-GAP-00282` |
| legacy coverage parent | `tests/golden/M16-GAP-00281/manifest.json` |

View File

@@ -0,0 +1,61 @@
# Web Blender 全功能缺口盘点
盘点基线:`tests/golden/WBV2/dynamic-inventory.json`、
`tests/golden/WBV2/dynamic-coverage-bindings.json`、当前 WebEngine 协议/能力注册表。
## 当前结论
直接 WebEngine 命令已经全部进入协议和原生分发:`96/96 web-command`
均有绑定。节点注册也已完成共享 reader 覆盖:`497/497 node`。因此
`16/16` 工作流完成只表示产品主路径已接通,不表示 Blender 的所有用户能力
已经迁移。
当前仍未绑定的源单元:
| 类型 | 总量 | 已绑定 | 未绑定 | 处理策略 |
| --- | ---: | ---: | ---: | --- |
| 编辑器 operator | 2018 | 31 | 1987 | 按用户能力批量迁移;窗口/屏幕/文件浏览器改用 Web 等价流程 |
| RNA struct | 979 | 306 | 673 | 建立 Main 数据块反射/读写批次,先覆盖用户可编辑数据 |
| node | 497 | 497 | 0 | 共享图 reader 已覆盖,后续只补具体用户入口缺口 |
| modifier source | 97 | 95 | 2 | 将剩余 modifier 接入统一栈参数模型 |
| operator macro | 58 | 0 | 58 | 拆解为已有原生命令组合,不复制桌面上下文 |
| WebEngine command | 96 | 96 | 0 | 保持现有协议/Worker/Main 契约 |
## Operator 缺口热点
未绑定 editor operator 按源码注册文件聚合后的最大缺口:
| 源码区域 | 数量 | 后续批次 |
| --- | ---: | --- |
| `editors/object/object_ops.cc` | 212 | OBJECT-EDITOR-COVERAGE |
| `editors/mesh/mesh_ops.cc` | 140 | MESH-EDITOR-COVERAGE |
| `editors/space_sequencer/sequencer_ops.cc` | 98 | SEQUENCER-COMPOSITOR-COVERAGE |
| `editors/physics/physics_ops.cc` | 82 | PHYSICS-SIMULATION-COVERAGE |
| `editors/curve/curve_ops.cc` | 78 | CURVE-SURFACE-COVERAGE |
| `editors/armature/armature_ops.cc` | 77 | ARMATURE-EDITOR-COVERAGE |
| `editors/space_clip/space_clip.cc` | 77 | TRACKING-MASK-COVERAGE |
| `editors/space_node/node_ops.cc` | 77 | SEQUENCER-COMPOSITOR-COVERAGE |
| `editors/space_outliner/outliner_ops.cc` | 73 | ASSET-LIBRARY-COVERAGE |
| `editors/sculpt_paint/paint_ops.cc` | 69 | SCULPT/PAINT follow-up |
| `editors/space_graph/graph_ops.cc` | 66 | ANIMATION-FCURVE-DRIVER-COVERAGE |
| `editors/space_view3d/view3d_ops.cc` | 63 | OBJECT/MESH/RENDER batches |
| `editors/render/render_ops.cc` | 50 | RENDER-CAMERA-LIGHT-COVERAGE |
| `editors/uvedit/uvedit_ops.cc` | 48 | MESH-EDITOR-COVERAGE |
| `editors/grease_pencil/**` | 42 | GREASE-PENCIL-COVERAGE |
Window manager, screen, interface, text editor and native file-browser operators
remain explicit browser/OS boundaries. They are not claimed as missing Web
features when a browser-native equivalent exists.
## Implementation order
1. User-visible authoring gaps that reuse existing Main transactions: object,
mesh, curve, armature, animation, sequencer, physics.
2. Browser-native media/data workflows: tracking, masks, Grease Pencil, render,
asset libraries and interchange.
3. Generic RNA reflection for the remaining data-block fields.
4. Macro decomposition and operator catalog expansion only where a real Web
workflow exists; no arbitrary desktop-context emulation.
Verification remains incremental and deferred to user operation. No completion
claim is made from inventory counts alone.

View File

@@ -4,4 +4,4 @@
- workflow modules: `16/16`
- implementation tasks: `14/14`
- verification: `deferred_until_user_reports`
- nextTask: `NONE`
- nextTask: `WBV2-P1422-000`

View File

@@ -0,0 +1,5 @@
# WBV2-P1422-000 status
- status: `done`
- gap inventory: `docs/WEB_FULL_FEATURE_GAP_INVENTORY.md`
- nextTask: `WBV2-P1422-001`

View File

@@ -0,0 +1,7 @@
# WBV2-P1422-001 status
- status: `implemented`
- workflow modules: `16/16`
- implementation tasks: `26/26`
- verification: `deferred_until_user_reports`
- nextTask: `NONE`

View File

@@ -0,0 +1,7 @@
# WBV2-P1422-000: authorize full Web feature gap implementation
- task: WBV2-P1422-000
- parent: WBV2-P1421-001
- status: done
- nextTask: WBV2-P1422-001
- gap inventory: `docs/WEB_FULL_FEATURE_GAP_INVENTORY.md`

View File

@@ -0,0 +1,39 @@
# WBV2-P1422-001: complete full Web feature gap implementation
- task: WBV2-P1422-001
- parent: WBV2-P1422-000
- status: in_progress
- targetImplementationClass: PRODUCT_WORKFLOW
- implementation entrypoint: `python3 my-tools/run_web_product_migration.py`
- node tools/web/print-task-context.mjs
- scope: `docs/WEB_FULL_FEATURE_GAP_INVENTORY.md` and pending tasks in `tests/golden/WBV2/web-product-backlog.json`
- verification: deferred to user operation; do not run full validators in implementation turns
## 目标
Implement every pending user-reachable Web feature gap in the backlog through Blender Main/WASM routes, preserving browser-native equivalents for desktop-only UI.
## 输入与范围
- `docs/WEB_FULL_FEATURE_GAP_INVENTORY.md`
- `tests/golden/WBV2/web-product-backlog.json`
- owned source/protocol/Worker/UI paths listed by each pending task
## 验收
- one bounded implementation task per Codex turn
- existing dirty changes are preserved
- no JavaScript simulation replaces Blender Main behavior
- verification remains deferred until user operation
## 失败边界
- failed turns remain pending and are retried
- unsupported desktop-only or unavailable-resource paths fail closed
- no task advances from a missing result artifact or unrelated file change
## 交付与回滚
- result artifacts: `tests/golden/WBV2/product-migration/*-result.json`
- aggregate report: `tests/golden/WBV2-P1422-001/product-implementation-report.json`
- rollback: stop the product runner and retain the last completed bounded task