推进 INI 面板会话恢复加载流程

This commit is contained in:
2026-06-14 15:24:26 +08:00
parent 558960b2f2
commit 633b8fd0ed
4 changed files with 127 additions and 28 deletions

View File

@@ -546,3 +546,68 @@ host_wasm_opfs_browser_smokes=ok
`Restore And Load Session`:先校验 snapshot再把 OPFS INI/parameter/tool-table 加载到
interpreter WASM FS并保持 G-code path 可运行。范围仍限定 OPFS/session/UI 编排,不
解析或改写任何 CNC 语义。
六、2026-06-14 继续执行记录INI panel restore-and-load session workflow
本轮继续推进 browser/UI workflow 的实质能力,把 snapshot restore 和 machine-session
load 串成一个可直接执行的入口。
完成内容:
- 在 `wasm-port/runtime/ui/ini-panel/app.js` 抽出
`restoreSessionSnapshotToEditor()`,统一执行 checked snapshot load、OPFS machine
file restore、编辑器回填和 snapshot 文件清单字段回填;
- 抽出 `loadMachineSessionIntoWasm()`,统一通过既有
`loadMachineSessionFromOpfs(...)` 把 OPFS INI、parameter、tool-table 加载到
interpreter WASM FS
- 保留既有 `Restore Session Snapshot` 与 `Load Machine Session` 按钮行为,并让它们
复用上述 workflow helper
- 新增 `Restore And Load Session` 控件:
- 先通过 `loadMachineSessionSnapshot(...)` 校验 snapshot
- 再恢复 OPFS machine files 到编辑器;
- 再把 INI、parameter、tool-table 加载到 interpreter WASM FS
- 保留 snapshot G-code path供后续 `Run G-code` 使用;
- 在 browser INI panel smoke 中改为通过 `Restore And Load Session` 完成 session
恢复加载,再继续执行 G-code run验证 snapshot path、OPFS file mapping、
LinuxCNC parameter/tool-table load result 和 canonical-event flow
- 未改变 LinuxCNC INI parser、interpreter、parameter restore/save、tool-table load/save
或 G-code 执行语义;
- 未改变 OPFS path model、generic snapshot envelope、file-service、machine-session
bridge 或 LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tests/opfs/node/verify_file_service.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
SKIP_INI_BUILD=1 SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_interp_browser.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
browser_ini_opfs_smoke=ok
opfs_file_service_node_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
```
下一步建议:
继续沿 UI workflow 做实质推进。优先把 `Run G-code` 的输入从固定
`GCODE_FILENAME` 收敛为“优先使用已恢复 snapshot 中的 G-code OPFS path否则回退默认
G-code”并在 browser smoke 中验证 restore-and-load 后运行的程序来自 snapshot 文件清单。
仍只做 OPFS/session/UI 编排,不解析或改写 G-code 语义。