Some checks failed
FreeCAD master CI / Prepare (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
FreeCAD master CI / Pixi (push) Has been cancelled
FreeCAD master CI / Ubuntu (push) Has been cancelled
FreeCAD master CI / Windows (push) Has been cancelled
FreeCAD master CI / Lint (push) Has been cancelled
FreeCAD master CI / WrapUp (push) Has been cancelled
Stale Issues / stale (push) Has been cancelled
CodeQL Advanced (c-cpp) / Analyze (c-cpp) (push) Has been cancelled
Push Crowdin Translations / update-crowdin (push) Has been cancelled
Fetch Crowdin Translations / update-crowdin (push) Has been cancelled
Build Release / upload_src (push) Has been cancelled
Build Release / build (10.13, macos-15-intel, osx-64) (push) Has been cancelled
Build Release / build (11.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (15.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (ubuntu-22.04, linux-64) (push) Has been cancelled
Build Release / build (ubuntu-22.04-arm, linux-arm64) (push) Has been cancelled
Build Release / build (windows-latest, win-64) (push) Has been cancelled
Monthly issue metrics / issue metrics (push) Has been cancelled
Part 桌面菜单/工具栏入口集中补漏 — 2026-09-23
状态:入口布局与键盘修改已实现,未验证;原 Part 包的主工作区任务接线仍待完成。
本轮已修改
web/src/part-workbench-ui.tsx:
- 依据
freecad-source/src/Mod/Part/Gui/Workbench.cpp::setupMenuBar/setupToolBars,将 Box Selection 放回首项;Shape From Mesh、Points From Shape、Attachment、材料检查放回顶层,移除额外 Feature/Inspection 子菜单及重复检查命令。 - New Sketch 放回 Part 菜单和 Part Tools 工具栏,继续使用既有 activatePartAction。
- 从桌面命令定义采用 Primitive、Persistent Section Cut、Points From Shape、New Sketch、Attachment 标签。
- 修正 Shape From Mesh 和 Attachment 图标名;复制五个原生 SVG 到
web/public/icons/part/:Part_BoxSelection、Part_Shape_from_Mesh、Part_PointsFromMesh、Part_Attachment、Sketcher_NewSketch。材料检查命令在桌面无图标,移除不存在的 SVG 引用并保留菜单图标占位空间。 - 整组菜单共用键盘行为:上下键在当前层移动、右键/Enter 进入子菜单、左键/Esc 返回当前父层、Home/End 跳转、Tab 收起并返回入口焦点;打开同级菜单时收起其他菜单,执行命令前恢复入口焦点。
沿用 partUiActions → PartWorkbenchMenu/PartWorkbenchToolbars → project-shell.tsx::activatePartAction。本轮未改几何算法、原生所有者或 Three.js 模型逻辑。
有源码依据的原包残余(不能用已有菜单标记宣称完成)
在 web/src/project-shell.tsx::activatePartAction,shape-from-mesh、points-from-mesh、edit-attachment、box-selection 仅设置 workspaceTask 并请求 read;相应任务组件没有在主工作区挂载。Sketcher_NewSketch 只切换工作台并设置 sketcher-new-sketch,未挂载对应创建流程。
- Mesh 转换和几何采样:复用
part-mesh-conversion-task.tsx、part-sample-points-task.tsx及 workbench-shell 中现有挂载。增加嵌入方式,使用当前文档快照/选择、同一 nativeRequest 和 applyNativeDocument;保留 tolerance/sew/sampleDistance、真实 Accept/Cancel/错误反馈,不新建 fixture 或第二文档。适配器已有 createShapeFromMesh/createPointSamples 原生请求。 - Attachment:复用
part-attachment-task.tsx和 executePartAttachmentDesktop 的 begin/apply/accept/cancelAttachment 事务,挂载主工作区并保留引用、MapMode、offset/rotation、取消回滚及卸载处理。单纯 read/snapshot 不会启动编辑。 - BoxSelection:复用 WebViewTask/当前视口的区域框选与 selection callback。executePartBoxSelectionDesktop 发出 part.viewCommand 或 part.documentViewCommand,并非 PART_DOCUMENT_COMMAND。当前 runRetainedPartCommand 里的假 router 忽略 command 且一律把 payload.action 送 nativeRequest,不适合此路由;必须按 owner/command 接到真实视图协议。
- New Sketch:接通既有 Sketcher 创建任务和当前文档所有者,明确平面/支持选择、确认、取消与模型树更新;切换工作台和写任务字符串不是创建流程。
以上属于已有 operator-gap-ui-part-menu-toolbar-family 未交付的原范围,回写同一个 key,不新建孤立按钮任务。原有 Tube/Primitives/Tolerance、快捷基本体与布尔路由、已完成菜单布局直接复用。
构建与接续
- 命令(项目目录):
python3 tools/build_web_frontend.py。 - 日志:
docs/current/desktop-ui-part-entry-repair-20260923/build.log。 - 退出码 0;Vite 日志 built in 1.65s,保留已有大 chunk 提示。
- 无原生源码修改,未运行原生构建;无未结束的本轮构建进程。
- 未运行测试、浏览器、截图、独立类型检查或验收。构建成功不代表完整功能通过。
- 第 10780 轮原调度器正在执行 Material 两个包,本轮只改 Part 独立源码与资源,未启动第二调度器;共享策略通过 tools/policy_io.py 原子更新。
| 处理模块 | 对标项 | 源码落点 | 路由入口 | OCCT 边界 | 状态 | 结论 |
|---|---|---|---|---|---|---|
| Part | 菜单层级/工具栏/图标/键盘 | part-workbench-ui.tsx;web/public/icons/part | PartWorkbenchMenu/PartWorkbenchToolbars | 沿用既有 native owner;无算法变更 | 已补漏(未验证) | 保留 |
| Part | 主工作区任务/视图协议/草图创建 | project-shell.tsx;既有 Part task 组件和适配器 | activatePartAction/runRetainedPartCommand | 需正确接到现有 Part/Sketcher 文档与视图所有者 | 已定位待接 | 继续 |
主任务续接更新
参见 continuation.md:网格转换、几何采样、附着、框选已接主工作区并完成一次配置前端交付;New Sketch 仍未完成,整包保持 open。