diff --git a/text11.txt b/text11.txt index 3a0b934..ff3701d 100644 --- a/text11.txt +++ b/text11.txt @@ -1143,3 +1143,63 @@ host_wasm_opfs_browser_smokes=ok 小型控制页入口或 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。 diff --git a/wasm-port/docs/ui-panel-state-summary.md b/wasm-port/docs/ui-panel-state-summary.md index 0698e04..e94332d 100644 --- a/wasm-port/docs/ui-panel-state-summary.md +++ b/wasm-port/docs/ui-panel-state-summary.md @@ -26,6 +26,9 @@ For direct rendering, use `window.linuxCncIniPanelApi.getMachineSessionControlVi The panel also exposes `window.linuxCncIniPanelApi.renderMachineSessionControlView(container)`, which renders the current view into a supplied DOM container. +For a ready-made read-only page, open +`runtime/ui/ini-panel/control-page.html`. It embeds the panel in a hidden iframe +and mirrors the same control view into the visible page. ## `createIniPanelStateSummary(input)` diff --git a/wasm-port/runtime/ui/ini-panel/control-page.html b/wasm-port/runtime/ui/ini-panel/control-page.html new file mode 100644 index 0000000..0cf9e3f --- /dev/null +++ b/wasm-port/runtime/ui/ini-panel/control-page.html @@ -0,0 +1,106 @@ + + +
+ + +running+ + + diff --git a/wasm-port/tests/browser/verify_ini_panel_browser.sh b/wasm-port/tests/browser/verify_ini_panel_browser.sh index 5bc985e..8de1b3e 100755 --- a/wasm-port/tests/browser/verify_ini_panel_browser.sh +++ b/wasm-port/tests/browser/verify_ini_panel_browser.sh @@ -61,7 +61,9 @@ fi PORT="$(cat "$PORT_FILE")" URL="http://127.0.0.1:$PORT/tests/browser/ini_panel_smoke.html" +CONTROL_URL="http://127.0.0.1:$PORT/tests/browser/ini_panel_control_page_smoke.html" OUT="$TMP_DIR/chromium.out" +CONTROL_OUT="$TMP_DIR/chromium-control.out" "$CHROMIUM" \ --headless=new \ @@ -79,3 +81,20 @@ if ! grep -Fq "browser_ini_opfs_smoke=ok" "$OUT"; then fi echo "browser_ini_opfs_smoke=ok" + +"$CHROMIUM" \ + --headless=new \ + --disable-gpu \ + --no-sandbox \ + --user-data-dir="$CHROME_PROFILE" \ + --virtual-time-budget=10000 \ + --dump-dom \ + "$CONTROL_URL" >"$CONTROL_OUT" 2>&1 + +if ! grep -Fq "browser_ini_control_page_smoke=ok" "$CONTROL_OUT"; then + echo "browser INI control page smoke failed" >&2 + sed -n '1,220p' "$CONTROL_OUT" >&2 + exit 1 +fi + +echo "browser_ini_control_page_smoke=ok"