接入 LinuxCNC TP 运行反馈
This commit is contained in:
@@ -24,22 +24,26 @@ CNC 语义必须来自 LinuxCNC source/WASM/source-derived boundary;
|
||||
| 右侧模式按钮栏 | `app/src/ui/gmoccapy-status-sidebar.ts` | gmoccapy screenshot | UI action dispatch | browser button/action smoke |
|
||||
| 底部运行控制 | `app/src/ui/gmoccapy-bottom-controls.ts` | gmoccapy/AXIS run controls | UI action dispatch | playback smoke |
|
||||
| G-code 当前行 | `app/src/ui/gmoccapy-gcode-panel.ts` | AXIS/gmoccapy program display | LinuxCNC output rendering | active-line smoke |
|
||||
| 上电/急停/复位/模式操作 | `app/src/state/store.js`, `app/src/ui/gmoccapy-shell.js` | gmoccapy/AXIS operator workflow | browser UI runtime fixture | node smoke + browser operator smoke |
|
||||
| JOG/MDI 操作 | `app/src/state/store.js`, `app/src/ui/gmoccapy-shell.js` | AXIS Manual/MDI workflow | browser UI runtime fixture | node smoke + browser operator smoke |
|
||||
| G-code 文件加载 | `app/src/ui/gmoccapy-shell.js`, `app/src/state/store.js` | AXIS/gmoccapy open program workflow | file text staging only, not LinuxCNC interpreter proof | node smoke + browser operator smoke |
|
||||
| 程序执行当前行显示 | `app/src/state/store.js`, `app/src/ui/gmoccapy-shell.js` | AXIS/gmoccapy current line display | fixture line playback until LinuxCNC interpreter is connected | node smoke + browser operator smoke |
|
||||
| 上电/急停/复位/模式操作 | `app/src/state/store.js`, `app/src/state/linuxcnc-task-policy.js`, `app/src/ui/gmoccapy-shell.js` | `src/emc/nml_intf/emc.hh`, `src/emc/task/emctaskmain.cc`, `src/emc/task/emctask.cc` | LinuxCNC task source-referenced Web policy | node smoke + browser operator smoke |
|
||||
| JOG/MDI 操作 | `app/src/state/store.js`, `app/src/state/linuxcnc-task-policy.js`, `app/src/ui/gmoccapy-shell.js` | `src/emc/task/emctaskmain.cc` `EMC_JOG_INCR`, `EMC_JOINT_HOME`, `EMC_TASK_PLAN_EXECUTE` | LinuxCNC task source-referenced Web policy | node smoke + browser operator smoke |
|
||||
| 程序运行/暂停/继续/停止 | `app/src/state/store.js`, `app/src/state/linuxcnc-task-policy.js`, `app/src/ui/gmoccapy-shell.js` | `src/emc/task/emctaskmain.cc` `EMC_TASK_PLAN_RUN`, `EMC_TASK_PLAN_PAUSE`, `EMC_TASK_PLAN_RESUME`, `EMC_TASK_ABORT` | LinuxCNC task source-referenced Web policy | node smoke + browser operator smoke |
|
||||
| G-code 文件加载 | `app/src/ui/gmoccapy-shell.js`, `app/src/state/store.js` | AXIS/gmoccapy open program workflow | browser file staging + LinuxCNC interpreter execution | node smoke + browser operator smoke |
|
||||
| LinuxCNC 5 轴源程序选择 | `app/src/runtime/linuxcnc-machine-file-staging.js`, `app/src/state/store.js`, `app/src/ui/gmoccapy-shell.js` | `configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc` | guarded vendored LinuxCNC source-directory G-code staging + selected machine-file run | machine-file staging node smoke + browser source selector smoke |
|
||||
| 程序执行当前行显示 | `app/src/state/store.js`, `app/src/ui/gmoccapy-shell.js` | AXIS/gmoccapy current line display | LinuxCNC interpreter canonical motion events with fixture fallback | node smoke + browser operator smoke |
|
||||
| 程序执行速度/时间 | `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_tp_wasm.c`, `wasm-port/runtime/sdk/src/linuxcnc-tp.js`, `app/src/runtime/linuxcnc-interpreter-runtime.js`, `app/src/state/store.js`, `app/src/ui/gmoccapy-shell.js` | LinuxCNC interpreter canonical motion events queued through `src/emc/tp/tp.c`, `tc.c`, `tcq.c`, S-curve/Ruckig support sources | LinuxCNC TP queue runtime timing from canonical motion; JS estimate kept only as fallback/MDI lightweight path | TP WASM smoke + interpreter/store node smoke + browser source/dist TP timing smoke |
|
||||
| 刀具预览 | `app/src/ui/gmoccapy-shell.js`, `app/src/visualization/five-axis-scene.js` | gmoccapy/vismach tool display | visualization/runtime state display | browser operator smoke |
|
||||
| 3D 五轴预览 | `app/src/visualization/five-axis-scene.js` | `qtvismach_5axis_gantry.png`, `lib/python/vismach.py` | visualization | canvas nonblank smoke |
|
||||
| Vismach transform tree | `app/src/visualization/machine-model.ts` | `lib/python/vismach.py`, `src/hal/user_comps/vismach/*.py` | visualization from GUI reference | scene graph smoke |
|
||||
| `xyzac-trt` profile | `app/src/profiles/xyzac-trt.js` | `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini` | source/config reference | profile boundary node smoke |
|
||||
| `xyzac-trt` source reference map | `app/src/profiles/source-reference-map.js` | `xyzac-trt.ini`, `xyzac-trt.xml`, `switchkins_postgui.hal`, `xyzac-trt_cmds.hal`, `xyzac-trt-kins.c`, `trtfuncs.c`, `switchkins.c` | profile/source map only, not runtime proof | profile boundary node smoke |
|
||||
| `xyzbc-trt` profile | `app/src/profiles/xyzbc-trt.ts` | `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini` | source/config reference | profile node smoke |
|
||||
| `xyzbc-trt` profile | `app/src/profiles/xyzbc-trt.js` | `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini` | source/config reference + runtime module switch | profile node smoke + browser profile switch smoke |
|
||||
| SWITCHKINS panel | `app/src/panel-schema/xyzac-trt-pyvcp.js` | `xyzac-trt.xml`, `switchkins_postgui.hal` | UI/HAL binding reference | profile boundary node smoke + browser DOM smoke |
|
||||
| M428/M429/M430 state | `app/src/profiles/xyzac-trt.js`, `app/src/panel-schema/xyzac-trt-pyvcp.js` | `remap_subs/428remap.ngc`, `429remap.ngc`, `430remap.ngc` | LinuxCNC remap/source reference only until runtime adapter is connected | profile boundary node smoke |
|
||||
| LinuxCNC boundary adapter | `app/src/runtime/linuxcnc-boundary-adapter.js` | LinuxCNC interpreter/kinematics WASM future adapter point | adapter entrypoint only, runtime not connected | profile boundary node smoke + browser DOM smoke |
|
||||
| LinuxCNC boundary adapter | `app/src/runtime/linuxcnc-boundary-adapter.js` | LinuxCNC interpreter/kinematics/TP WASM adapter point | kinematics + interpreter + TP timing runtime connected; native task/realtime HAL still not ported | profile boundary node smoke + browser DOM smoke |
|
||||
| Full execution boundary audit | `app/src/runtime/full-execution-boundary.js`, `app/src/state/store.js`, `app/src/ui/gmoccapy-shell.js` | LinuxCNC kinematics WASM, interpreter WASM, TP WASM, `runSimConfigProgram({ executionMode: "fiveAxisRemap" })`, TRT remap files | machine-file remap and TP timing ready; native task/realtime HAL blocked | full execution boundary node smoke + browser DOM smoke |
|
||||
| Five-axis kinematics | `core/linuxcnc_kinematics_wasm` | `trtfuncs.c`, `xyzac-trt-kins.c`, `xyzbc-trt-kins.c`, `5axiskins.c` | LinuxCNC source-derived WASM | Node roundtrip smoke |
|
||||
| RTCP/TCP frame | `app/src/runtime/rtcp-frame.js` | LinuxCNC kinematics output + canonical events | fixture frame plumbing until kinematics WASM is ready | RTCP/store node smoke + browser DOM smoke |
|
||||
| OPFS session | `app/src/runtime/session-*` | current `wasm-port/runtime/opfs` | host-side persistence | save/restore smoke |
|
||||
| OPFS session | `app/src/runtime/five-axis-session.js` | current `wasm-port/runtime/opfs` | browser OPFS 5-axis session persistence | five_axis_session_smoke + browser save/restore smoke |
|
||||
|
||||
## 3. 源文件追溯清单
|
||||
|
||||
@@ -118,11 +122,12 @@ src/emc/kinematics/kins_util.c
|
||||
| --- | --- | --- |
|
||||
| gmoccapy UI style | ready | 可直接 Web 化 |
|
||||
| Three.js preview | implemented_basic_canvas_scene | 已显示基础五轴机床、刀具/TCP marker、刀轴、刀路,并消费 `rtcpFrame` |
|
||||
| LinuxCNC interpreter WASM | existing_project_capability | 可参考 `wasm-port` 现有 SDK |
|
||||
| LinuxCNC 5-axis kinematics WASM | node_proof_ready | `createLinuxCncKinematicsSdk({ moduleId: "xyzac-trt" })` 已由 web adapter 加载,Node smoke 验证 forward/inverse frame |
|
||||
| RTCP frame UI plumbing | implemented_fixture_and_kinematics_wasm | fixture fallback 仍为 `linuxCncKinematicsReady=false`;Node kinematics proof 为 `source-derived-kinematics-wasm` / `linuxcnc_kinematics_wasm_c_abi` |
|
||||
| Operator workflow | implemented_fixture_only | 上电/急停/复位/模式/JOG/MDI/G-code 加载/当前行显示已闭环;执行仍是 fixture line playback |
|
||||
| LinuxCNC boundary adapter | kinematics_runtime_connected_node | `web-rtcp-5axis-linuxcnc-boundary-adapter` 可区分 kinematics-only ready 与 interpreter/remap missing |
|
||||
| LinuxCNC interpreter WASM | browser_and_node_canonical_execution_ready | `createLinuxCncInterpSdk()` 已接入普通 G-code canonical motion execution;remap/planner 未 promoted |
|
||||
| LinuxCNC 5-axis kinematics WASM | browser_and_node_proof_ready | `createLinuxCncKinematicsSdk({ moduleId: "xyzac-trt" })` 已由 web adapter 加载,Node/source-browser/dist-browser smoke 验证 forward/inverse frame |
|
||||
| RTCP frame UI plumbing | implemented_fixture_and_kinematics_wasm | fixture fallback 仍为 `linuxCncKinematicsReady=false`;browser/node kinematics proof 为 `source-derived-kinematics-wasm` / `linuxcnc_kinematics_wasm_c_abi` |
|
||||
| Operator workflow | implemented_linuxcnc_task_policy_with_canonical_motion | 上电/急停/复位/模式/JOG/MDI/RUN/PAUSE/RESUME/STOP/HOME 通过 `linuxcnc_task_state_mode_command_gate`;普通程序执行来自 LinuxCNC canonical motion |
|
||||
| LinuxCNC boundary adapter | kinematics_and_interpreter_connected | `web-rtcp-5axis-linuxcnc-boundary-adapter` 可区分 kinematics-only ready 与 interpreter/remap missing |
|
||||
| Full execution boundary audit | implemented_remap_ready_planner_task_hal_blocked | `web-rtcp-5axis-full-linuxcnc-execution-boundary` 汇总 kinematics/interpreter/machine-file-remap evidence;仍明确 `plannerRuntimeReady=false`、`nativeTaskReady=false`、`nativeHalSyncReady=false`、`fullLinuxCncProgramExecutionReady=false` |
|
||||
| PyVCP/HAL panel schema | implemented_reference_only | `xyzac-trt-switchkins-pyvcp` 已整理 SWITCHKINS 控件与 HAL nets;不执行 native HAL |
|
||||
| Python GUI runtime | not_ported | 只参考,不运行 |
|
||||
| Python remap runtime | blocked | 不在第一版实现 |
|
||||
@@ -465,3 +470,548 @@ Remaining risk:
|
||||
Next:
|
||||
browser_kinematics_wasm_asset_worker_or_interpreter_execution_source
|
||||
```
|
||||
|
||||
## 13. M7 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M7-browser-kinematics-runtime
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/package.json
|
||||
app/scripts/build-static.mjs
|
||||
app/src/main.js
|
||||
app/src/runtime/linuxcnc-kinematics-runtime.js
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
tests/browser/verify_gmoccapy_dist_browser.sh
|
||||
docs/development-continuation.md
|
||||
docs/program-implementation-guide.md
|
||||
docs/technical-roadmap.md
|
||||
docs/traceability-matrix.md
|
||||
Feature:
|
||||
将浏览器主流程接入 xyzac-trt LinuxCNC kinematics WASM。
|
||||
runtime loader 移除顶层 node:* 依赖,支持 browser ESM import;
|
||||
app/src/main.js 启动后自动 attach kinematics runtime;
|
||||
build-static 复制 linuxcnc-kinematics.js 与 kinematics .js/.wasm 产物到 dist;
|
||||
browser smoke 同时覆盖源码入口和 dist 入口。
|
||||
LinuxCNC references:
|
||||
wasm-port/runtime/sdk/src/linuxcnc-kinematics.js
|
||||
wasm-port/build/wasm/kinematics/linuxcnc_xyzac_trt_kinematics.js
|
||||
wasm-port/build/wasm/kinematics/linuxcnc_xyzac_trt_kinematics.wasm
|
||||
src/emc/kinematics/xyzac-trt-kins.c
|
||||
Boundary:
|
||||
sourceMode=source-derived-kinematics-wasm
|
||||
semanticBoundary=linuxcnc_kinematics_wasm_c_abi
|
||||
browserKinematicsReady=true
|
||||
nodeKinematicsReady=true
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
fixtureFallback=available_only_on_runtime_load_failure
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
gmoccapy_static_build=ok
|
||||
linuxcnc_kinematics_runtime_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
profile_boundary_smoke=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
Superseded by M8/M9: browser kinematics now runs through Worker and ordinary
|
||||
G-code RUN/STEP uses LinuxCNC interpreter canonical events. Remap/planner
|
||||
execution remains not promoted.
|
||||
Next:
|
||||
linuxcnc_interpreter_remap_planner_execution_source_or_worker_isolation
|
||||
```
|
||||
|
||||
## 14. M8-M9 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M8-kinematics-worker-runtime
|
||||
Batch: M9-interpreter-canonical-program-execution
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/package.json
|
||||
app/scripts/build-static.mjs
|
||||
app/src/main.js
|
||||
app/src/runtime/linuxcnc-interpreter-runtime.js
|
||||
app/src/runtime/linuxcnc-kinematics-runtime.js
|
||||
app/src/runtime/linuxcnc-kinematics-worker.js
|
||||
app/src/runtime/linuxcnc-kinematics-worker-client.js
|
||||
app/src/runtime/linuxcnc-boundary-adapter.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/node/verify_linuxcnc_interpreter_runtime.mjs
|
||||
tests/node/verify_linuxcnc_kinematics_runtime.mjs
|
||||
tests/node/verify_rtcp_store.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
浏览器默认通过 Web Worker 加载 xyzac-trt LinuxCNC kinematics WASM;
|
||||
普通 G-code 程序通过 LinuxCNC interpreter WASM 执行并输出 canonical
|
||||
motion events;RUN/STEP 使用 canonical motion line/pose 更新 G-code
|
||||
highlight、DRO、RTCP frame 和 Three.js preview。
|
||||
LinuxCNC references:
|
||||
wasm-port/runtime/sdk/src/linuxcnc-kinematics.js
|
||||
wasm-port/runtime/sdk/src/linuxcnc-interp.js
|
||||
wasm-port/build/wasm/kinematics/linuxcnc_xyzac_trt_kinematics.wasm
|
||||
wasm-port/build/wasm/core/linuxcnc_interp.wasm
|
||||
Boundary:
|
||||
kinematics sourceMode=source-derived-kinematics-wasm
|
||||
kinematics executionContext=worker in browser
|
||||
interpreter sourceMode=linuxcnc-interpreter-wasm
|
||||
interpreter semanticBoundary=linuxcnc_interpreter_wasm_canonical_events
|
||||
remapRuntimeReady=false
|
||||
plannerRuntimeReady=false
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
gmoccapy_static_build=ok
|
||||
linuxcnc_kinematics_runtime_smoke=ok
|
||||
linuxcnc_interpreter_runtime_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
profile_boundary_smoke=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
Interpreter runtime currently runs on the main browser thread; remap/planner,
|
||||
OPFS machine-session staging, Python remap, tool DB, and external user-M process
|
||||
remain not promoted.
|
||||
Next:
|
||||
remap_planner_worker_interpreter_or_opfs_machine_session_integration
|
||||
```
|
||||
|
||||
## 15. M10-M11 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M10-profile-switching
|
||||
Batch: M11-profile-session-business-closure
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/src/profiles/index.js
|
||||
app/src/profiles/xyzbc-trt.js
|
||||
app/src/profiles/source-reference-map.js
|
||||
app/src/runtime/five-axis-session.js
|
||||
app/src/runtime/rtcp-frame.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
app/src/styles/gmoccapy.css
|
||||
tests/node/verify_five_axis_session.mjs
|
||||
tests/node/verify_profile_boundary.mjs
|
||||
tests/node/verify_rtcp_store.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
增加 xyzbc-trt profile、source reference map、PyVCP SWITCHKINS schema
|
||||
变体和 UI profile selector;profile 切换后重载对应 LinuxCNC kinematics WASM。
|
||||
增加 web-rtcp-5axis OPFS session snapshot,可保存/恢复 profile、program、
|
||||
axis/TCP pose、RTCP state、canonical execution summary、runtime readiness 和 preview state。
|
||||
LinuxCNC references:
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
|
||||
src/emc/kinematics/xyzbc-trt-kins.c
|
||||
wasm-port/runtime/opfs snapshot/file-service pattern
|
||||
Boundary:
|
||||
profile switching=source/config reference plus source-derived kinematics runtime reload
|
||||
session persistence=browser OPFS UI/runtime state snapshot
|
||||
machine-file staging=false
|
||||
remapRuntimeReady=false
|
||||
plannerRuntimeReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
gmoccapy_static_build=ok
|
||||
linuxcnc_kinematics_runtime_smoke=ok
|
||||
linuxcnc_interpreter_runtime_smoke=ok
|
||||
five_axis_session_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
profile_boundary_smoke=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
Session snapshot persists Web simulation state, not full LinuxCNC machine-file
|
||||
staging. Interpreter still runs on the main browser thread. Remap/planner,
|
||||
Python remap, tool DB, and external user-M process remain not promoted.
|
||||
Next:
|
||||
interpreter_worker_or_opfs_machine_file_staging_or_remap_planner_boundary
|
||||
```
|
||||
|
||||
## 17. M18 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M18-linuxcnc-task-policy-controls
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/src/state/linuxcnc-task-policy.js
|
||||
app/src/runtime/execution-timing.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/node/verify_rtcp_store.mjs
|
||||
tests/node/verify_five_axis_session.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
Adds a source-referenced LinuxCNC task policy gate for operator controls:
|
||||
TOGGLE_POWER, RESET, ESTOP, SET_MODE, JOG, RUN_MDI, RUN, STEP, HOME,
|
||||
PAUSE, RESUME, STOP, and ABORT. The gmoccapy diagnostics panel now exposes
|
||||
task state/mode/interpreter state, gate readiness, and the source file list
|
||||
including `linuxcnc/src/emc/task/emctaskmain.cc`.
|
||||
Adds LinuxCNC TP queue timing from interpreter canonical motion events.
|
||||
UI now reports total/elapsed/remaining time and current segment
|
||||
duration/velocity from the TP WASM runtime when available.
|
||||
LinuxCNC references:
|
||||
src/emc/nml_intf/emc.hh
|
||||
src/emc/task/emctaskmain.cc
|
||||
src/emc/task/emctask.cc
|
||||
Boundary:
|
||||
taskPolicyBoundary=linuxcnc_task_state_mode_command_gate
|
||||
timingBoundary=linuxcnc_tp_queue_runtime_timing_from_canonical_motion
|
||||
sourceMode=linuxcnc-task-source-referenced-policy
|
||||
nativeTaskReady=false
|
||||
nativeHalSyncReady=false
|
||||
plannerRuntimeReady=true
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
rtcp_store_smoke=ok
|
||||
five_axis_session_smoke=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
The control gates are aligned to LinuxCNC task source behavior, but this is
|
||||
still a Web policy mirror. The project does not run the native LinuxCNC task
|
||||
process, NML IPC loop, or realtime HAL synchronization. TP timing is computed
|
||||
by the vendored LinuxCNC TP queue runtime from canonical motion events; it is
|
||||
still not hardware drive timing and does not make native task/HAL ready.
|
||||
Next:
|
||||
decide_release_handoff_or_start_native_task_hal_planner_boundary
|
||||
```
|
||||
|
||||
## 17. M13 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M13-interpreter-worker-runtime
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/src/main.js
|
||||
app/src/runtime/linuxcnc-interpreter-worker.js
|
||||
app/src/runtime/linuxcnc-interpreter-worker-client.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
tests/node/verify_five_axis_session.mjs
|
||||
tests/node/verify_rtcp_store.mjs
|
||||
Feature:
|
||||
Browser LinuxCNC interpreter WASM now loads through a Web Worker by default,
|
||||
matching the existing kinematics Worker isolation. Program execution in store
|
||||
accepts async interpreter runtimes, exposes interpreterExecutionPending, and
|
||||
uses a sequence guard so stale Worker results cannot overwrite newer program
|
||||
loads.
|
||||
LinuxCNC references:
|
||||
wasm-port/runtime/sdk/src/linuxcnc-interp.js
|
||||
wasm-port/build/wasm/core/linuxcnc_interp.js
|
||||
wasm-port/build/wasm/core/linuxcnc_interp.wasm
|
||||
Boundary:
|
||||
browserInterpreterExecutionContext=worker
|
||||
nodeInterpreterExecutionContext=direct
|
||||
interpreter semanticBoundary=linuxcnc_interpreter_wasm_canonical_events
|
||||
remapRuntimeReady=false
|
||||
plannerRuntimeReady=false
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
linuxcnc_kinematics_runtime_smoke=ok
|
||||
linuxcnc_interpreter_runtime_smoke=ok
|
||||
five_axis_session_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
profile_boundary_smoke=ok
|
||||
gmoccapy_static_build=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
Interpreter isolation is complete for browser canonical execution, but this
|
||||
still does not promote native LinuxCNC remap/planner, tool DB, task/HAL sync,
|
||||
or external user-M process.
|
||||
Next:
|
||||
opfs_machine_file_staging_or_remap_planner_boundary
|
||||
```
|
||||
|
||||
## 18. M14 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M14-opfs-machine-file-staging
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/package.json
|
||||
app/scripts/build-static.mjs
|
||||
app/src/main.js
|
||||
app/src/runtime/linuxcnc-machine-file-staging.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/node/verify_machine_file_staging.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
Adds LinuxCNC TRT machine-file staging for the web simulator. The runtime
|
||||
reuses `planSimConfigStaging()` to collect INI, tool table, HAL/PyVCP assets,
|
||||
remap NGC files, and demo G-code from the vendored LinuxCNC tree, then persists
|
||||
those text files into OPFS-style machine paths. Store exposes stageMachineFiles()
|
||||
and gmoccapy diagnostics render staging status.
|
||||
LinuxCNC references:
|
||||
wasm-port/runtime/sdk/src/sim-config-staging.js
|
||||
wasm-port/tools/source-manifest.txt
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/*.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc
|
||||
Boundary:
|
||||
machineFileStagingBoundary=linuxcnc_sim_config_file_staging_plan_plus_opfs_text_persistence
|
||||
stagedFiles=ini,hal,pyvcp,tool_table,remap_ngc,demo_gcode
|
||||
nativeHalTaskSync=false
|
||||
remapRuntimeReady=false
|
||||
plannerRuntimeReady=false
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
machine_file_staging_smoke=ok
|
||||
linuxcnc_kinematics_runtime_smoke=ok
|
||||
linuxcnc_interpreter_runtime_smoke=ok
|
||||
five_axis_session_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
profile_boundary_smoke=ok
|
||||
gmoccapy_static_build=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
Machine files are staged and persisted as browser/host text assets. This does
|
||||
not yet execute a machine-file backed LinuxCNC task session, native HAL sync,
|
||||
Python/NGC remap runtime, full planner, tool DB, or external user-M process.
|
||||
Next:
|
||||
remap_planner_boundary_or_machine_file_backed_run
|
||||
```
|
||||
|
||||
## 19. M15 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M15-machine-file-backed-fiveaxis-remap-run
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/src/runtime/linuxcnc-interpreter-runtime.js
|
||||
app/src/runtime/linuxcnc-interpreter-worker.js
|
||||
app/src/runtime/linuxcnc-interpreter-worker-client.js
|
||||
app/src/runtime/linuxcnc-machine-file-staging.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/node/verify_machine_file_staging.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
Adds machine-file backed five-axis remap execution. The simulator now stages
|
||||
TRT machine files, forwards the staged INI/tool table/remap/demo files into
|
||||
the LinuxCNC interpreter WASM filesystem, and calls
|
||||
`runSimConfigProgram({ executionMode: "fiveAxisRemap" })`. Node and browser
|
||||
smokes verify LinuxCNC reports INI open, remap readiness, and program exit.
|
||||
LinuxCNC references:
|
||||
wasm-port/runtime/sdk/src/linuxcnc-interp.js
|
||||
wasm-port/runtime/sdk/src/sim-config-staging.js
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc
|
||||
Boundary:
|
||||
machineFileBackedRunBoundary=linuxcnc_fiveaxis_remap_wasm_machine_file_execution
|
||||
sourceMode=linuxcnc-machine-file-remap-wasm
|
||||
remapRuntimeReady=vendored_linuxcnc_fiveaxis_remap_c_abi_for_staged_files
|
||||
nativeTaskHalSync=false
|
||||
plannerRuntimeReady=false
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
machine_file_staging_smoke=ok
|
||||
linuxcnc_interpreter_runtime_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
The run uses vendored LinuxCNC five-axis remap C ABI for staged files, but
|
||||
still does not promote full native task/HAL synchronization, trajectory
|
||||
planner runtime, tool DB process, or external user-M process.
|
||||
Next:
|
||||
planner_boundary_or_full_task_hal_gap_closure
|
||||
```
|
||||
|
||||
## 20. M16 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M16-planner-task-hal-boundary-audit
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/package.json
|
||||
app/src/runtime/full-execution-boundary.js
|
||||
app/src/runtime/linuxcnc-interpreter-runtime.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/node/verify_full_execution_boundary.mjs
|
||||
tests/node/verify_linuxcnc_interpreter_runtime.mjs
|
||||
tests/node/verify_machine_file_staging.mjs
|
||||
tests/node/verify_rtcp_store.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
Adds a full LinuxCNC execution boundary audit layer. The Web simulator now
|
||||
summarizes kinematics WASM, interpreter canonical motion, machine-file
|
||||
staging, five-axis remap C ABI run, and switchkins HAL evidence in one
|
||||
explicit diagnostics contract. It also adds an Audit control that can trigger
|
||||
staging plus machine-file backed remap execution from the gmoccapy shell.
|
||||
LinuxCNC references:
|
||||
wasm-port/runtime/sdk/src/linuxcnc-interp.js
|
||||
wasm-port/runtime/sdk/src/linuxcnc-hal.js
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc
|
||||
Boundary:
|
||||
fullExecutionBoundary=linuxcnc_machine_file_remap_ready_planner_task_hal_blocked
|
||||
remapRuntimeReady=true for staged fiveAxisRemap C ABI run
|
||||
halSwitchkinsEvidenceReady=true for fiveaxis_hal_switchkins evidence
|
||||
nativeTaskReady=false
|
||||
nativeHalSyncReady=false
|
||||
plannerRuntimeReady=false
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
promotionAllowed=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
full_execution_boundary_smoke=ok
|
||||
machine_file_staging_smoke=ok
|
||||
linuxcnc_interpreter_runtime_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
Full native LinuxCNC task/NML process, realtime HAL thread synchronization,
|
||||
trajectory planner queue runtime, external user-M process, and full tool DB
|
||||
process are still not ported or promoted.
|
||||
Next:
|
||||
optional_native_task_hal_planner_port_or_release_handoff
|
||||
```
|
||||
|
||||
## 21. M17 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M17-linuxcnc-5axis-gcode-source-ingest
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/src/runtime/linuxcnc-machine-file-staging.js
|
||||
app/src/runtime/linuxcnc-interpreter-runtime.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/node/verify_machine_file_staging.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
Adds real vendored LinuxCNC five-axis G-code source ingestion. TRT demo
|
||||
programs from `configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc`
|
||||
are staged, listed in the gmoccapy G-code panel, loadable into the program
|
||||
viewer, and used as the selected `wasmProgramPath` for machine-file backed
|
||||
fiveAxisRemap execution.
|
||||
LinuxCNC references:
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc
|
||||
Boundary:
|
||||
gcodeSourceBoundary=linuxcnc_vendored_5axis_gcode_source_file
|
||||
sourceMode=linuxcnc-vendored-5axis-gcode
|
||||
machineFileBackedRunProgram=selected_staged_linuxcnc_ngc_source
|
||||
sourceDirectoryGuard=configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/*.ngc only
|
||||
remapRuntimeReady=true for staged fiveAxisRemap C ABI run
|
||||
plannerRuntimeReady=false
|
||||
nativeTaskReady=false
|
||||
nativeHalSyncReady=false
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
machine_file_staging_smoke=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
The selected G-code source is real LinuxCNC vendored source and the machine-file
|
||||
run uses that selected file path, but full native task/NML, realtime HAL sync,
|
||||
and trajectory planner queue runtime are still not promoted.
|
||||
Next:
|
||||
trajectory_planner_wasm_boundary_or_native_task_hal_port
|
||||
```
|
||||
|
||||
## 16. M12 追溯记录
|
||||
|
||||
```text
|
||||
Batch: M12-switchkins-rtcp-program-execution
|
||||
Date: 2026-06-21 CST
|
||||
Files changed:
|
||||
app/src/runtime/linuxcnc-interpreter-runtime.js
|
||||
app/src/runtime/linuxcnc-kinematics-runtime.js
|
||||
app/src/runtime/linuxcnc-kinematics-worker.js
|
||||
app/src/runtime/linuxcnc-kinematics-worker-client.js
|
||||
app/src/state/store.js
|
||||
app/src/ui/gmoccapy-shell.js
|
||||
tests/node/verify_linuxcnc_interpreter_runtime.mjs
|
||||
tests/node/verify_rtcp_store.mjs
|
||||
tests/browser/gmoccapy_shell_smoke.html
|
||||
Feature:
|
||||
LinuxCNC TRT `M428/M429/M430` switchkins remap M-code is preserved as
|
||||
program-level runtime events. The interpreter runtime strips those high M-codes
|
||||
only from the WASM input program so LinuxCNC interpreter canonical motion can
|
||||
continue, then annotates canonical motion with active switchkins state.
|
||||
RUN/STEP/RUN_FRAME now applies program switchkins state to RTCP state and calls
|
||||
LinuxCNC kinematics WASM `lckins_switch()` through direct and Worker runtimes.
|
||||
LinuxCNC references:
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/428remap.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/429remap.ngc
|
||||
configs/sim/axis/vismach/5axis/table-rotary-tilting/remap_subs/430remap.ngc
|
||||
src/emc/kinematics/switchkins.c
|
||||
wasm-port/runtime/sdk/src/linuxcnc-kinematics.js
|
||||
Boundary:
|
||||
switchkinsProgramBoundary=linuxcnc_remap_mcode_preserved_and_web_runtime_applied
|
||||
interpreter sourceMode=linuxcnc-interpreter-wasm
|
||||
interpreter semanticBoundary=linuxcnc_interpreter_wasm_canonical_events
|
||||
kinematics semanticBoundary=linuxcnc_kinematics_wasm_c_abi
|
||||
remapRuntimeReady=false
|
||||
plannerRuntimeReady=false
|
||||
fullLinuxCncProgramExecutionReady=false
|
||||
Tests:
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke
|
||||
Result:
|
||||
linuxcnc_kinematics_runtime_smoke=ok
|
||||
linuxcnc_interpreter_runtime_smoke=ok
|
||||
five_axis_session_smoke=ok
|
||||
rtcp_store_smoke=ok
|
||||
profile_boundary_smoke=ok
|
||||
gmoccapy_static_build=ok
|
||||
gmoccapy_shell_smoke=ok
|
||||
gmoccapy_dist_smoke=ok
|
||||
Remaining risk:
|
||||
This preserves and applies switchkins remap M-codes in Web runtime, but does not
|
||||
execute LinuxCNC Python/NGC remap, native HAL/task synchronization, full planner,
|
||||
tool DB, or external user-M process.
|
||||
Next:
|
||||
interpreter_worker_or_opfs_machine_file_staging_or_remap_planner_boundary
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user