Files
cnc_wams/text16.txt
wangdequan d6a623308b 新增真实G代码编辑区
结论:AXIS 风格浏览器仿真页面新增可编辑 G-code pane、Run Editor Text、get/setProgramText 和 runEditorProgramText,编辑后的真实 G-code 继续通过 LinuxCNC WASM 执行并纳入 browser gate。
2026-06-16 22:28:08 +08:00

346 lines
8.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# text16.txt - LinuxCNC WASM/browser port continuation
Created: 2026-06-16 CST
This file continues from `text15.txt`. Use it for the next execution batches.
## Current Repository State
- Branch: `master`
- Remote sync state at creation: `master...origin/master`
- Latest commit at creation:
```text
69ccf93 支持真实G代码程序执行
```
- Working tree at creation: clean
- Active project tracker still exists at `PROJECT_COMPLETION_TRACKER.md`
- Previous continuation file: `text15.txt`
## Current Priority
The first priority remains the real browser CNC simulation page:
```text
wasm-port/runtime/ui/simulation/index.html
```
Primary supporting docs:
```text
wasm-port/docs/real-browser-simulation-priority.md
wasm-port/docs/axis-style-simulation-implementation.md
PROJECT_COMPLETION_TRACKER.md
```
Do not switch back to dashboard-only metadata work unless it directly creates a
gate or unblocks the browser simulation page.
## Completed Since text15 Start
The browser simulation page now has:
- AXIS-style browser shell:
- titlebar;
- File / Machine / View / Help menubar;
- toolbar;
- Manual Control / MDI tabs;
- Preview / DRO tabs;
- G-code pane;
- machine-state pane;
- bottom status bar.
- LinuxCNC-backed WASM execution through `createLinuxCncInterpSdk()`.
- Built-in test program selector.
- Built-in program directory:
```text
wasm-port/runtime/ui/simulation/programs/
```
- Current built-in program modules:
- `square-linear.js`;
- `pocket-z.js`;
- `incremental-loop.js`;
- `arc-g2-g3.js`;
- `drill-g81.js`.
- Program inventory export:
```text
wasm-port/runtime/ui/simulation/programs/index.js
```
- Reset / Step Back / Play / Step Forward / Finish playback over LinuxCNC
canonical motion events.
- Active G-code line highlighting.
- Active and executed motion row highlighting.
- Live XYZ/ABC readout.
- Full toolpath and executed-path SVG rendering.
- Moving toolhead marker.
- Real operator-provided G-code execution:
- `linuxCncRealSimulationApi.runProgramText(programText, metadata)`;
- `linuxCncRealSimulationApi.loadProgramFile(file)`;
- toolbar `Open` file input for `.ngc/.nc/.tap/.gcode/.txt`.
- Editable AXIS-style G-code pane:
- loaded file/custom/built-in program text is visible in a textarea;
- editor text can be changed before execution;
- toolbar `Run Editor Text` executes the current editor contents;
- `getProgramText()`, `setProgramText()`, and `runEditorProgramText()` are
exposed on the browser API.
- Program source metadata:
- `program.source`;
- `program.sourceLabel`;
- `program.filename`;
- `document.body.dataset.simulationProgramSource`.
## Current Browser API
Available on the simulation page:
```js
window.linuxCncRealSimulationApi
```
Current methods:
- `getState()`
- `getPrograms()`
- `runProgramById(programId)`
- `runProgramText(programText, metadata)`
- `loadProgramFile(file)`
- `getProgramText()`
- `setProgramText(text, metadata)`
- `runEditorProgramText()`
- `getPlaybackFrame()`
- `resetPlayback()`
- `stepPlayback(delta)`
- `play()`
- `pause()`
- `finishPlayback()`
All G-code execution must continue to go through LinuxCNC-backed WASM. Browser
JS must not interpret G-code or implement planner/machine semantics.
## Validation Baseline
The latest full validation completed successfully:
```text
real_simulation_programs_node_smoke=ok
ui_node_smokes=ok
browser_real_simulation_page_smoke=ok
axis_style_simulation_docs_node_smoke=ok
real_browser_simulation_priority_docs_node_smoke=ok
project_release_gate=ok
```
Useful focused commands:
```bash
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
wasm-port/tests/docs/node/verify_axis_style_simulation_docs.sh
wasm-port/tests/docs/node/verify_real_browser_simulation_priority_docs.sh
```
Full gate:
```bash
wasm-port/tests/host/verify_project_release_gate.sh
```
## Semantic Boundary
LinuxCNC remains the only CNC semantic source.
Browser code may:
- render UI layout and interaction state;
- read user-selected G-code files/text;
- call the SDK/WASM boundary;
- render LinuxCNC-produced canonical output;
- animate playback over LinuxCNC-produced canonical motion events;
- stage future OPFS/session files when that integration is added.
Browser code must not implement:
- G-code interpretation;
- modal semantics;
- tool/cutter compensation semantics;
- parameter semantics;
- kinematics;
- remap behavior;
- planner behavior;
- machine-control behavior not backed by LinuxCNC/WASM or validated session APIs.
## Next Recommended Batches
### 1. Real G-code Editor Pane
Status: complete.
Implemented:
- show loaded file/custom text in an editor area;
- allow editing before run;
- add `Run Editor Text`;
- preserve line numbers and active-line highlighting;
- expose `linuxCncRealSimulationApi.getProgramText()`;
- expose `linuxCncRealSimulationApi.setProgramText(text, metadata)`.
- expose `linuxCncRealSimulationApi.runEditorProgramText()`.
Validation:
- browser smoke sets editor text, runs it, and verifies changed LinuxCNC
canonical output.
### 2. OPFS Program Persistence
Connect real G-code programs to OPFS:
- save current program text to OPFS;
- load program text from OPFS;
- show OPFS path in status/readiness;
- keep browser file loading as an import path, not the only path.
Validation:
- browser smoke load file -> save OPFS -> reload OPFS -> run -> playback.
### 3. AXIS DRO/Modal State Expansion
Improve the DRO panel without inventing unsupported data:
- derive any available fields from LinuxCNC output or validated summaries;
- show unavailable fields as `n/a`;
- add tests that prevent silently fabricated G54/G92/TLO/DTG values.
Validation:
- browser smoke verifies no `undefined` and no fabricated unavailable values.
### 4. Preview Controls
Add AXIS-like preview controls:
- zoom fit;
- reset view;
- optional pan/viewport scale state;
- keep SVG nonblank and stable.
Validation:
- browser smoke verifies viewBox changes/reset and toolhead/path remain visible.
### 5. Machine/Session Integration
Use the existing OPFS/session workflow:
- load machine session;
- show machine file readiness;
- stage INI/parameter/tool-table/program into WASM;
- block run with explicit reasons when readiness is missing.
Validation:
- OPFS/session browser smoke covers load -> run -> playback.
## Adding More Built-In Test Programs
To add a built-in test:
1. Add a module under:
```text
wasm-port/runtime/ui/simulation/programs/
```
2. Export an object with:
```js
{
id,
label,
category,
text,
expectedMotionTypes,
}
```
3. Import it in:
```text
wasm-port/runtime/ui/simulation/programs/index.js
```
4. Add it to `SIMULATION_TEST_PROGRAMS`.
5. Run:
```bash
wasm-port/tests/ui/node/verify_real_simulation_programs.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh
```
## Commit / Upload Rule
After each completed implementation batch:
1. Run focused smoke(s).
2. Run `wasm-port/tests/host/verify_project_release_gate.sh` when feasible.
3. Commit with a Chinese title and conclusion body.
4. Push to:
```text
http://154.8.160.151:3000/wangdequan/cnc_wams.git
```
## Immediate Suggested Start
Start with "OPFS Program Persistence" because the page can now load, edit, and
run real G-code text/files, but programs are not yet saved to or restored from
OPFS from within the AXIS shell.
## Execution Record
### 一、2026-06-16 Real G-code Editor Pane
按 `text16.txt` 的 Immediate Suggested Start 推进,完成 AXIS shell 内真实 G-code 编辑区。
本批新增实质能力:
- `runtime/ui/simulation/index.html` 新增 editable G-code pane
- `data-axis-shell="program-editor"`
- `textarea[data-program-editor]`
- `data-program-editor-status`
- 工具栏新增:
- `Run Editor Text`
- 页面状态新增 `programEditorState`
- 内置程序加载、真实文本执行、真实文件加载都会同步到 editor textarea
- editor textarea 修改后可直接运行;
- `window.linuxCncRealSimulationApi` 新增:
- `getProgramText()`
- `setProgramText(text, metadata)`
- `runEditorProgramText()`
- browser smoke 新增验证:
- 初始内置程序会同步到 editor
- `runProgramText()` 后 editor 同步自定义文本;
- `loadProgramFile()` 后 editor 同步文件文本和 filename metadata
- `setProgramText()` 修改 editor 内容;
- `runEditorProgramText()` 通过 LinuxCNC WASM 执行修改后的 G-code并验证 canonical output
出现修改后的坐标。
关键验证:
```text
browser_real_simulation_page_smoke=ok
real_simulation_programs_node_smoke=ok
```
语义边界:
- editor 只保存和显示 G-code 文本;
- G-code 执行仍通过 LinuxCNC-backed WASM
- JS 不解释 G-code、不规划刀路、不推导 modal/machine semantics。