732 lines
28 KiB
Plaintext
732 lines
28 KiB
Plaintext
项目整体完成情况与后续执行计划
|
||
|
||
生成时间:2026-06-15 CST
|
||
|
||
本文件接替 `text11.txt`。后续工作按 `text12.txt` 执行;除非明确要求审计旧记录,
|
||
不要再回到 `text1/text2/text3/text4/text5/text6/text7/text8/text9/text10/text11`
|
||
扩展进度。`text11.txt` 作为历史归档保留。
|
||
|
||
一、第一原则:加快实质性推进
|
||
|
||
后续批次必须以“实质性能力优先”为第一遵守原则。
|
||
|
||
1. 优先级从高到低:
|
||
|
||
- OPFS/session persistence;
|
||
- SDK/API surface;
|
||
- browser/UI workflow;
|
||
- sim config coverage promotion;
|
||
- host/runtime boundary proof;
|
||
- 文档化可执行工作流。
|
||
|
||
2. 每批默认应产出至少一种可直接复用的能力:
|
||
|
||
- 可调用 helper;
|
||
- 可复用 API;
|
||
- 可验证用户流程;
|
||
- 可执行 gate;
|
||
- 可提升覆盖面的 runtime boundary proof;
|
||
- 能直接指导下一步实现的设计/清单。
|
||
|
||
3. 暂停低收益推进:
|
||
|
||
- 不再把“局部常量化、路径变量收敛、断言分组整理”作为主目标;
|
||
- 只有当它支撑可复用 workflow/API/gate 时,才允许做测试胶水;
|
||
- 禁止为了推进而扩大 CNC 语义边界;
|
||
- 禁止启动性能测试,除非已有明确用户流程需要性能基线。
|
||
|
||
4. LinuxCNC 仍是唯一 CNC 语义来源:
|
||
|
||
- G-code、remap、tool、parameter、planner、kinematics、user-M、tool DB、Python remap
|
||
等语义必须来自 LinuxCNC upstream 或 vendored LinuxCNC C/C++/配置/脚本源码;
|
||
- JS/browser 只允许做 build、source sync、runtime shim、filesystem staging、OPFS、
|
||
WASM/browser boundary、测试胶水、文档和机器可读 gate/artifact;
|
||
- 不在 JS 中重写 G-code 或 CNC 语义;
|
||
- 不修改 vendored LinuxCNC 源文件来让测试通过;
|
||
- 不把 full-process/HAL/UI/Python/tool DB 依赖伪装成 standalone pass;
|
||
- 不把 expected failure 硬改成 pass,除非已有 LinuxCNC-owned runtime proof,并且
|
||
native、Node、browser gate 都按顺序通过;
|
||
- browser 不能依赖目录枚举。
|
||
|
||
二、续接状态与防重规则
|
||
|
||
1. 当前续接点。
|
||
|
||
`text11.txt` 已推进到:
|
||
|
||
```text
|
||
二十四、2026-06-15 继续执行记录:INI panel control-page refresh workflow helper
|
||
```
|
||
|
||
该批已提交:
|
||
|
||
```text
|
||
ed5d03e 推进 INI 面板 control-page refresh workflow helper
|
||
```
|
||
|
||
本文件从 `text12.txt` 重新开始记录后续进度。
|
||
|
||
2. 每轮开始前必须先执行:
|
||
|
||
```bash
|
||
git status --short
|
||
git log -5 --oneline
|
||
tail -n 120 text12.txt
|
||
awk '/^[一二三四五六七八九十百]+、/ {print}' text12.txt | sort | uniq -d
|
||
```
|
||
|
||
执行规则:
|
||
|
||
- 如果 `git status --short` 是 clean,且最新提交已经包含当前建议工作,不要重复追加记录;
|
||
- 每轮只追加一个新的中文编号记录;
|
||
- 提交前再次检查标题唯一性;
|
||
- `text12.txt` 只记录新的后续进度,不复制 `text11.txt` 的长历史;
|
||
- 每批完成后,如果要写记录,先写 `text12.txt`,再提交该批代码和记录;
|
||
- 如果发现重复记录,先做 dedupe 清理并提交,再继续新功能或新 guard;
|
||
- `text11.txt` 不再追加新进度,除非明确要求审计或修正历史记录。
|
||
|
||
三、当前完成情况摘要
|
||
|
||
1. 当前工作树状态。
|
||
|
||
切换到 `text12.txt` 前已确认:
|
||
|
||
```text
|
||
git status --short: clean
|
||
```
|
||
|
||
当前最近提交:
|
||
|
||
```text
|
||
ed5d03e 推进 INI 面板 control-page refresh workflow helper
|
||
213514f 推进 INI 面板 shell view-model helper
|
||
b330f7b 推进 INI 面板 launcher link view-model helper
|
||
ac46345 推进 INI 面板 entry docs strict gate
|
||
ef4769b 推进 INI 面板 entry doc
|
||
```
|
||
|
||
2. 关键基线保持稳定。
|
||
|
||
- `linuxcnc/nc_files` native Layer 1:
|
||
- `total 107`
|
||
- `pass 101`
|
||
- `expected_fail 6`
|
||
- `unexpected_fail 0`
|
||
- `linuxcnc/configs/sim` native Layer 2:
|
||
- `total 159`
|
||
- `pass 151`
|
||
- `expected_fail 8`
|
||
- `unexpected_fail 0`
|
||
- Node sim-config inventory:
|
||
- `executed=28`
|
||
- `passed=28`
|
||
- `skipped=131`
|
||
- `unexpected_fail=0`
|
||
|
||
3. blocked runtime family 仍未 promotion。
|
||
|
||
仍 blocked,不允许 promotion:
|
||
|
||
- `L4-USER-M-PROCESS`
|
||
- `L4-TOOL-DB`
|
||
- `L4-PYTHON-REMAP`
|
||
|
||
当前 host 仍按缺少 LinuxCNC host runtime 处理,不执行任何:
|
||
|
||
```bash
|
||
ENABLE_MILLTURN_USER_M_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_millturn_user_m_runtime.sh
|
||
ENABLE_TOOL_DB_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_tool_db_runtime.sh
|
||
ENABLE_PYTHON_REMAP_RUNTIME_PROBE=1 bash wasm-port/tests/native/probe_python_remap_runtime.sh
|
||
```
|
||
|
||
四、当前实质能力进展
|
||
|
||
1. INI panel/UI helper 能力。
|
||
|
||
当前 UI helper 已覆盖:
|
||
|
||
- run summary;
|
||
- run workflow;
|
||
- session snapshot summary;
|
||
- session load summary;
|
||
- machine file save/load summary;
|
||
- panel state summary;
|
||
- session snapshot save/restore workflow;
|
||
- entry manifest、launcher link view-model、shell view-model;
|
||
- read-only control-page controller;
|
||
- read-only control-page refresh workflow。
|
||
|
||
当前聚合验证入口:
|
||
|
||
```bash
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
```
|
||
|
||
当前 `verify_ui_node_smokes.sh` 覆盖:
|
||
|
||
```text
|
||
ini_panel_run_summary_node_smoke=ok
|
||
ini_panel_run_workflow_node_smoke=ok
|
||
ini_panel_session_summary_node_smoke=ok
|
||
ini_panel_session_workflow_node_smoke=ok
|
||
ini_panel_machine_file_summary_node_smoke=ok
|
||
ini_panel_state_summary_node_smoke=ok
|
||
ini_panel_control_page_controller_node_smoke=ok
|
||
ini_panel_control_page_refresh_workflow_node_smoke=ok
|
||
ini_panel_entry_manifest_node_smoke=ok
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
```
|
||
|
||
2. Browser/UI workflow 验证。
|
||
|
||
当前 browser INI panel smoke 覆盖真实 OPFS/session persistence workflow:
|
||
|
||
```bash
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
```
|
||
|
||
五、当前必须保持通过的验证入口
|
||
|
||
每批后续改动至少运行:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
如果涉及 browser interpreter smoke,再运行:
|
||
|
||
```bash
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
|
||
```
|
||
|
||
涉及 native baseline 或大范围 source/staging 改动时,再运行:
|
||
|
||
```bash
|
||
wasm-port/tests/native/verify_nc_files.sh
|
||
wasm-port/tests/native/verify_sim_configs.sh
|
||
```
|
||
|
||
六、下一步建议
|
||
|
||
继续推进 OPFS/session persistence 的实质链路。下一批建议抽出
|
||
`loadMachineSessionForControlPageWorkflow()` 或等价 helper,让 read-only control page 能以明确
|
||
状态模型描述 embedded panel API readiness 和首帧 session state;仍保持只读,不新增控制按钮,
|
||
不解析 G-code。
|
||
|
||
一、2026-06-15 继续执行记录:INI panel control-page session readiness workflow helper
|
||
|
||
本轮按“第一原则:加快实质性推进”切换到 `text12.txt` 续接,并推进 OPFS/session
|
||
persistence 相关 browser/UI workflow:新增 read-only control-page session readiness workflow,
|
||
让外层页面能以明确状态模型读取 embedded panel API readiness 和首帧 session state。
|
||
|
||
完成内容:
|
||
|
||
- 新建 `text12.txt`,接替 `text11.txt`;后续记录从本文件继续;
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/control-page-session-workflow.js`;
|
||
- 新增 `createControlPageSessionLoadState(input)`,固定 control-page session load 状态结构;
|
||
- 新增 `loadMachineSessionForControlPageWorkflow(input)`,统一描述:
|
||
- `waiting-panel`:embedded panel frame 尚不可读;
|
||
- `waiting-api`:panel window 可读但 API 尚未暴露;
|
||
- `waiting-session`:API 已可读但 control view 尚未就绪;
|
||
- `ready`:state bundle、workflow status 和 control view 可读取;
|
||
- `error`:读取 panel window/API/control view 时失败;
|
||
- `createMachineSessionControlPageController()` 新增 `loadSessionState()`;
|
||
- `control-page.js` 对浏览器页面暴露 `loadControlPageSessionState`;
|
||
- `ui-shell.js` re-export session readiness workflow helper,并在
|
||
`createIniPanelShellViewModel()` 中暴露 `controlPage.loadSessionState`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_control_page_session_workflow.mjs` 和 `.sh`;
|
||
- `verify_ui_node_smokes.sh` 纳入 session readiness workflow smoke;
|
||
- browser control-page smoke 验证 `loadControlPageSessionState().phase === "ready"`;
|
||
- `panel-entry.md` 和 entry docs gate 同步记录 session readiness workflow API;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_control_page_session_workflow.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_control_page_controller.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_control_page_session_workflow_node_smoke=ok
|
||
ini_panel_control_page_controller_node_smoke=ok
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
interp_wasm_node_smoke=ok
|
||
sim_configs_wasm_node_inventory_executed=28
|
||
sim_configs_wasm_node_inventory_passed=28
|
||
sim_configs_wasm_node_inventory_skipped=131
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
browser_interp_smoke=ok
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 OPFS/session persistence 的实质链路。下一批建议把 `load-session` 按钮路径抽成
|
||
`loadMachineSessionIntoWasmWorkflow()`,统一返回 loaded session、load summary、field state 和
|
||
log lines;仍保持由 LinuxCNC/OPFS bridge 执行实际语义,不在 JS 中解释 CNC 行为。
|
||
|
||
二、2026-06-15 继续执行记录:INI panel load-session workflow helper
|
||
|
||
本轮按“第一原则:加快实质性推进”继续推进 OPFS/session persistence 主链路,抽出
|
||
`load-session` 按钮路径的可复用 workflow helper,统一返回 loaded session、load summary、
|
||
field state 和 log lines。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/session-workflow.js` 新增
|
||
`createMachineSessionLoadFieldState(summary)`;
|
||
- `session-workflow.js` 新增 `machineSessionLoadWorkflowLogLines(summary)`;
|
||
- `session-workflow.js` 新增 `loadMachineSessionIntoWasmWorkflow({ loadSession })`;
|
||
- workflow 只调用外部传入的 LinuxCNC/OPFS session loader,并基于现有
|
||
`createMachineSessionLoadSummary()` 生成 UI 状态;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 的 `load-session` handler 改为调用
|
||
`loadMachineSessionIntoWasmWorkflow()`;
|
||
- `app.js` 仍由 `loadMachineSessionFromOpfs()` 通过 LinuxCNC/OPFS bridge 执行实际 session
|
||
staging;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_session_workflow.mjs` 覆盖 load workflow 的
|
||
loader 调用、summary、field state、log lines 和缺失 loader 错误;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_session_workflow.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_session_workflow_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
interp_wasm_node_smoke=ok
|
||
sim_configs_wasm_node_inventory_executed=28
|
||
sim_configs_wasm_node_inventory_passed=28
|
||
sim_configs_wasm_node_inventory_skipped=131
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
browser_interp_smoke=ok
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 OPFS/session persistence 的实质链路。下一批建议将 `restore-load-session` 路径改为复用
|
||
`loadMachineSessionIntoWasmWorkflow()`,避免 restore+load 与单独 load 的 field/log 状态模型
|
||
分叉;仍保持由 LinuxCNC/OPFS bridge 执行实际语义,不在 JS 中解释 CNC 行为。
|
||
|
||
三、2026-06-15 继续执行记录:INI panel restore-load workflow 复用 load-session helper
|
||
|
||
本轮按“第一原则:加快实质性推进”继续推进 OPFS/session persistence 主链路,将
|
||
`restore-load-session` 路径收敛到已存在的 `loadMachineSessionIntoWasmWorkflow()`,让单独
|
||
load 与 restore+load 共享同一套 load summary、field state 和 log lines 模型。
|
||
|
||
完成内容:
|
||
|
||
- `restoreMachineSessionSnapshotWorkflow()` 的 restore+load 分支改为调用
|
||
`loadMachineSessionIntoWasmWorkflow({ loadSession })`;
|
||
- restore+load 返回的 `loadedSession`、`loadSummary` 和 INI/parameter/tool-table field state
|
||
直接来自 load workflow;
|
||
- restore+load 日志纳入 load workflow 的统一首行:
|
||
`Loaded machine session into the interpreter WASM filesystem.`;
|
||
- 删除 `app.js` 中已不再使用的 `sessionSnapshotSummaryLogLines` import;
|
||
- `verify_ini_panel_session_workflow.mjs` 增加 restore+load 复用断言,确认
|
||
`loadSummary` 与单独 load workflow 一致,且 `loadedSession` 保持 loader 返回对象;
|
||
- `ui-session-summary-helpers.md` 同步说明 restore-load 复用 load workflow;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_session_workflow.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_session_workflow_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
interp_wasm_node_smoke=ok
|
||
sim_configs_wasm_node_inventory_executed=28
|
||
sim_configs_wasm_node_inventory_passed=28
|
||
sim_configs_wasm_node_inventory_skipped=131
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
browser_interp_smoke=ok
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 OPFS/session persistence 的实质链路。下一批建议抽出 `run-session` 首帧 readiness
|
||
或 run 前置状态 helper,把“已加载 session、已选择/恢复 snapshot、默认 G-code 路径、run
|
||
按钮可执行条件”统一成可复用状态模型;仍保持只描述 UI/host boundary facts,不在 JS 中解释
|
||
G-code、canonical events 或 CNC 运行语义。
|
||
|
||
四、2026-06-15 继续执行记录:INI panel run readiness workflow helper
|
||
|
||
本轮按“第一原则:加快实质性推进”继续推进 run 前置状态模型,将 run 按钮可执行条件、
|
||
默认/快照 G-code 选择结果与已加载 session 的 WASM 绑定关系抽成可复用 readiness helper,
|
||
让 app、state summary、control view 和 Node smoke 共享同一份运行前状态。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/run-workflow.js` 的
|
||
`createRunSessionReadinessState(input)`;
|
||
- `runGcodeSessionWorkflow()` 现在先生成 readiness state,再复用其中的选定程序和 loaded
|
||
session 信息执行实际 run;
|
||
- readiness state 固定返回:
|
||
- `phase`
|
||
- `canRun`
|
||
- `missing`
|
||
- `loadedSession`
|
||
- `snapshot`
|
||
- `defaultProgram`
|
||
- `program`
|
||
- `runButton`
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 在点击 Run 前先写入 readiness state,并把
|
||
`selectedProgram`、`runReadiness` 和 field state 一起更新到 panel state;
|
||
- `wasm-port/runtime/ui/ini-panel/panel-state-summary.js` 新增 `runReadiness` 的 report /
|
||
workflowStatus / control-view 映射;
|
||
- `createMachineSessionControlView()` 的 Run 区新增 `Ready` 与 `Button` 行,用于 read-only
|
||
control page 读取首帧 run 前置状态;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_run_workflow.mjs` 覆盖 readiness helper 与
|
||
workflow readiness 返回值;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖 runReadiness 在 report、
|
||
bundle、workflowStatus 和 control view 中的映射;
|
||
- `wasm-port/docs/ui-run-summary-helpers.md` 和 `wasm-port/docs/ui-panel-state-summary.md`
|
||
同步说明 readiness helper 与 runReadiness 状态;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_run_workflow.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_state_summary.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_run_workflow_node_smoke=ok
|
||
ini_panel_state_summary_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
interp_wasm_node_smoke=ok
|
||
sim_configs_wasm_node_inventory_executed=28
|
||
sim_configs_wasm_node_inventory_passed=28
|
||
sim_configs_wasm_node_inventory_skipped=131
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
browser_interp_smoke=ok
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 OPFS/session persistence 的实质链路。下一批建议将 `load-session` 与
|
||
`restore-load-session` 的 field/log 路径再做一次轻量整合,优先把“已加载 session、快照恢复、
|
||
run readiness、run 结果”汇总成一个更上层的只读工作流状态对象;仍保持只描述 UI/host
|
||
boundary facts,不在 JS 中解释 G-code、canonical events 或 CNC 运行语义。
|
||
|
||
五、2026-06-15 继续执行记录:INI panel workflow overview helper
|
||
|
||
本轮按“第一原则:加快实质性推进”继续推进更上层只读工作流状态对象,将已归一化的
|
||
report、run readiness、session snapshot/load、run result 和 control page 需要的状态字段
|
||
再压成单一 workflow overview,供 state bundle、workflow status 和 read-only control view
|
||
共享。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/panel-state-summary.js` 的
|
||
`createMachineSessionWorkflowOverview(report)`;
|
||
- `createMachineSessionWorkflowStatus()` 现在额外返回 `overview`;
|
||
- `createMachineSessionStateBundle()` 现在额外返回 `overview`;
|
||
- `createMachineSessionControlView()` 新增 `Workflow` 区,显示:
|
||
- `Phase`
|
||
- `Missing`
|
||
- `Last action`
|
||
- `Error`
|
||
- overview 只组合已有的 readiness、session、loaded、runReadiness、run 和 status 信息;
|
||
- `Missing` 现在优先基于 loaded session / run readiness 的已知边界事实判断,不再依赖 DOM;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖 overview helper、bundle、
|
||
workflow status 和 control view;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_control_page_session_workflow.mjs` 同步带上 overview;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 同步说明 overview helper;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_state_summary.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_control_page_session_workflow.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_state_summary_node_smoke=ok
|
||
ini_panel_control_page_session_workflow_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
interp_wasm_node_smoke=ok
|
||
sim_configs_wasm_node_inventory_executed=28
|
||
sim_configs_wasm_node_inventory_passed=28
|
||
sim_configs_wasm_node_inventory_skipped=131
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
browser_interp_smoke=ok
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 OPFS/session persistence 的实质链路。下一批建议把 `load-session`、`restore-load-session`
|
||
和 `run` 的状态入口再向上收拢成一个稳定的只读状态 API,优先服务 control page 和 shell 的
|
||
统一读取;仍保持只描述 UI/host boundary facts,不在 JS 中解释 G-code、canonical events 或
|
||
CNC 运行语义。
|
||
|
||
六、2026-06-15 继续执行记录:INI panel readonly status API
|
||
|
||
本轮按“第一原则:加快实质性推进”继续把 control page / shell 的状态入口向上收拢,新增稳定的
|
||
read-only status API,让外层 UI 能一次读取 state bundle、workflow status、overview、control view、
|
||
session、run readiness 和 run 结果。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/readonly-status-api.js`;
|
||
- 新增 `createMachineSessionReadonlyStatus(input)`,固定只读状态对象 shape;
|
||
- 新增 `readMachineSessionReadonlyStatus({ getPanelApi, getControlView })`,通过现有 panel API
|
||
读取 `stateBundle`、`workflowStatus` 和 `controlView`;
|
||
- `createMachineSessionControlPageController()` 新增 `readStatus()`;
|
||
- `ui-shell.js` re-export readonly status API;
|
||
- `createIniPanelShellViewModel()` 的 `controlPage` 新增 `readStatus`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_readonly_status_api.mjs` 和 `.sh`;
|
||
- `verify_ui_node_smokes.sh` 纳入 readonly status API smoke;
|
||
- `verify_ini_panel_control_page_controller.mjs` 覆盖 controller `readStatus()`;
|
||
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell export、view-model 和 controller 读取路径;
|
||
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录新 API;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_readonly_status_api.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_control_page_controller.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_readonly_status_api_node_smoke=ok
|
||
ini_panel_control_page_controller_node_smoke=ok
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
interp_wasm_node_smoke=ok
|
||
sim_configs_wasm_node_inventory_executed=28
|
||
sim_configs_wasm_node_inventory_passed=28
|
||
sim_configs_wasm_node_inventory_skipped=131
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
browser_interp_smoke=ok
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 SDK/API surface。下一批建议把 readonly status API 的 shape 写入一个轻量 SDK-facing
|
||
入口或 manifest,方便外部页面稳定发现 `readStatus()`、`loadSessionState()`、`refresh()` 和
|
||
`renderView()`;仍保持只描述 UI/host boundary facts,不在 JS 中解释 G-code、canonical events
|
||
或 CNC 运行语义。
|
||
|
||
七、2026-06-15 继续执行记录:INI panel readonly status API manifest
|
||
|
||
本轮按“第一原则:加快实质性推进”继续推进 SDK/API surface,把 readonly status API 的 shape
|
||
写入轻量 manifest,方便外部页面稳定发现 `readStatus()`、`loadSessionState()`、`refresh()` 和
|
||
`renderView()`。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/readonly-status-api.js` 新增
|
||
`createMachineSessionReadonlyStatusApiManifest()`;
|
||
- manifest 固定返回:
|
||
- `apiName`
|
||
- `methods.readStatus`
|
||
- `relatedControlPageMethods`
|
||
- `statusFields`
|
||
- `ui-shell.js` re-export `createMachineSessionReadonlyStatusApiManifest()`;
|
||
- `createIniPanelShellViewModel()` 的 `controlPage` 新增 `readonlyStatusApiManifest`;
|
||
- `verify_ini_panel_readonly_status_api.mjs` 覆盖 manifest shape;
|
||
- `verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 中的 manifest 暴露;
|
||
- `verify_ini_panel_entry_docs.mjs` 与 `docs/panel-entry.md` 同步记录 manifest 入口;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_readonly_status_api.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
|
||
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_readonly_status_api_node_smoke=ok
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
interp_wasm_node_smoke=ok
|
||
sim_configs_wasm_node_inventory_executed=28
|
||
sim_configs_wasm_node_inventory_passed=28
|
||
sim_configs_wasm_node_inventory_skipped=131
|
||
sim_configs_wasm_node_inventory_unexpected_fail=0
|
||
browser_interp_smoke=ok
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 SDK/API surface。下一批建议为 shell-facing API 增加一个 focused contract smoke,
|
||
直接校验 `createIniPanelShellViewModel().controlPage` 的所有方法名、manifest 字段和只读边界,
|
||
使外部页面接入前能运行一个快速 contract gate;仍保持只描述 UI/host boundary facts,不在 JS
|
||
中解释 G-code、canonical events 或 CNC 运行语义。
|