1900 lines
73 KiB
Plaintext
1900 lines
73 KiB
Plaintext
项目整体完成情况与后续执行计划
|
||
|
||
生成时间:2026-06-14 CST
|
||
|
||
本文件接替 `text10.txt`。后续工作按 `text11.txt` 执行;除非明确要求审计旧记录,
|
||
不要再回到 `text1/text2/text3/text4/text5/text6/text7/text8/text9/text10` 扩展进度。
|
||
`text10.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. 当前续接点。
|
||
|
||
`text10.txt` 已推进到:
|
||
|
||
```text
|
||
二十八、2026-06-14 继续执行记录:INI panel session snapshot workflow helper
|
||
```
|
||
|
||
该批已提交:
|
||
|
||
```text
|
||
4e4a9c6 推进 INI 面板 session snapshot workflow helper
|
||
```
|
||
|
||
本文件从 `text11.txt` 重新开始记录后续进度。
|
||
|
||
2. 每轮开始前必须先执行:
|
||
|
||
```bash
|
||
git status --short
|
||
git log -5 --oneline
|
||
tail -n 120 text11.txt
|
||
awk '/^[一二三四五六七八九十百]+、/ {print}' text11.txt | sort | uniq -d
|
||
```
|
||
|
||
执行规则:
|
||
|
||
- 如果 `git status --short` 是 clean,且最新提交已经包含当前建议工作,不要重复追加记录;
|
||
- 每轮只追加一个新的中文编号记录;
|
||
- 提交前再次检查标题唯一性;
|
||
- `text11.txt` 只记录新的后续进度,不复制 `text10.txt` 的长历史;
|
||
- 每批完成后,如果要写记录,先写 `text11.txt`,再提交该批代码和记录;
|
||
- 如果发现重复记录,先做 dedupe 清理并提交,再继续新功能或新 guard;
|
||
- `text10.txt` 不再追加新进度,除非明确要求审计或修正历史记录。
|
||
|
||
三、当前完成情况摘要
|
||
|
||
1. 当前工作树状态。
|
||
|
||
切换到 `text11.txt` 前已确认:
|
||
|
||
```text
|
||
git status --short: clean
|
||
```
|
||
|
||
当前最近提交:
|
||
|
||
```text
|
||
4e4a9c6 推进 INI 面板 session snapshot workflow helper
|
||
48a0f61 收拢 browser explicit session readback path helper
|
||
b85444b 推进 INI 面板状态汇总 helper
|
||
405cc0b 推进 INI 面板 machine file helper 文档
|
||
a60826b 推进 INI 面板 machine file summary helper
|
||
```
|
||
|
||
2. WASM port 基础架构稳定。
|
||
|
||
`wasm-port` 仍按独立移植工作区组织,包含 vendor、runtime/core、runtime/sdk、
|
||
runtime/opfs、runtime/ui、native/wasm/browser tests、docs 和 tools。
|
||
|
||
3. 关键基线保持稳定。
|
||
|
||
- `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`
|
||
|
||
4. 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;
|
||
- session snapshot summary;
|
||
- session load summary;
|
||
- machine file save/load summary;
|
||
- panel state summary;
|
||
- session snapshot save 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_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
|
||
ui_node_smokes=ok
|
||
```
|
||
|
||
2. Session snapshot save workflow。
|
||
|
||
当前已新增:
|
||
|
||
```text
|
||
wasm-port/runtime/ui/ini-panel/session-workflow.js
|
||
```
|
||
|
||
导出:
|
||
|
||
```text
|
||
saveMachineSessionSnapshotWorkflow(input)
|
||
createSessionSnapshotFieldState(summary)
|
||
sessionSnapshotSaveLogLines(summary)
|
||
```
|
||
|
||
该 workflow helper 执行完整 host-boundary 保存链路:
|
||
|
||
- 写入当前 INI/tool/parameter machine text files;
|
||
- 写入默认 G-code program;
|
||
- 保存 machine session snapshot;
|
||
- 返回 snapshot summary、UI field state 和 log lines。
|
||
|
||
`wasm-port/runtime/ui/ini-panel/app.js` 的 `Save Session Snapshot` 按钮已改为调用该
|
||
workflow helper,按钮处理器只负责 field/log 渲染。
|
||
|
||
3. 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
|
||
```
|
||
|
||
五、当前必须保持通过的验证入口
|
||
|
||
每批后续改动至少运行:
|
||
|
||
```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
|
||
wasm-port/tests/native/verify_native_probes.sh
|
||
```
|
||
|
||
六、下一步执行计划
|
||
|
||
1. 当前第一候选批次:restore/load session workflow helper。
|
||
|
||
按“实质性能力优先”,下一批不要回到零散 path guard。优先把
|
||
`Restore Session Snapshot` 与 `Restore And Load Session` 抽成 session workflow helper,
|
||
让 restore、load、field state、summary/log lines 走同一套可调用 API。
|
||
|
||
建议目标:
|
||
|
||
- 在 `wasm-port/runtime/ui/ini-panel/session-workflow.js` 增加 restore workflow helper;
|
||
- helper 通过注入函数执行:
|
||
- `loadMachineSessionSnapshot(...)`;
|
||
- `loadMachineTextFiles(...)`;
|
||
- 可选 `loadMachineSessionFromOpfs(...)`;
|
||
- 返回:
|
||
- restored snapshot;
|
||
- editor INI text;
|
||
- snapshot summary;
|
||
- optional load summary;
|
||
- UI field state;
|
||
- log lines;
|
||
- `app.js` 的 `Restore Session Snapshot` 和 `Restore And Load Session` 按钮改为调用该
|
||
workflow helper;
|
||
- Node smoke 覆盖 restore-only 与 restore-and-load 两种流程;
|
||
- Browser INI panel smoke 继续验证真实 OPFS/session persistence;
|
||
- 不改变 snapshot-store、machine-file-store、LinuxCNC interpreter、tool、parameter 或
|
||
G-code semantics。
|
||
|
||
2. 第一候选批次验证。
|
||
|
||
执行:
|
||
|
||
```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 面板 restore/load session workflow helper
|
||
```
|
||
|
||
3. 后续候选。
|
||
|
||
如果 restore/load workflow 完成后仍有余力,继续推进更实质的用户流程能力:
|
||
|
||
- 把 `run-gcode` 的 snapshot/default program selection、WASM write、run summary、field/log
|
||
更新抽成可调用 workflow helper;
|
||
- 给 UI/API 暴露一个更完整的 machine session state snapshot,用于上层应用直接消费;
|
||
- 只在这些 workflow helper 的验证需要时,继续收敛局部测试胶水。
|
||
|
||
一、2026-06-14 继续执行记录:INI panel restore/load session workflow helper
|
||
|
||
本轮按 `text11.txt` 第一原则继续推进实质性 UI/session persistence 能力,把
|
||
`Restore Session Snapshot` 和 `Restore And Load Session` 两条用户流程抽成可复用 workflow
|
||
helper,而不是继续做局部 path/test glue 收敛。
|
||
|
||
完成内容:
|
||
|
||
- 扩展 `wasm-port/runtime/ui/ini-panel/session-workflow.js`;
|
||
- 新增导出:
|
||
- `restoreMachineSessionSnapshotWorkflow(input)`;
|
||
- `sessionSnapshotRestoreLogLines(summary)`;
|
||
- restore workflow 通过注入函数执行:
|
||
- `loadMachineSessionSnapshot(...)`;
|
||
- `loadMachineTextFiles(...)`;
|
||
- 可选 `loadSession()`;
|
||
- restore-only 返回:
|
||
- restored snapshot;
|
||
- editor INI text;
|
||
- snapshot summary;
|
||
- OPFS field state;
|
||
- restore log lines;
|
||
- restore-and-load 返回:
|
||
- loaded session;
|
||
- load summary;
|
||
- WASM field state;
|
||
- snapshot + OPFS-to-WASM load log lines;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 的 `Restore Session Snapshot` 和
|
||
`Restore And Load Session` 按钮改为调用 workflow helper,按钮处理器只负责写 editor、
|
||
field 和 log;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_session_workflow.mjs` 覆盖 save、restore-only
|
||
和 restore-and-load 三条 workflow;
|
||
- `wasm-port/docs/ui-session-summary-helpers.md` 更新 restore workflow API、返回结构、
|
||
log helper 和边界说明;
|
||
- 未改变 OPFS bridge、snapshot-store、machine-file-store、LinuxCNC interpreter、tool、
|
||
parameter、G-code 文本或 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
|
||
ini_panel_run_summary_node_smoke=ok
|
||
ini_panel_session_summary_node_smoke=ok
|
||
ini_panel_machine_file_summary_node_smoke=ok
|
||
ini_panel_state_summary_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续按“实质性能力优先”推进。下一批优先把 `run-gcode` 的用户流程抽成可调用 workflow
|
||
helper,覆盖 snapshot/default program selection、G-code OPFS load、WASM write、LinuxCNC
|
||
interpreter run、run summary、field/log state 和 error state。该 helper 仍只能编排
|
||
host/runtime boundary,不解析或实现 G-code、planner、tool、parameter 或 canonical-event
|
||
语义。
|
||
|
||
二、2026-06-14 继续执行记录:INI panel run G-code workflow helper
|
||
|
||
本轮继续按 `text11.txt` 第一原则推进实质性 UI workflow 能力,把 `run-gcode` 用户流程抽成
|
||
可复用 helper,让上层 UI/API 可以直接复用 session/default G-code 选择、OPFS load、WASM
|
||
staging、LinuxCNC interpreter run、run summary、field/log state 的编排。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/run-workflow.js`;
|
||
- 导出:
|
||
- `selectSessionGcodeProgram(input)`;
|
||
- `runSessionContextLogLines(program, snapshot, snapshotLabel)`;
|
||
- `runGcodeSessionWorkflow(input)`;
|
||
- workflow helper 执行 host/runtime boundary 编排:
|
||
- 从 snapshot G-code OPFS path 或默认 G-code path 选择程序;
|
||
- 通过注入的 `loadGcodeProgram(...)` 读取 OPFS G-code 文本;
|
||
- 调用 `interp.writeTextFile(...)` 写入 interpreter WASM filesystem;
|
||
- 调用 LinuxCNC-owned `interp.runFileWithIni(...)`;
|
||
- 返回 program、resultText、run summary、UI field state、motionSnapshots 和 log lines;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 的 `Run G-code` 按钮改为调用 workflow helper;
|
||
- canonical-event 展示和 motion playback 仍留在 UI 层,workflow 只通过注入的
|
||
`summarizeRun(...)` 接收已观察到的 UI summary/motion state;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_run_workflow.mjs` 和 shell wrapper;
|
||
- `wasm-port/tests/ui/node/verify_ui_node_smokes.sh` 纳入 run workflow smoke;
|
||
- `wasm-port/docs/ui-run-summary-helpers.md` 更新 run workflow API、返回结构和边界说明;
|
||
- 未改变 OPFS bridge、machine-file-store、LinuxCNC interpreter、G-code 文本、canonical-event
|
||
语义、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_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_run_summary_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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续按“实质性能力优先”推进。优先把 save/restore/load/run workflow 的结果汇总成一个
|
||
更完整的 machine session state snapshot helper,供上层 UI/API 直接消费当前 machine、
|
||
session、loaded WASM mapping、selected G-code、last run summary、panel badges 和 error
|
||
state;该 helper 只聚合已有 host/runtime boundary facts,不解析 G-code 或扩展 CNC 语义。
|
||
|
||
三、2026-06-14 继续执行记录:INI panel machine session state snapshot helper
|
||
|
||
本轮继续按 `text11.txt` 第一原则推进实质性 UI/API 能力,把 save/restore/load/run workflow
|
||
的结果汇总成一个 machine session state snapshot,供上层 UI/API 直接读取,而不是继续
|
||
依赖分散的 DOM 字段、日志文本和临时全局值。
|
||
|
||
完成内容:
|
||
|
||
- 扩展 `wasm-port/runtime/ui/ini-panel/panel-state-summary.js`;
|
||
- 新增导出 `createMachineSessionStateSnapshot(input)`;
|
||
- state snapshot 汇总:
|
||
- panel badges;
|
||
- machine;
|
||
- machineFiles;
|
||
- sessionSnapshot;
|
||
- sessionLoad;
|
||
- selectedProgram;
|
||
- run summary;
|
||
- fields;
|
||
- lastAction;
|
||
- error;
|
||
- fiveaxisRemap;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 在 save/restore/load/run/failure/boot 路径后更新
|
||
`window.linuxCncIniPanelMachineSessionState`;
|
||
- browser INI panel smoke 现在直接校验该 state snapshot 的关键字段;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖新 state snapshot 形状;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 更新 state snapshot API、window 暴露和边界说明;
|
||
- 未改变 OPFS bridge、snapshot-store、machine-file-store、LinuxCNC interpreter、G-code 文本、
|
||
canonical-event 语义、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_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_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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续按“实质性能力优先”推进。下一批优先把 `window.linuxCncIniPanelMachineSessionState`
|
||
整理成更明确的 API/文档使用方式,或者在 `run-gcode`/restore/load/save 之外再补一层
|
||
更高阶的 UI consumer helper,用于读取状态并生成上层展示/导出结果;只围绕已有
|
||
host/runtime boundary facts 组合,不回到 path guard。
|
||
|
||
四、2026-06-14 继续执行记录:INI panel machine session state report helper
|
||
|
||
本轮继续按 `text11.txt` 第一原则推进上层 UI/API 可消费能力,把 machine session state
|
||
snapshot 转成稳定的 consumer report 结构,方便外部 UI、导出路径或测试直接读取状态。
|
||
|
||
完成内容:
|
||
|
||
- 扩展 `wasm-port/runtime/ui/ini-panel/panel-state-summary.js`;
|
||
- 新增导出 `createMachineSessionStateReport(state)`;
|
||
- report helper 输出稳定分组:
|
||
- readiness;
|
||
- session;
|
||
- loaded;
|
||
- program;
|
||
- run;
|
||
- status;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖 report 输出结构;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 增加 report API、用途和边界说明;
|
||
- 未改变 INI panel UI workflow、OPFS bridge、snapshot-store、machine-file-store、
|
||
LinuxCNC interpreter、G-code 文本、canonical-event 语义、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_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_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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续按“实质性能力优先”推进。优先把该 state report 接入浏览器 UI 的真实可用流程,例如
|
||
新增一个导出/复制 report 的 UI action 或一个明确的 SDK-facing getter,使上层消费者不必
|
||
直接读取 `window` 内部对象;仍只导出 host/runtime boundary facts,不解析或实现 CNC 语义。
|
||
|
||
合适的收敛点是当前这条线再补完两块后:
|
||
|
||
- machine session state report 稳定下来;
|
||
- run/save/restore/load workflow 都有对称的可复用入口。
|
||
|
||
到那时,把 `text11.txt` 里的建议收敛成一个明确 UI roadmap,建议分成这几段:
|
||
|
||
1. 状态层
|
||
|
||
- `MachineSessionState`
|
||
- `MachineSessionStateReport`
|
||
- 明确哪些字段是给上层 UI 读的
|
||
|
||
2. 会话层
|
||
|
||
- save / restore / restore-load / load
|
||
- session snapshot persistence
|
||
- OPFS 路径与 WASM 路径映射
|
||
|
||
3. 运行层
|
||
|
||
- G-code 选择
|
||
- run workflow
|
||
- run summary / motion / canonical-event 只做展示编排
|
||
|
||
4. 控制层
|
||
|
||
- 未来网页按钮和面板动作
|
||
- 用户启动、恢复、运行、查看状态
|
||
- 报错与恢复流程
|
||
|
||
5. 导出层
|
||
|
||
- 状态 report 导出
|
||
- 复制、下载、对外 API
|
||
|
||
当前阶段先继续补 workflow 和 report,后面再把它整理成一版面向“控制网页界面”的 roadmap。
|
||
|
||
五、2026-06-14 继续执行记录:INI panel browser state report getter
|
||
|
||
本轮按“导出层”第一步推进,把 `MachineSessionStateReport` 接入真实浏览器 INI panel
|
||
流程,提供明确的上层 UI/API 读取入口,避免继续让消费者直接抓 DOM 或读取临时
|
||
`window.linuxCncIniPanelMachineSessionState`。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 新增并暴露
|
||
`window.getMachineSessionStateReport()`;
|
||
- getter 每次调用 `createMachineSessionStateReport(window.linuxCncIniPanelMachineSessionState)`,
|
||
返回当前稳定 report;
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 在真实 save、restore-load、run
|
||
流程后读取 report,并验证:
|
||
- snapshot label;
|
||
- G-code OPFS path;
|
||
- loaded INI/parameter WASM path;
|
||
- selected program source/path;
|
||
- run status;
|
||
- canonical-event 和 motion snapshot count;
|
||
- last action 与 error;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 明确上层 UI/API 应读取
|
||
`createMachineSessionStateReport(...)` 或 `window.getMachineSessionStateReport()`,
|
||
不应抓 DOM 或直接依赖临时 window state;
|
||
- 未新增下载/复制按钮,先稳定 API 入口;
|
||
- 未改变 INI panel OPFS bridge、snapshot-store、machine-file-store、LinuxCNC
|
||
interpreter、G-code 文本、canonical-event 语义、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tools/verify_vendor_sync.sh
|
||
wasm-port/tools/verify_no_standalone_cnc_semantics.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
|
||
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
|
||
vendor sync up to date
|
||
standalone CNC semantics guard complete
|
||
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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续沿“导出层/控制网页界面”roadmap 推进。下一批可以在不新增复杂 UI 按钮的前提下,
|
||
补一个更靠近上层消费者的 report export helper 或 SDK-facing wrapper,例如把 report
|
||
序列化成稳定 JSON 文本/Blob 输入;仍只组合已有 host/runtime boundary facts,不解析
|
||
G-code、不推导 CNC 语义、不读取 DOM。
|
||
|
||
六、2026-06-14 继续执行记录:INI panel state report JSON export helper
|
||
|
||
本轮继续推进“导出层”,在不新增复制/下载按钮的前提下,把 machine session state report
|
||
包装成上层 UI/API 可直接复用的稳定 JSON export payload。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/panel-state-summary.js` 新增
|
||
`createMachineSessionStateReportExport(state, options)`;
|
||
- export helper 返回:
|
||
- `filename`;
|
||
- `mediaType: "application/json"`;
|
||
- `report`;
|
||
- 带末尾换行的 pretty JSON `text`;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 暴露
|
||
`window.getMachineSessionStateReportExport()`;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖默认 filename、
|
||
media type、report 和 JSON text;
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 在真实 save、restore-load、run 后读取
|
||
browser export getter,并验证 JSON text 可解析、run count 和 program source 稳定;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 增加 export helper 说明;
|
||
- 未新增 UI 按钮,未抓 DOM,未直接依赖临时 window state;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、G-code 文本、canonical-event
|
||
语义、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_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_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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续按“实质性能力优先”推进。下一批建议把 report/export getter 收敛成一个更明确的
|
||
INI panel API namespace,例如 `window.linuxCncIniPanelApi.getMachineSessionStateReport()`
|
||
和 `getMachineSessionStateReportExport()`,为后续控制网页界面调用 save/restore/load/run
|
||
工作流预留统一入口;仍先不做复杂按钮,不解析 CNC 语义,不扩大 LinuxCNC runtime 边界。
|
||
|
||
七、2026-06-14 继续执行记录:INI panel API namespace
|
||
|
||
本轮继续推进“控制网页界面/API surface”方向,把上轮的 report/export getter 收敛到
|
||
明确的 INI panel API namespace,为后续统一暴露 save、restore、load、run 工作流入口做准备。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 新增
|
||
`window.linuxCncIniPanelApi`;
|
||
- namespace 当前暴露:
|
||
- `getMachineSessionStateReport()`;
|
||
- `getMachineSessionStateReportExport()`;
|
||
- 保留旧的 `window.getMachineSessionStateReport()` 与
|
||
`window.getMachineSessionStateReportExport()` 作为兼容 shim;
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 改为优先通过
|
||
`window.linuxCncIniPanelApi` 读取 report/export;
|
||
- browser smoke 继续验证旧 global getter 与 namespace getter 输出一致;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 明确上层 UI/API 应读取
|
||
`window.linuxCncIniPanelApi.getMachineSessionStateReport()`,不要抓 DOM 或直接依赖
|
||
`window.linuxCncIniPanelMachineSessionState`;
|
||
- 未新增复杂 UI 按钮;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、G-code 文本、canonical-event
|
||
语义、tool、parameter、planner 或 LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/ui/node/verify_ini_panel_state_summary.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/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
|
||
browser_ini_opfs_smoke=ok
|
||
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
|
||
ui_node_smokes=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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续按“实质性能力优先”推进。下一批建议在 `window.linuxCncIniPanelApi` 下暴露第一个
|
||
只读/低风险 workflow-facing helper,例如 `getMachineSessionState()` 或
|
||
`getMachineSessionWorkflowStatus()`,把当前 last action、error、readiness、session/run
|
||
摘要合并为控制网页界面可直接轮询的状态对象;仍不新增按钮、不解析 G-code、不把 CNC
|
||
语义搬进 JS。
|
||
|
||
八、2026-06-14 继续执行记录:INI panel workflow status helper
|
||
|
||
本轮继续推进 `window.linuxCncIniPanelApi` 的只读面,补一个更适合控制网页界面轮询的
|
||
workflow status helper,把现有 report 派生为更轻量的状态对象。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/panel-state-summary.js` 新增
|
||
`createMachineSessionWorkflowStatus(state)`;
|
||
- helper 只从 `createMachineSessionStateReport(state)` 派生,返回:
|
||
- `readiness`;
|
||
- `lastAction`;
|
||
- `error`;
|
||
- `session`;
|
||
- `run`;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 在
|
||
`window.linuxCncIniPanelApi`、`window.getMachineSessionWorkflowStatus()` 下暴露该 helper;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖 workflow status 的字段;
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 通过真实 save、restore-load、run 流程验证
|
||
workflow status,并确认其与 report / export / legacy getter 一致;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 workflow status helper 说明;
|
||
- 未新增按钮;
|
||
- 未解析 G-code;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、canonical-event 语义、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_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
|
||
browser_ini_opfs_smoke=ok
|
||
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
|
||
ui_node_smokes=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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续沿 `window.linuxCncIniPanelApi` 收敛控制面。下一批建议把当前散落的 report/export/
|
||
status getter 再包成一个明确的 `getMachineSessionStateBundle()` 或 `getMachineSessionView()`
|
||
只读入口,给控制网页界面一个单点轮询对象;仍保持只读,不加按钮,不扩大 CNC 语义边界。
|
||
|
||
九、2026-06-14 继续执行记录:INI panel state bundle helper
|
||
|
||
本轮继续沿 `window.linuxCncIniPanelApi` 收敛控制面,把现有 report/export/status 入口
|
||
聚合成一个单点只读 bundle helper,给控制网页界面或上层 SDK 一个更稳的轮询对象。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/panel-state-summary.js` 新增
|
||
`createMachineSessionStateBundle(state, options)`;
|
||
- bundle helper 返回:
|
||
- `report`;
|
||
- `export`;
|
||
- `workflowStatus`;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 在
|
||
`window.linuxCncIniPanelApi`、`window.getMachineSessionStateBundle()` 下暴露该 helper;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖 bundle 与单项 getter 的
|
||
结构一致性;
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 在真实 save、restore-load、run 流程后验证
|
||
bundle,确认其 report/export/status 与单项 getter 一致;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 bundle helper 说明,并明确它是控制页的
|
||
推荐单点只读入口;
|
||
- 未新增按钮;
|
||
- 未解析 G-code;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、canonical-event 语义、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_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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续沿“单点只读入口”推进,把 `window.linuxCncIniPanelApi` 再收敛成一个更明确的
|
||
`getMachineSessionView()` 或 `getMachineSessionStateBundle()` 的稳定消费者契约,并开始只
|
||
在这个 bundle 上面叠控制页展示逻辑;仍不新增按钮、不把 CNC 语义搬进 JS。
|
||
|
||
十、2026-06-14 继续执行记录:INI panel control view helper
|
||
|
||
本轮按“加快实质性推进”继续往控制网页界面的只读展示层推进,在 bundle 之上新增
|
||
control view helper,让上层 UI 可以直接渲染 status 与 sections/rows。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/panel-state-summary.js` 新增
|
||
`createMachineSessionControlView(bundle)`;
|
||
- control view 返回:
|
||
- `status`;
|
||
- `sections`;
|
||
- readiness/session/run 三组 rows;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 在
|
||
`window.linuxCncIniPanelApi`、`window.getMachineSessionControlView()` 下暴露该 helper;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖 view model 输出结构;
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 在真实 save、restore-load、run 流程后验证
|
||
control view 的 status、section id、workflow row 和 canonical-event row;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 control view 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_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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进实际控制网页界面的只读展示层。下一批建议新增一个极薄的 browser smoke 或
|
||
文档化控制页消费示例,直接读取 `window.linuxCncIniPanelApi.getMachineSessionControlView()`
|
||
并渲染 sections;仍保持只读,不加控制按钮,不解析 G-code。
|
||
|
||
十一、2026-06-14 继续执行记录:INI panel control view DOM consumer
|
||
|
||
本轮按“加快实质性推进”把 control view 从纯数据 helper 推到真实 browser consumer 层,
|
||
新增一个极薄的只读 DOM 渲染示例,直接消费
|
||
`window.linuxCncIniPanelApi.getMachineSessionControlView()`。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 新增只读 control view DOM 容器;
|
||
- 新增 `renderControlView(document, view)`,按 `view.sections` 渲染 section heading 与
|
||
`dl/dt/dd` rows;
|
||
- browser smoke 在真实 save、restore-load、run 流程后:
|
||
- 读取 `getMachineSessionControlView()`;
|
||
- 渲染 sections;
|
||
- 验证 DOM status;
|
||
- 验证 DOM section count;
|
||
- 验证 run section canonical-event row;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 增加最小 browser consumer 示例;
|
||
- 未新增控制按钮;
|
||
- 未解析 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_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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进实质控制网页界面,但保持只读边界。下一批建议把这个 DOM consumer 提取为一个
|
||
可复用的纯 renderer helper,例如 `renderMachineSessionControlView(container, view)`,
|
||
供真实页面和 smoke 共用;仍不新增控制按钮,不解析 G-code。
|
||
|
||
十二、2026-06-14 继续执行记录:INI panel control view renderer helper
|
||
|
||
本轮按“加快实质性推进”把上一批 browser smoke 内的只读 DOM consumer 提取成 runtime
|
||
可复用 renderer,并接入真实 INI panel 页面,使控制页展示不再依赖测试内临时函数。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/control-view-renderer.js`;
|
||
- 导出 `renderMachineSessionControlView(container, view)`;
|
||
- renderer 只负责把 `createMachineSessionControlView(...)` 的 status、sections、rows 渲染
|
||
到 DOM;
|
||
- `wasm-port/runtime/ui/ini-panel/index.html` 新增
|
||
`#machine-session-control-view` 只读控制视图容器和对应样式;
|
||
- `wasm-port/runtime/ui/ini-panel/app.js` 新增
|
||
`window.linuxCncIniPanelApi.renderMachineSessionControlView(container)`;
|
||
- panel state 每次更新后会刷新内置 control view;
|
||
- `wasm-port/tests/browser/ini_panel_smoke.html` 删除测试内临时 `renderControlView(...)`,
|
||
改为导入 runtime renderer;
|
||
- browser smoke 同时验证外部 consumer 容器和真实页面内置 control view 容器;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖纯 renderer DOM 输出;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 renderer 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_state_summary.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续保持只读边界,下一批建议把 control view renderer 的页面消费路径进一步固化为一个
|
||
小型控制页入口或 example page:只读取 `linuxCncIniPanelApi`,展示当前 machine/session/run
|
||
状态,不新增控制按钮,不解析 G-code。若要优先 SDK/API surface,也可以先把当前
|
||
state bundle/control view renderer 的导出面整理进一个明确的 UI module 文档入口。
|
||
|
||
十三、2026-06-14 继续执行记录:INI panel control page entry
|
||
|
||
本轮按“加快实质性推进”继续把只读 control view 从 renderer 推到可直接打开的页面入口,
|
||
新增一个独立的控制页 example,并把 browser smoke 扩展为双入口验证。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/control-page.html`;
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/control-page.js`;
|
||
- control page 通过隐藏 iframe 载入真实 `runtime/ui/ini-panel/index.html`,只读读取
|
||
`window.linuxCncIniPanelApi.getMachineSessionControlView()`;
|
||
- control page 把当前 status 与 sections 镜像到可见页面;
|
||
- 继续沿用现有 `renderMachineSessionControlView(container, view)`,没有新增控制按钮;
|
||
- 新增 `wasm-port/tests/browser/ini_panel_control_page_smoke.html`,覆盖 control page 入口、
|
||
iframe 内面板 API、渲染轮询和 DOM 输出;
|
||
- `wasm-port/tests/browser/verify_ini_panel_browser.sh` 现同时验证:
|
||
- `browser_ini_opfs_smoke=ok`
|
||
- `browser_ini_control_page_smoke=ok`
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 增加 control page 入口说明;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.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
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
ui_node_smokes=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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续把这个控制页入口向“可复用上层入口”推进。下一批建议把
|
||
`control-page.html/js` 的页面消费逻辑抽成更小的页面 controller helper,或者直接加一个
|
||
只读导航入口页,把 `index.html` 与 `control-page.html` 作为并列入口统一暴露;仍保持
|
||
只读,不新增控制按钮,不解析 G-code。
|
||
|
||
十四、2026-06-14 继续执行记录:INI panel control page controller helper
|
||
|
||
本轮按“加快实质性推进”把 control page 的页面消费逻辑抽成可复用 controller helper,
|
||
让只读控制页入口不再把 iframe/API 轮询和渲染逻辑内联在页面脚本里。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/control-page-controller.js`;
|
||
- 导出 `createMachineSessionControlPageController(input)`;
|
||
- controller 负责:
|
||
- 读取隐藏 iframe 的 `linuxCncIniPanelApi`;
|
||
- 调用 `getMachineSessionControlView()`;
|
||
- 渲染 waiting/status;
|
||
- 用注入的 renderer 渲染 control view;
|
||
- 启动轮询;
|
||
- 挂载 panel iframe;
|
||
- `wasm-port/runtime/ui/ini-panel/control-page.js` 收敛为 DOM 绑定层;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_control_page_controller.mjs`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_control_page_controller.sh`;
|
||
- `wasm-port/tests/ui/node/verify_ui_node_smokes.sh` 纳入 controller node smoke;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 controller 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_control_page_controller.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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_controller_node_smoke=ok
|
||
ui_node_smokes=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续保持只读边界,下一批建议新增一个极薄的 UI entry index,例如
|
||
`runtime/ui/ini-panel/launch.html`,把编辑/运行面板 `index.html` 与只读控制页
|
||
`control-page.html` 作为并列入口暴露,并用 browser smoke 验证两个入口链接可达;仍不新增
|
||
控制按钮,不解析 G-code。
|
||
|
||
十五、2026-06-14 继续执行记录:INI panel launch entry
|
||
|
||
本轮按“加快实质性推进”新增只读 launcher 入口页,把编辑/运行面板和只读控制页作为并列
|
||
入口统一暴露,并把 launcher 可达性接入 browser smoke。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/launch.html`;
|
||
- launcher 提供两个并列入口:
|
||
- `./index.html` 编辑/运行面板;
|
||
- `./control-page.html` 只读控制视图;
|
||
- 新增 `wasm-port/tests/browser/ini_panel_launch_smoke.html`;
|
||
- `wasm-port/tests/browser/verify_ini_panel_browser.sh` 现在同时验证:
|
||
- `browser_ini_opfs_smoke=ok`
|
||
- `browser_ini_control_page_smoke=ok`
|
||
- `browser_ini_launch_smoke=ok`
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 launcher 入口说明;
|
||
- 未新增控制按钮;
|
||
- 未解析 G-code;
|
||
- 未解释 canonical events;
|
||
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
|
||
LinuxCNC-owned runtime semantics。
|
||
|
||
验证已通过:
|
||
|
||
```bash
|
||
git diff --check
|
||
wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.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
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
ui_node_smokes=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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续保持实质 UI workflow 优先。下一批建议把 launcher 中的入口清单抽成一个小的
|
||
`entry-manifest.js`,供 launcher、docs 或未来外层 shell 共用,并用 node/browser smoke 验证
|
||
入口 href 与标题一致;仍保持只读,不新增控制按钮,不解析 G-code。
|
||
|
||
十六、2026-06-14 继续执行记录:INI panel entry manifest
|
||
|
||
本轮按“加快实质性推进”把 launcher 的入口清单抽成共享 manifest,使入口 href/title 成为
|
||
可复用的 UI entry contract,而不是散落在 HTML 和 smoke 断言里。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/entry-manifest.js`;
|
||
- 导出:
|
||
- `INI_PANEL_ENTRIES`;
|
||
- `getIniPanelEntryManifest()`;
|
||
- `getIniPanelEntryByHref(href)`;
|
||
- `wasm-port/runtime/ui/ini-panel/launch.html` 改为从 manifest 同步入口标题和 href;
|
||
- `wasm-port/tests/browser/ini_panel_launch_smoke.html` 改为同时验证 manifest 与 launcher DOM;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_entry_manifest.mjs`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_entry_manifest.sh`;
|
||
- `wasm-port/tests/ui/node/verify_ui_node_smokes.sh` 纳入 entry manifest node smoke;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 entry 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_entry_manifest.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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_entry_manifest_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续优先推进可复用 UI/API surface。下一批建议把 `entry-manifest.js` 与 control page
|
||
controller/renderer 组合成一个更明确的 `ui-shell` 或 `panel-entry` 文档/API 入口,或者新增
|
||
一个 node smoke 验证 docs 中列出的入口与 manifest 完全一致;仍保持只读,不新增控制按钮,
|
||
不解析 G-code。
|
||
|
||
十七、2026-06-14 继续执行记录:INI panel ui shell export
|
||
|
||
本轮按“加快实质性推进”新增统一 UI shell 导出,把 entry manifest、control page controller
|
||
和 control view renderer 收敛到单一入口模块,方便上层页面、文档和 smoke 共享。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/ui-shell.js`;
|
||
- `ui-shell.js` 统一 re-export:
|
||
- `INI_PANEL_ENTRIES`;
|
||
- `getIniPanelEntryByHref()`;
|
||
- `getIniPanelEntryManifest()`;
|
||
- `createMachineSessionControlPageController()`;
|
||
- `renderMachineSessionControlView()`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_ui_shell.sh`;
|
||
- `wasm-port/tests/ui/node/verify_ui_node_smokes.sh` 纳入 ui shell node smoke;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充 ui shell 说明;
|
||
- 未新增控制按钮;
|
||
- 未解析 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_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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_ui_shell_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续保持只读边界,下一批建议在 `docs/ui-panel-state-summary.md` 之外补一个更短的
|
||
`ui-shell.md` 或 `panel-entry.md`,只列出 `ui-shell.js`、`launch.html`、`control-page.html`
|
||
三者关系和最小用法,或者把 launcher 页面改成从 `ui-shell.js` 读取 manifest;仍不新增控制
|
||
按钮,不解析 G-code。
|
||
|
||
十八、2026-06-14 继续执行记录:launcher and smoke shell alignment
|
||
|
||
本轮把 launcher 页面和 launch smoke 统一切到 `ui-shell.js`,使入口页面、测试断言与统一
|
||
shell 入口保持一致,减少入口契约的重复来源。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/launch.html` 改为从 `ui-shell.js` 读取 manifest;
|
||
- `wasm-port/tests/browser/ini_panel_launch_smoke.html` 改为从 `ui-shell.js` 读取 manifest;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs` 增加 manifest 复制语义检查;
|
||
- 保持 `ui-shell.js` 作为 entry manifest、controller、renderer 的单一导出入口;
|
||
- 未新增控制按钮;
|
||
- 未解析 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_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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_ui_shell_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续压缩重复文档与入口说明。下一批建议新增一个极短的 `panel-entry.md`,只写
|
||
`ui-shell.js`、`launch.html`、`control-page.html` 三者关系和最小调用方式,或者直接把
|
||
launcher 页面改成从 `ui-shell.js` 导出更稳定的可见入口列表;仍保持只读,不新增控制按钮,
|
||
不解析 G-code。
|
||
|
||
十九、2026-06-14 继续执行记录:INI panel entry doc
|
||
|
||
本轮按“加快实质性推进”新增极短的入口文档,只保留 `ui-shell.js`、launcher、
|
||
control-page 的关系和最小调用方式,并把文档内容纳入 Node smoke。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/docs/panel-entry.md`;
|
||
- 文档只保留:
|
||
- `ui-shell.js` 的 shell-facing import;
|
||
- `launch.html`、`index.html`、`control-page.html` 的最小关系表;
|
||
- entry manifest 表;
|
||
- boundary 说明;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh`;
|
||
- `wasm-port/tests/ui/node/verify_ui_node_smokes.sh` 纳入 entry docs node smoke;
|
||
- `wasm-port/docs/ui-panel-state-summary.md` 补充入口文档指向;
|
||
- 未新增控制按钮;
|
||
- 未解析 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_entry_docs.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续压缩表述面。下一批建议让 `ui-shell.js` 直接成为 launcher 页面和 docs 的唯一入口
|
||
来源,或者再补一个更短的 `ui-shell.md` 汇总 shell、launcher、control-page 三者关系;仍保持
|
||
只读,不新增控制按钮,不解析 G-code。
|
||
|
||
二十、2026-06-14 继续执行记录:INI panel entry docs strict gate
|
||
|
||
本轮按“加快实质性推进”加强 `panel-entry.md` 的一致性 gate,从字符串存在检查升级为完整
|
||
shell export、页面路径和 manifest 表校验,减少入口文档漂移风险。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/docs/panel-entry.md` 的 shell import 示例补齐:
|
||
- `INI_PANEL_ENTRIES`;
|
||
- `getIniPanelEntryByHref`;
|
||
- `getIniPanelEntryManifest`;
|
||
- `createMachineSessionControlPageController`;
|
||
- `renderMachineSessionControlView`;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs` 现在校验:
|
||
- `ui-shell.js` 实际导出名;
|
||
- 文档中的 shell import 名;
|
||
- `launch.html`、`index.html`、`control-page.html` 页面路径;
|
||
- `getIniPanelEntryManifest()` 与 `INI_PANEL_ENTRIES` 一致;
|
||
- 文档 manifest 表中每个 entry 的 id、href、title;
|
||
- 未新增控制按钮;
|
||
- 未解析 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_entry_docs.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进实质 UI/API surface。下一批建议把 `ui-shell.js` 中用于 launcher 的入口列表再封装成
|
||
`getVisibleIniPanelEntries()`,让页面不需要知道 manifest 复制语义;仍保持只读,不新增控制
|
||
按钮,不解析 G-code。
|
||
|
||
二十一、2026-06-14 继续执行记录:INI panel visible entries helper
|
||
|
||
本轮按“加快实质性推进”在 `ui-shell.js` 增加 launcher-facing 的可见入口 helper,让页面和
|
||
文档使用 `getVisibleIniPanelEntries()`,不再直接依赖 manifest 复制语义。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/ui-shell.js` 新增 `getVisibleIniPanelEntries()`;
|
||
- `getVisibleIniPanelEntries()` 返回 launcher 可见入口列表;
|
||
- `wasm-port/runtime/ui/ini-panel/launch.html` 改为调用 `getVisibleIniPanelEntries()`;
|
||
- `wasm-port/tests/browser/ini_panel_launch_smoke.html` 改为验证 visible entries;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs` 覆盖 visible entries 与复制语义;
|
||
- `wasm-port/docs/panel-entry.md` 改为以 `getVisibleIniPanelEntries()` 作为入口列表 API;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs` 同步验证文档和 visible entries;
|
||
- 未新增控制按钮;
|
||
- 未解析 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_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
|
||
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_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
|
||
host_wasm_opfs_browser_smokes=ok
|
||
```
|
||
|
||
下一步建议:
|
||
|
||
继续推进 UI/API surface,但避免纯文档循环。下一批建议把 `getVisibleIniPanelEntries()` 用到
|
||
更多外层 shell 消费示例,或新增一个小型 Node helper 生成 launcher link view-model;仍保持
|
||
只读,不新增控制按钮,不解析 G-code。
|
||
|
||
二十二、2026-06-15 继续执行记录:INI panel launcher link view-model helper
|
||
|
||
本轮按“加快实质性推进”继续推进 UI/API surface,在 shell 层新增 launcher link
|
||
view-model helper,让 launcher 页面不直接读取 manifest 字段名。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/ui-shell.js` 新增
|
||
`createIniPanelLauncherLinkViewModel()`;
|
||
- launcher link view-model 输出 `entryId`、`href`、`label`,作为外层 shell 可直接渲染的
|
||
链接模型;
|
||
- `wasm-port/runtime/ui/ini-panel/launch.html` 改为调用
|
||
`createIniPanelLauncherLinkViewModel()` 渲染链接;
|
||
- `wasm-port/tests/browser/ini_panel_launch_smoke.html` 覆盖 launcher link view-model;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs` 覆盖 view-model 内容与复制语义;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs` 同步校验文档和 shell helper;
|
||
- `wasm-port/docs/panel-entry.md` 记录 launcher link view-model 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_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.sh
|
||
wasm-port/tests/browser/verify_ini_panel_browser.sh
|
||
wasm-port/tests/ui/node/verify_ui_node_smokes.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_ini_panel_browser.sh
|
||
wasm-port/tests/host/verify_host_smokes.sh
|
||
```
|
||
|
||
关键输出:
|
||
|
||
```text
|
||
ini_panel_ui_shell_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
ui_node_smokes=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/API surface 的可复用边界。下一批建议新增一个
|
||
`createIniPanelShellViewModel()`,把 launcher links、可用页面和 control-page helper 暴露为
|
||
单一 shell model,供外层应用一次性挂载;仍保持只读,不新增控制按钮,不解析 G-code。
|
||
|
||
二十三、2026-06-15 继续执行记录:INI panel shell view-model helper
|
||
|
||
本轮按“第一原则:加快实质性推进”继续推进 UI/API surface,新增单一 shell view-model,
|
||
让外层应用可以一次性读取 launcher links、页面列表和 control-page 挂载 helper。
|
||
|
||
完成内容:
|
||
|
||
- `wasm-port/runtime/ui/ini-panel/ui-shell.js` 新增 `createIniPanelShellViewModel()`;
|
||
- shell view-model 返回:
|
||
- `pages`:只读页面列表;
|
||
- `launcherLinks`:可直接渲染的 launcher link view-model;
|
||
- `controlPage.createController`:现有 read-only control-page controller;
|
||
- `controlPage.renderView`:现有 read-only control-view renderer;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_ui_shell.mjs` 覆盖 shell view-model 结构、
|
||
helper 引用和复制语义;
|
||
- `wasm-port/tests/ui/node/verify_ini_panel_entry_docs.mjs` 同步校验文档和 shell helper;
|
||
- `wasm-port/docs/panel-entry.md` 记录 `createIniPanelShellViewModel()`;
|
||
- 未新增控制按钮;
|
||
- 未解析 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_ui_shell.sh
|
||
wasm-port/tests/ui/node/verify_ini_panel_entry_docs.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/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_ui_shell_node_smoke=ok
|
||
ini_panel_entry_docs_node_smoke=ok
|
||
browser_ini_opfs_smoke=ok
|
||
browser_ini_control_page_smoke=ok
|
||
browser_ini_launch_smoke=ok
|
||
ui_node_smokes=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 或 browser/UI workflow 的实质链路。下一批建议在
|
||
`app.js` 外抽出一个 control-page snapshot refresh workflow helper,让 read-only 页面能复用
|
||
明确的 refresh 状态模型;仍保持只读,不新增控制按钮,不解析 G-code。
|
||
|
||
二十四、2026-06-15 继续执行记录:INI panel control-page refresh workflow helper
|
||
|
||
本轮按“第一原则:加快实质性推进”推进 browser/UI workflow,在 `app.js` 外新增
|
||
read-only control-page refresh workflow helper,让外层页面可复用明确的 refresh 状态模型。
|
||
|
||
完成内容:
|
||
|
||
- 新增 `wasm-port/runtime/ui/ini-panel/control-page-refresh-workflow.js`;
|
||
- 新增 `controlPageStatusText(status)`,格式化已观察到的 control view status 字段;
|
||
- 新增 `createControlPageRefreshState(input)`,固定 refresh 状态结构;
|
||
- 新增 `refreshMachineSessionControlPage(input)`,统一处理:
|
||
- `waiting`:panel API 尚不可用;
|
||
- `rendered`:读取 control view 并调用 renderer;
|
||
- `error`:control view getter 或 renderer 抛错;
|
||
- `createMachineSessionControlPageController()` 改为通过 refresh workflow 执行 render;
|
||
- control-page controller 新增 `refresh()`,保留原 `render()` 返回值兼容;
|
||
- `control-page.js` 对浏览器页面暴露 `refreshControlPage`;
|
||
- `ui-shell.js` re-export refresh workflow helper,并在 `createIniPanelShellViewModel()` 中暴露
|
||
`controlPage.refresh`;
|
||
- 新增 `wasm-port/tests/ui/node/verify_ini_panel_control_page_refresh_workflow.mjs` 和 `.sh`;
|
||
- `verify_ui_node_smokes.sh` 纳入 refresh workflow smoke;
|
||
- browser control-page smoke 验证 `refreshControlPage().phase === "rendered"`;
|
||
- `panel-entry.md` 和 entry docs gate 同步记录 refresh 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_refresh_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_refresh_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 的实质链路。下一批建议抽出
|
||
`loadMachineSessionForControlPageWorkflow()` 或等价 helper,让 read-only control page 能以明确
|
||
状态模型描述 embedded panel API readiness 和首帧 session state;仍保持只读,不新增控制按钮,
|
||
不解析 G-code。
|