Files
FreeCADWasmDev/docs/current/CODEX_RESTART_HANDOFF_20260923_1356.md
wangdequan 789e18ca3e
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
Continue FreeCAD Web UI parity repairs
2026-09-23 14:03:56 +08:00

84 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Codex 重启接续 — 2026-09-23 13:56 CST
## 暂停状态
用户要求“暂停一下 codex,准备接续文件”。已执行:
```sh
systemctl --user stop freecad-web-acceptance.service
```
暂停后确认:`freecad-web-acceptance.service` 为 `inactive/dead`,MainPID=0;没有留下 OpenSCAD ninja、Vite 或 scheduler 子进程。重启 Codex 后不要擅自恢复后台,等待用户要求继续;继续时只恢复这个原单一服务,不启动第二调度器。
工作区:`/home/mes123456/FreeCADWasmDev`;项目目录:`working/FreeCAD`。
## 主线铁律
- 唯一主线:桌面 FreeCAD UI → Web FreeCAD UI 和功能完全对标,覆盖菜单、工具栏、任务/控制面板、属性页、对话框、右键菜单、状态反馈和完整操作者流程。
- 按共享工作台、原生文档所有者和构建目标集中处理同类问题,不拆孤立按钮;复用已有 task、facade、owner、原生产物。
- 只做源码接线、样式、原生调用和必要增量构建;不运行测试、烟测、浏览器、截图、独立类型检查、验收或证据复核。状态使用 `implemented_unvalidated`;构建成功不是业务完成。
- 原生构建固定 `-j8`;前端使用 `python3 tools/build_web_frontend.py`,该 helper 已包含 `web/.freecad-web-frontend-build.lock`,避免调度器与前台同时清理/写入 `web/dist`。
- 不把空队列、查缺结果、心跳、烟测 68/68、路由标记或构建成功当全部主线完成。所有共享台账用 `tools/policy_io.py` 原子写入。
- 不改动正在执行的包,不重复已完成源码/构建;出现冷却或无任务时沿源码游标轮转,保存下一确切文件和行号。
## 暂停前实际状态
最后运行 `./当前执行情况 --details` 的结果:
- 查询约 2026-09-23 13:56 CST;调度已停止,第 10807 轮。
- 停止前第 10807 轮为 Import 源码查缺,不验证;当时没有待完成具体任务,也没有排队任务。
- 最后阶段说明:读取 Import 保存的源码索引和接续游标,只写 discovery JSON,不构建、不验证。
- 最后命令读取 Import 的 `ImportExportPreferencesTask`、`ReadShapeCompoundMode`、`VisibleImportDialog`、`ExpandCompound`、`UseLinkGroup`、`ImportHidden`、`ReduceObjects`、`ShowProgress`、`KeepPlacement`、`exportHidden` 等入口;该查缺回合在暂停时尚未写出新的结果文件。
- 最新已完成查缺文件:`docs/current/operator-gap-discovery/run-000312.json`(OpenSCAD);该文件记录的 OpenSCAD printVerbose residual 已被实现并登记,不能重做。
- 状态文件:`docs/current/freecad-web-scheduler-status.json`;最后 live log:`docs/current/continuation-runs/cycle-010807.log`。
## 最近完成且必须复用
### OpenSCAD
第 10806 轮已完成并登记:`operator-gap-openscad-preferences-runtime-bridge`,状态 `implemented_unvalidated`。`importCSG` 在 `open/insert/processcsg` 边界刷新 `printVerbose`,Add/Refresh 路径也显式刷新;原生目标 `FreeCADWebOpenSCADRuntimeProbe` 已用 `ninja ... -j8` 增量构建,前端 helper 已交付。记录保留在 `docs/current/operator-gap-openscad-preferences-runtime-bridge-implementation.json`。不要重建或重复实现。
### Start
`docs/current/start-first-start-general-settings-20260923/README.md`:
- `start-preferences.tsx` 新增 `readStartGeneral`、`saveStartGeneral`、`FirstStartGeneralSettings`、`applyStartTheme`;Language、UserSchema(Int)、NavigationStyle、Theme 复用现有参数 owner。
- `start-launch-panel.tsx` 首次启动面板挂载共享 General settings;Done 等待设置读取完成,设置写入时显示 busy/error。
- 前端构建退出 0,最后一次约 1.64s;未运行验证。
- 仓库暂无独立 Web locale loader,语言参数持久化和刷新事件已接通,但静态 shell 即时翻译仍是明确限制;不要把这项描述成已实现完整本地化。
### 共享工具栏/Tux
- `docs/current/desktop-ui-toolbar-preferences-repair-20260923/README.md`:PersistentToolbars root Enabled 与 User FCParam 共同快照、OPFS、广播、失败回滚、重试和焦点恢复。
- `docs/current/desktop-ui-toolbar-visibility-20260923/README.md`:工具栏右键/Toolbars 显隐、`BaseApp/MainWindow/Toolbars` Bool 保存、键盘菜单、隐藏宿主、共享锁。
- `web/src/toolbar-preferences.ts`、`persistent-toolbar-workspace.tsx`、`toolbar-visibility-menu.tsx` 已完成范围状态为 implemented_unvalidated。
### Part UI 包
`operator-gap-ui-part-menu-toolbar-family` 仍为 `open`,但已完成的范围必须复用:
- 菜单层级、工具栏、桌面 SVG、键盘/Esc/焦点在 `docs/current/desktop-ui-part-entry-repair-20260923/README.md`。
- 网格转换、采样、附着、Part DocumentProbe 框选和同文档 New Sketch 已实现;New Sketch 的记录为 `sketch-delivery.md`。
- 当前真正剩余:PartDesign/其他 owner 的 `sketcherCommand` 路由、跨 owner 框选、未追溯的快捷键元数据。源码读取阻塞已修复,接续说明在 `source-access-recovery.md`、`owner-routing-blocker.md`。
- 不要依据旧 continuation.md 中“尚未挂载 task / New Sketch 未接线”的历史文字重复施工。
## 工具/执行问题修复
- `tools/read_implementation_source.py` 允许确认包命名源码的一跳直接前端 import 依赖,仍保留 packet、窗口数、总字节、单窗口和指纹预算;用于解决 Part 跨 owner 读取被错误拒绝的问题。记录:`docs/current/desktop-ui-part-entry-repair-20260923/source-access-recovery.md`。
- `tools/prepare_implementation_business_batch.py` 的 sourceAccess 文案已同步该规则;无须重启后台以加载到下一轮,恢复服务后自然读取。
- `tools/build_web_frontend.py` 现在用 `web/.freecad-web-frontend-build.lock` 串行化共享 `web/dist` 写入;等待超过 1800 秒返回 124,不反复重启。
- 上下文 413 修复仍有效:scheduler session token limit 24000、prompt byte limit 16000,超限保存有界接续,不重复发送超大请求。记录:`docs/current/context-budget-recovery-20260923/README.md`。
## 恢复后的第一步
1. 读取本文件、`docs/WEB_BUSINESS_MIGRATION_RULES.md`、`docs/current/execution-policy.json`。
2. 确认服务仍为 inactive;用户明确要求继续后,运行 `systemctl --user start freecad-web-acceptance.service`,只恢复原服务。
3. 运行 `./当前执行情况 --details`,读取新的 live cycle;不要把旧的 10806 OpenSCAD 或 13:47 快照当当前状态。
4. 读取当前 `cycle-*.log` 和新的 Import discovery JSON。若 Import 产生具体 gap,先登记/执行整组包;若为空,沿其 `nextCursor` 轮转,不宣称完成。
5. 对任何现有 open key,优先使用其 `continuationNotes`、`lastExecutionCheckpoint` 和记录路径;不重复已完成构建。原生修改才构建受影响目标 `-j8`;前端相关组只调用一次锁定 helper。
6. 每轮继续保持不验证。汇报格式:处理模块 | 对标项 | 源码落点 | 路由入口 | OCCT 边界 | 状态 | 结论。
## 暂停前台账结论
当前没有已登记的具体 open 任务,但这只是调度队列快照;桌面 UI → Web UI 和功能完全对标**尚未完成**。不要用空队列或 68/68 烟测记录改变完成定义。