创建text16接续文件
结论:根据当前 AXIS 风格浏览器仿真、真实 G-code 执行、程序目录化和 release gate 状态创建 text16.txt,并将项目接续指针切换到 text16。
This commit is contained in:
@@ -3,12 +3,12 @@
|
|||||||
Last updated: 2026-06-16 CST
|
Last updated: 2026-06-16 CST
|
||||||
|
|
||||||
This file tracks the overall completion state of the LinuxCNC WASM/browser port.
|
This file tracks the overall completion state of the LinuxCNC WASM/browser port.
|
||||||
Use it for project-level status and acceptance tracking. Use `text15.txt` for
|
Use it for project-level status and acceptance tracking. Use `text16.txt` for
|
||||||
turn-by-turn continuation notes and next-batch execution records.
|
turn-by-turn continuation notes and next-batch execution records.
|
||||||
|
|
||||||
## Current Status
|
## Current Status
|
||||||
|
|
||||||
- Active continuation file: `text15.txt`
|
- Active continuation file: `text16.txt`
|
||||||
- Latest completed batch: AXIS-style browser simulation shell
|
- Latest completed batch: AXIS-style browser simulation shell
|
||||||
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
- Latest relevant commit: use `git log -1 --oneline` after each committed batch
|
||||||
- Working tree at tracker creation: clean
|
- Working tree at tracker creation: clean
|
||||||
@@ -32,7 +32,7 @@ The project is complete for the current scope when all of the following are true
|
|||||||
- Host/runtime blocked families are explicitly documented and not falsely promoted.
|
- Host/runtime blocked families are explicitly documented and not falsely promoted.
|
||||||
- All required gates pass.
|
- All required gates pass.
|
||||||
- Documentation explains what is supported, blocked, and how to verify it.
|
- Documentation explains what is supported, blocked, and how to verify it.
|
||||||
- `text15.txt` contains the current continuation record and the working tree is clean.
|
- `text16.txt` contains the current continuation record and the working tree is clean.
|
||||||
|
|
||||||
## Area Status
|
## Area Status
|
||||||
|
|
||||||
|
|||||||
11
text15.txt
11
text15.txt
@@ -1937,3 +1937,14 @@ browser_real_simulation_page_smoke=ok
|
|||||||
- JS 只读取用户提供的 G-code 文本/文件;
|
- JS 只读取用户提供的 G-code 文本/文件;
|
||||||
- G-code 执行仍交给 LinuxCNC-backed WASM;
|
- G-code 执行仍交给 LinuxCNC-backed WASM;
|
||||||
- JS 不解释 G-code、不规划刀路、不推导 CNC 语义。
|
- JS 不解释 G-code、不规划刀路、不推导 CNC 语义。
|
||||||
|
|
||||||
|
八十五、2026-06-16 接续文件切换
|
||||||
|
|
||||||
|
已根据当前完成情况创建:
|
||||||
|
|
||||||
|
```text
|
||||||
|
text16.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
后续执行记录、下一批建议和当前状态接续从 `text16.txt` 开始;`text15.txt` 到此作为上一阶段
|
||||||
|
记录归档。
|
||||||
|
|||||||
292
text16.txt
Normal file
292
text16.txt
Normal file
@@ -0,0 +1,292 @@
|
|||||||
|
# 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`.
|
||||||
|
- 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)`
|
||||||
|
- `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
|
||||||
|
|
||||||
|
Add an editable G-code text pane to the AXIS shell:
|
||||||
|
|
||||||
|
- 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)`.
|
||||||
|
|
||||||
|
Validation:
|
||||||
|
|
||||||
|
- browser smoke edits a line, runs it, and verifies changed LinuxCNC canonical
|
||||||
|
output;
|
||||||
|
- Node smoke verifies editor text state helpers if factored into JS modules.
|
||||||
|
|
||||||
|
### 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 "Real G-code Editor Pane" because the page can already execute
|
||||||
|
operator-provided text/files, but the text is not yet visible/editable inside
|
||||||
|
the AXIS shell after loading.
|
||||||
Reference in New Issue
Block a user