From 77d32a3f175d0c76fac48e85b4db3adfb677a728 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Sun, 14 Jun 2026 23:16:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E8=BF=9B=20INI=20=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=20entry=20manifest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- text11.txt | 63 +++++++++++++++++++ wasm-port/docs/ui-panel-state-summary.md | 1 + .../runtime/ui/ini-panel/entry-manifest.js | 20 ++++++ wasm-port/runtime/ui/ini-panel/launch.html | 17 ++++- .../tests/browser/ini_panel_launch_smoke.html | 14 +++++ .../node/verify_ini_panel_entry_manifest.mjs | 34 ++++++++++ .../node/verify_ini_panel_entry_manifest.sh | 6 ++ .../tests/ui/node/verify_ui_node_smokes.sh | 1 + 8 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 wasm-port/runtime/ui/ini-panel/entry-manifest.js create mode 100644 wasm-port/tests/ui/node/verify_ini_panel_entry_manifest.mjs create mode 100755 wasm-port/tests/ui/node/verify_ini_panel_entry_manifest.sh diff --git a/text11.txt b/text11.txt index 5f7e89d..f0b81d0 100644 --- a/text11.txt +++ b/text11.txt @@ -1327,3 +1327,66 @@ 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。 diff --git a/wasm-port/docs/ui-panel-state-summary.md b/wasm-port/docs/ui-panel-state-summary.md index ce7fb87..65c415b 100644 --- a/wasm-port/docs/ui-panel-state-summary.md +++ b/wasm-port/docs/ui-panel-state-summary.md @@ -33,6 +33,7 @@ The page uses `createMachineSessionControlPageController(...)` from `runtime/ui/ini-panel/control-page-controller.js` so other read-only shells can reuse the same iframe/API polling contract. For a light navigation entry, open `runtime/ui/ini-panel/launch.html`. +Its entry list is defined in `runtime/ui/ini-panel/entry-manifest.js`. ## `createIniPanelStateSummary(input)` diff --git a/wasm-port/runtime/ui/ini-panel/entry-manifest.js b/wasm-port/runtime/ui/ini-panel/entry-manifest.js new file mode 100644 index 0000000..29813f8 --- /dev/null +++ b/wasm-port/runtime/ui/ini-panel/entry-manifest.js @@ -0,0 +1,20 @@ +export const INI_PANEL_ENTRIES = [ + { + id: "edit-run", + title: "Open edit and run panel", + href: "./index.html", + }, + { + id: "control-view", + title: "Open read-only control view", + href: "./control-page.html", + }, +]; + +export function getIniPanelEntryManifest() { + return INI_PANEL_ENTRIES.map((entry) => ({ ...entry })); +} + +export function getIniPanelEntryByHref(href) { + return INI_PANEL_ENTRIES.find((entry) => entry.href === href) ?? null; +} diff --git a/wasm-port/runtime/ui/ini-panel/launch.html b/wasm-port/runtime/ui/ini-panel/launch.html index 0304a7a..d665c03 100644 --- a/wasm-port/runtime/ui/ini-panel/launch.html +++ b/wasm-port/runtime/ui/ini-panel/launch.html @@ -67,10 +67,23 @@

LinuxCNC INI Panel

Choose the editable panel or the read-only control view.

+ diff --git a/wasm-port/tests/browser/ini_panel_launch_smoke.html b/wasm-port/tests/browser/ini_panel_launch_smoke.html index 5d7adc1..c3ea63c 100644 --- a/wasm-port/tests/browser/ini_panel_launch_smoke.html +++ b/wasm-port/tests/browser/ini_panel_launch_smoke.html @@ -7,6 +7,11 @@
running