完善云端RUN执行反馈
This commit is contained in:
@@ -116,6 +116,145 @@ npm --prefix web-rtcp-5axis-sim-plan/app run build: PASS
|
||||
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node: PASS
|
||||
```
|
||||
|
||||
## 2026-06-23 03:52 EDT - 云端 8092 RUN 修复、部署和复测
|
||||
|
||||
User request:
|
||||
|
||||
- 测试并完善 `https://82.156.24.101:8092/` 的 `run` 功能。
|
||||
- 使用 `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/working_run/test_linuxcnc_source` 下面的 INI/G-code 测试。
|
||||
- 要求 RUN 按实际行执行、按实际 feed 执行、各轴数据正确,并在程序列表显示每行执行过程。
|
||||
- 约束:只应在 `ON + AUTO + IDLE + homed` 下进入 `EMC_TASK_PLAN_RUN`,且 session 初始化不能把已 POWER/HOME 的 UI 状态重置回 off/unhomed。
|
||||
|
||||
Process:
|
||||
|
||||
1. Read workspace instructions and existing repository context:
|
||||
- `/home/meswork/cnc_wams/AGENTS.md`
|
||||
- `qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs`
|
||||
- `web-rtcp-5axis-sim-plan/app/src/state/store.js`
|
||||
- `web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js`
|
||||
- `web-rtcp-5axis-sim-plan/app/src/runtime/linuxcnc-machine-file-staging.js`
|
||||
- `web-rtcp-5axis-sim-plan/app/src/runtime/linuxcnc-task-hal-runtime.js`
|
||||
- `web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs`
|
||||
- `web-rtcp-5axis-sim-plan/tests/node/verify_run_preconditions.mjs`
|
||||
2. Reviewed existing local dirty worktree and existing evidence files. Existing local report already showed local PASS, but cloud target still needed verification.
|
||||
3. Ran cloud Puppeteer probe against `https://82.156.24.101:8092/`.
|
||||
- Initial cloud probe output:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-debug-current/cloud-run-debug-current.json`
|
||||
- Finding: cloud page had `Run Ready`, but after clicking it the test timed out waiting for `taskState=on/allHomed/auto/tcp`.
|
||||
4. Ran a shorter cloud `Run Ready` probe:
|
||||
- Output:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-ready-after.json`
|
||||
- Finding before deploy:
|
||||
- Before: `taskState=estop-reset`, `mode=manual`, `allHomed=false`.
|
||||
- After `Run Ready`: `taskState=on`, `mode=auto`, `rtcpState=on`, but `allHomed=false`.
|
||||
- Result: subsequent `Run` was still blocked by the homing gate.
|
||||
5. Added focused regression coverage in:
|
||||
- `web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs`
|
||||
- New `verifyRunReadySequence` path validates:
|
||||
- `RUN_READY` sets `powerOn=true`, `taskState=on`, `mode=auto`, `allHomed=true`, `rtcpState=on`.
|
||||
- A following `RUN` enters `linuxcnc-task-motion-hal-wasm` feedback.
|
||||
- `operatorMessage` is not `run blocked: home machine first`.
|
||||
6. Updated `verify_run_preconditions.mjs` to match the current explicit gate order:
|
||||
- ON + manual + unhomed: `run blocked: switch to auto mode first`.
|
||||
- ON + auto + unhomed: `run blocked: home machine first`.
|
||||
7. Verified local node tests:
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs`
|
||||
- `run_feedback_status_loop_smoke=ok`
|
||||
- `run_ready_sequence_smoke=ok`
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_run_preconditions.mjs`
|
||||
- `run_preconditions_ini_profile_smoke=ok`
|
||||
- `run_preconditions_kinematics_smoke=ok`
|
||||
- `run_preconditions_machine_file_smoke=ok`
|
||||
8. Ran full local browser evidence capture:
|
||||
- Command:
|
||||
`node qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs`
|
||||
- Result:
|
||||
`test_linuxcnc_source_run_status=PASS`
|
||||
- JSON:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json`
|
||||
- DOCX:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx`
|
||||
- Key PASS evidence:
|
||||
- `test_linuxcnc_source INI used`
|
||||
- `test_linuxcnc_source G-code hash matches loaded source`
|
||||
- `刀具路径使用完整 canonical motion 点`
|
||||
- `RUN 采样数量`
|
||||
- `每行执行高亮同步`
|
||||
- `程序列表显示每行执行过程`
|
||||
- `执行轨迹可见`
|
||||
- `实时轴值来自 task/HAL feedback`
|
||||
- `RUN feed 不是固定 3600 mm/min`
|
||||
- `RUN feed 随实际 G-code F/G93 段变化`
|
||||
- `RUN 使用 G93 inverse-time feed`
|
||||
- `task/HAL cycle 推进`
|
||||
- `STOP 后 loop 停止`
|
||||
9. Built static site:
|
||||
- Command:
|
||||
`npm run build` from `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app`
|
||||
- Result:
|
||||
`gmoccapy_static_build=ok`
|
||||
- Build output:
|
||||
`/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/dist`
|
||||
10. Created deployment tarball:
|
||||
- `/tmp/web-rtcp-5axis-sim-8092-runfix-20260623.tar.gz`
|
||||
11. Connected to cloud host:
|
||||
- SSH target: `ubuntu@82.156.24.101`
|
||||
- Confirmed nginx was listening on port `8092`.
|
||||
- Confirmed nginx site root:
|
||||
`/var/www/web-rtcp-5axis-sim`
|
||||
- Noted older home copy:
|
||||
`/home/ubuntu/web-rtcp-5axis-sim-8092`
|
||||
12. Uploaded release tarball to:
|
||||
- `/home/ubuntu/tmp/web-rtcp-5axis-sim-8092-runfix-20260623.tar.gz`
|
||||
13. Deployed to nginx site:
|
||||
- Backup:
|
||||
`/home/ubuntu/tmp/web-rtcp-backups/web-rtcp-5axis-sim-before-runfix-20260623-154606`
|
||||
- Release extraction:
|
||||
`/home/ubuntu/tmp/web-rtcp-5axis-sim-8092-runfix-20260623-154606`
|
||||
- Synced release into:
|
||||
`/var/www/web-rtcp-5axis-sim`
|
||||
- Ran:
|
||||
`sudo nginx -t`
|
||||
- Result:
|
||||
`nginx: configuration file /etc/nginx/nginx.conf test is successful`
|
||||
- Reloaded nginx.
|
||||
14. Ran cloud post-deploy RUN probe:
|
||||
- Output:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-after-deploy/cloud-run-after-deploy.json`
|
||||
- Key evidence:
|
||||
- `03-run-ready`: `allHomed=true`, `mode=auto`, `taskState=on`, `feedback=linuxcnc-task-motion-hal-wasm`.
|
||||
- `04-run-0500`: `runState=running`, `activeLine=9`, `velocity=2100`, line text includes `running | F 2100.0 ... cycle 19/190`.
|
||||
- `06-run-7000`: `runState=running`, `activeLine=11`, `velocity=283.9176`, line text includes actual axis values and cycle.
|
||||
- First post-deploy probe hit Puppeteer `Node is detached from document` while clicking STOP because the button node was re-rendered during the running UI update. This was a test-click issue, not a page failure.
|
||||
15. Ran cloud STOP-specific post-deploy probe using DOM re-query for the STOP button:
|
||||
- Output:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-run-stop-after-deploy/cloud-run-stop-after-deploy.json`
|
||||
- Key evidence:
|
||||
- `01-ready`: `runState=idle`, `allHomed=true`, `feedback=linuxcnc-task-motion-hal-wasm`, `lineText="idle | F 3600.0 ... cycle 4/40"`.
|
||||
- `02-running`: `runState=running`, `activeLine=9`, `loopActive=true`, `feedback=linuxcnc-task-motion-hal-wasm`, `velocity=2100`, line text includes `running | F 2100.0 ... cycle 34/340`.
|
||||
- `03-stopped`: `runState=stopped`, `loopActive=false`, `feedback=linuxcnc-task-motion-hal-wasm`, line text includes `stopped | F 2100.0 ... cycle 50/500`.
|
||||
16. Closed SSH session.
|
||||
|
||||
Files modified by this execution:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs
|
||||
web-rtcp-5axis-sim-plan/tests/node/verify_run_preconditions.mjs
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx
|
||||
qa/web-rtcp-5axis-site-test/screenshots/test-linuxcnc-source-run/*.png
|
||||
qa/web-rtcp-5axis-site-test/output/cloud-run-after-deploy/*
|
||||
qa/web-rtcp-5axis-site-test/output/cloud-run-stop-after-deploy/*
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
Cloud deployment result:
|
||||
|
||||
- Deployed updated static app to `https://82.156.24.101:8092/`.
|
||||
- Confirmed `RUN_READY` no longer loses `allHomed`.
|
||||
- Confirmed `RUN` enters task/HAL feedback and advances line/feed/axis execution.
|
||||
- Confirmed `STOP` stops the status loop.
|
||||
|
||||
---
|
||||
|
||||
Execution timestamp: 2026-06-22 17:55 EDT
|
||||
@@ -1225,3 +1364,551 @@ Files modified or generated by this execution:
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 22:54:09 EDT website packaging of test_linuxcnc_source
|
||||
|
||||
User request: based on the previous round, package the files under
|
||||
`/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/working_run/test_linuxcnc_source`
|
||||
into the website, make sure the programs shown in the `LinuxCNC 5-axis source`
|
||||
UI are uploaded with the site/server bundle, and ensure the source programs are
|
||||
used correctly.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Inspected the current website packaging and LinuxCNC source loading path.
|
||||
- Read `web-rtcp-5axis-sim-plan/app/scripts/build-static.mjs`.
|
||||
- Read `web-rtcp-5axis-sim-plan/app/src/runtime/linuxcnc-machine-file-staging.js`.
|
||||
- Confirmed the UI source selector is backed by machine-file staging and
|
||||
vendored LinuxCNC demo files.
|
||||
2. Verified the relevant source assets.
|
||||
- Confirmed `working_run/test_linuxcnc_source` currently contains:
|
||||
- `xyzac-trt.ini`
|
||||
- `impeller-7bl-xyzac.ngc`
|
||||
- Verified both files are byte-identical to their vendored LinuxCNC source
|
||||
counterparts by SHA-256:
|
||||
- `xyzac-trt.ini`
|
||||
- `impeller-7bl-xyzac.ngc`
|
||||
3. Implemented website packaging for the test source directory.
|
||||
- Updated `web-rtcp-5axis-sim-plan/app/scripts/build-static.mjs`.
|
||||
- Added `copyBundledTestLinuxCncSourceAssets()`.
|
||||
- Build output now copies:
|
||||
- `web-rtcp-5axis-sim-plan/working_run/test_linuxcnc_source/*`
|
||||
to
|
||||
- `web-rtcp-5axis-sim-plan/app/dist/working_run/test_linuxcnc_source/*`
|
||||
4. Updated machine-file staging source resolution.
|
||||
- Updated `web-rtcp-5axis-sim-plan/app/src/runtime/linuxcnc-machine-file-staging.js`.
|
||||
- Added `DEFAULT_TEST_SOURCE_ROOT_URLS`.
|
||||
- Updated `sourceUrlsFor()` to prefer packaged `working_run/test_linuxcnc_source`
|
||||
assets for:
|
||||
- `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini`
|
||||
- `configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc`
|
||||
- Preserved vendored LinuxCNC URLs as fallback so the existing source list and
|
||||
staging flow continue to work.
|
||||
5. Built and validated the website package.
|
||||
- Ran `npm run build` in `web-rtcp-5axis-sim-plan/app`.
|
||||
- Confirmed:
|
||||
- `app/dist/working_run/test_linuxcnc_source/xyzac-trt.ini`
|
||||
- `app/dist/working_run/test_linuxcnc_source/impeller-7bl-xyzac.ngc`
|
||||
exist in the published output.
|
||||
6. Ran validation commands.
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_machine_file_staging.mjs`
|
||||
-> `machine_file_staging_smoke=ok`
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_impeller_feed_task_hal_run.mjs`
|
||||
-> `impeller_feed_task_hal_run=ok`
|
||||
- `bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh`
|
||||
-> `gmoccapy_dist_smoke=ok`
|
||||
7. Started a local HTTP server for the built site.
|
||||
- Working directory:
|
||||
`web-rtcp-5axis-sim-plan/app/dist`
|
||||
- URL:
|
||||
`http://127.0.0.1:4173/`
|
||||
- Confirmed HTTP 200 for:
|
||||
- `/index.html`
|
||||
- `/working_run/test_linuxcnc_source/impeller-7bl-xyzac.ngc`
|
||||
|
||||
Files modified by this execution:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/scripts/build-static.mjs
|
||||
web-rtcp-5axis-sim-plan/app/src/runtime/linuxcnc-machine-file-staging.js
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 23:30:02 EDT cloud short-viewport gcode panel diagnosis and fix
|
||||
|
||||
User report: on the cloud-hosted site, the G-code display area showed only one
|
||||
line with a large blank area above it.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Reproduced the issue under a short viewport similar to the user screenshot.
|
||||
- Used a local browser run at `848x331`.
|
||||
- Confirmed the problem was reproducible with
|
||||
`impeller-7bl-xyzac.ngc`.
|
||||
2. Measured DOM/layout state.
|
||||
- Verified the G-code program was not a one-line program.
|
||||
- Confirmed the loaded impeller program had `4507` lines.
|
||||
- Confirmed the status text
|
||||
`8 staged / configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc`
|
||||
is styled with `white-space: nowrap` and `text-overflow: ellipsis`, so the
|
||||
one-line symptom was not caused by that text wrapping.
|
||||
3. Found the actual cause.
|
||||
- The shell layout had hard minimum viewport assumptions and an unconstrained
|
||||
`#app` container combination that could cause the grid to expand beyond the
|
||||
real viewport while `body` remained `overflow: hidden`.
|
||||
- In the short viewport case, the browser only exposed a bottom sliver of the
|
||||
G-code list area, which looked like “only one visible line with lots of blank
|
||||
space above”.
|
||||
4. Implemented a responsive layout fix in
|
||||
`web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css`.
|
||||
- Removed the old hard `1180px / 640px` min-size behavior.
|
||||
- Made the main shell columns responsive.
|
||||
- Added a constrained `#app` viewport container.
|
||||
- Added compact layout rules for shorter heights.
|
||||
- Added an extra compact mode for very short heights (`max-height: 420px`) that:
|
||||
- prioritizes the G-code panel height,
|
||||
- hides `info-tabs`, `override`, `spindle-coolant`, and `mdi-panel`,
|
||||
- reduces chrome height so the list can show multiple rows.
|
||||
5. Validated after the fix.
|
||||
- Rebuilt the site: `npm run build`
|
||||
- Re-tested at `848x331`.
|
||||
- Post-fix measured result:
|
||||
- shell height = `331`
|
||||
- G-code panel height = `177`
|
||||
- G-code list height = `93`
|
||||
- visible G-code rows = `4`
|
||||
- Confirmed compact-mode hidden panels:
|
||||
- `mdiVisible = none`
|
||||
- `infoVisible = none`
|
||||
6. Regression check.
|
||||
- Ran `bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh`
|
||||
- Result: `gmoccapy_dist_smoke=ok`
|
||||
|
||||
Files modified by this execution:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 23:40:12 EDT manual short-viewport browser test and screenshots
|
||||
|
||||
User request: execute a test and capture screenshots.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Rebuilt the static site package.
|
||||
- Ran `npm run build` in `web-rtcp-5axis-sim-plan/app`
|
||||
- Result: `gmoccapy_static_build=ok`
|
||||
2. Used the running local dist server at `http://127.0.0.1:4173/`.
|
||||
3. Ran a manual browser test with Puppeteer at a short viewport.
|
||||
- Viewport: `848x331`
|
||||
- Program selected:
|
||||
`configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc`
|
||||
4. Measured the rendered G-code panel.
|
||||
- `visibleGcodeRows = 21`
|
||||
- Confirmed the first visible lines include the expected impeller header and
|
||||
program body rows.
|
||||
5. Saved artifacts.
|
||||
- Full-page screenshot:
|
||||
`qa/web-rtcp-5axis-site-test/screenshots/manual-short-viewport/impeller-short-viewport-2026-06-22.png`
|
||||
- G-code panel screenshot:
|
||||
`qa/web-rtcp-5axis-site-test/screenshots/manual-short-viewport/impeller-short-viewport-gcode-2026-06-22.png`
|
||||
- Metrics JSON:
|
||||
`qa/web-rtcp-5axis-site-test/screenshots/manual-short-viewport/impeller-short-viewport-2026-06-22.json`
|
||||
6. Visually inspected the cropped G-code screenshot.
|
||||
- Verified the panel is nonblank and shows multiple visible rows, with line
|
||||
numbers and impeller program content.
|
||||
|
||||
Files generated by this execution:
|
||||
|
||||
```text
|
||||
qa/web-rtcp-5axis-site-test/screenshots/manual-short-viewport/impeller-short-viewport-2026-06-22.png
|
||||
qa/web-rtcp-5axis-site-test/screenshots/manual-short-viewport/impeller-short-viewport-gcode-2026-06-22.png
|
||||
qa/web-rtcp-5axis-site-test/screenshots/manual-short-viewport/impeller-short-viewport-2026-06-22.json
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 23:55:45 EDT deploy current dist to cloud site 82.156.24.101:8092
|
||||
|
||||
User request: publish the current version to the cloud website.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Read deployment context from `git.txt` and prior deployment notes in this log.
|
||||
- Confirmed cloud site target: `https://82.156.24.101:8092/`
|
||||
- Confirmed prior nginx deployment root: `/var/www/web-rtcp-5axis-sim`
|
||||
2. Rebuilt the static application before publish.
|
||||
- Ran `npm run build` in `web-rtcp-5axis-sim-plan/app`
|
||||
- Result: `gmoccapy_static_build=ok`
|
||||
3. Packaged the current build output.
|
||||
- Created:
|
||||
`/tmp/web-rtcp-5axis-sim-8092.tar.gz`
|
||||
4. Confirmed remote access details.
|
||||
- SSH target: `ubuntu@82.156.24.101`
|
||||
- `scp` and `ssh` available locally.
|
||||
- `paramiko` available locally and used for reliable remote execution.
|
||||
5. Uploaded and deployed with explicit remote replacement.
|
||||
- Uploaded tarball to:
|
||||
`/tmp/web-rtcp-5axis-sim-8092.tar.gz`
|
||||
- Extracted to a timestamped remote staging directory.
|
||||
- Backed up the previous nginx root to:
|
||||
`/var/www/web-rtcp-5axis-sim.bak.<timestamp>`
|
||||
- Replaced `/var/www/web-rtcp-5axis-sim` with the new build contents.
|
||||
- Set ownership to `www-data:www-data`.
|
||||
- Ran `nginx -t` and reloaded nginx.
|
||||
6. Verified remote HTTPS response after deployment.
|
||||
- Remote local check returned:
|
||||
`HTTP/2 200`
|
||||
- Public check:
|
||||
`curl -k -I https://82.156.24.101:8092/`
|
||||
returned `HTTP/2 200`
|
||||
7. Verified the deployed site contains the new responsive compact layout.
|
||||
- Fetched remote CSS from:
|
||||
`https://82.156.24.101:8092/src/styles/gmoccapy.css`
|
||||
- Confirmed presence of:
|
||||
- `#app` viewport constraint
|
||||
- `@media (max-height: 420px)`
|
||||
- compact shell rows
|
||||
8. Ran a cloud browser validation against the public URL.
|
||||
- Viewport: `848x331`
|
||||
- Program:
|
||||
`configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc`
|
||||
- Result:
|
||||
`cloud_short_viewport_visible_rows=21`
|
||||
9. Saved cloud verification artifacts.
|
||||
- Full-page screenshot:
|
||||
`qa/web-rtcp-5axis-site-test/screenshots/cloud-short-viewport/cloud-impeller-short-viewport-2026-06-22.png`
|
||||
- G-code panel screenshot:
|
||||
`qa/web-rtcp-5axis-site-test/screenshots/cloud-short-viewport/cloud-impeller-short-viewport-gcode-2026-06-22.png`
|
||||
- Metrics JSON:
|
||||
`qa/web-rtcp-5axis-site-test/screenshots/cloud-short-viewport/cloud-impeller-short-viewport-2026-06-22.json`
|
||||
10. Cleaned up the temporary local askpass helper.
|
||||
|
||||
Files generated by this execution:
|
||||
|
||||
```text
|
||||
qa/web-rtcp-5axis-site-test/screenshots/cloud-short-viewport/cloud-impeller-short-viewport-2026-06-22.png
|
||||
qa/web-rtcp-5axis-site-test/screenshots/cloud-short-viewport/cloud-impeller-short-viewport-gcode-2026-06-22.png
|
||||
qa/web-rtcp-5axis-site-test/screenshots/cloud-short-viewport/cloud-impeller-short-viewport-2026-06-22.json
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 23:40:12 EDT compact DRO layout for 20+ visible gcode rows
|
||||
|
||||
User request: increase the visible G-code line count to at least 20 and compress
|
||||
the axis display area (`X Y Z A/B C`) to make room.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Reviewed current DRO rendering and layout.
|
||||
- Read `app/src/ui/gmoccapy-shell.js` and `app/src/styles/gmoccapy.css`.
|
||||
- Confirmed the full-size DRO panel and title/bottom chrome still consumed too
|
||||
much height in very short viewports.
|
||||
2. Tightened the ultra-short-height layout in
|
||||
`web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css`.
|
||||
- Reduced title row height.
|
||||
- Reduced top preview/DRO row height.
|
||||
- Reduced bottom-controls row height.
|
||||
- Reduced G-code header/source-row/progress overhead.
|
||||
- Reduced G-code row font size and row height.
|
||||
3. Compressed the axis display area.
|
||||
- In `max-height: 420px` mode:
|
||||
- converted the DRO panel to a single compact row,
|
||||
- changed the six axes to a 6-column compact strip,
|
||||
- hid `G54/Abs`, `DTG`, and `TCP` strip details,
|
||||
- reduced axis/value font sizes.
|
||||
4. Rebuilt and measured the same short viewport (`848x331`).
|
||||
- Post-fix metrics:
|
||||
- `gcodeHeight = 253`
|
||||
- `listHeight = 206`
|
||||
- `visibleRows = 21`
|
||||
- `rowHeight = 10`
|
||||
- `droHeight = 24`
|
||||
- `titleHeight = 24`
|
||||
- `bottomHeight = 28`
|
||||
5. Regression check.
|
||||
- Ran `bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh`
|
||||
- Result: `gmoccapy_dist_smoke=ok`
|
||||
|
||||
Files modified by this execution:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 G-code full list visibility and RUN usability fix
|
||||
|
||||
User request: after selecting a source program, the program list should show the
|
||||
whole source program. If the line count is large, dynamic loading is acceptable.
|
||||
Also RUN is not easy to use.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Inspected current G-code panel and RUN controls.
|
||||
- `app/src/ui/gmoccapy-shell.js`
|
||||
- `app/src/styles/gmoccapy.css`
|
||||
- `app/src/state/store.js`
|
||||
- `app/src/state/linuxcnc-task-policy.js`
|
||||
2. Found the main display issue.
|
||||
- `.gcode-panel` CSS defined only four grid rows:
|
||||
`32px minmax(0, 1fr) 20px 54px`
|
||||
- The DOM actually renders five sections:
|
||||
G-code header, LinuxCNC source selector row, program list, progress, MDI.
|
||||
- This caused the source selector and program list to overlap/compress, making
|
||||
the long source program appear as only a tiny visible row.
|
||||
3. Fixed full source-program list visibility.
|
||||
- Updated `.gcode-panel` to five rows:
|
||||
`auto auto minmax(96px, 1fr) 20px 54px`
|
||||
- Added `.linuxcnc-source-row` layout rules so the source selector/status no
|
||||
longer consume the program list area.
|
||||
- The source program list remains scrollable for large programs, so all lines
|
||||
are available without rendering outside the panel.
|
||||
4. Improved RUN usability.
|
||||
- Added `RUN_READY` store action.
|
||||
- Added `runReadySequence()` in `store.js`.
|
||||
- The sequence loads a default G-code source when needed, initializes task/HAL,
|
||||
powers on, homes all joints, switches to AUTO mode, and enables the profile TCP
|
||||
kinematics type.
|
||||
- Added a `Run Ready` bottom-control button before `Run`.
|
||||
- Adjusted bottom-control layout to fit the additional control.
|
||||
5. Preserved existing RUN semantics.
|
||||
- RUN still uses `validateRunPreconditions`.
|
||||
- The new `Run Ready` button prepares the machine instead of bypassing the
|
||||
LinuxCNC-style gates.
|
||||
6. Validation completed.
|
||||
- `node --check web-rtcp-5axis-sim-plan/app/src/state/store.js`
|
||||
- `node --check web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js`
|
||||
- `npm --prefix web-rtcp-5axis-sim-plan/app run build`
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs`
|
||||
- `node qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs`
|
||||
7. Browser test result:
|
||||
- `test_linuxcnc_source_run_status=PASS`
|
||||
- JSON report:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json`
|
||||
- DOCX report:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx`
|
||||
8. Relevant PASS evidence:
|
||||
- `RUN 采样数量`
|
||||
- `每行执行高亮同步`
|
||||
- `程序列表显示每行执行过程`
|
||||
- `RUN feed 不是固定 3600 mm/min`
|
||||
- `RUN feed 随实际 G-code F/G93 段变化`
|
||||
- `RUN 使用 G93 inverse-time feed`
|
||||
|
||||
Execution timestamp:
|
||||
|
||||
- `2026-06-22 22:42:20 EDT`
|
||||
|
||||
Files modified or generated by this execution:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/state/store.js
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx
|
||||
qa/web-rtcp-5axis-site-test/screenshots/test-linuxcnc-source-run/*.png
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 HTTPS deploy to 82.156.24.101:8092
|
||||
|
||||
User request: publish the Web RTCP 5 Axis simulator by HTTPS to remote server
|
||||
`82.156.24.101` on port `8092` using SSH user `ubuntu`.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Built the local static app.
|
||||
- Command: `npm --prefix web-rtcp-5axis-sim-plan/app run build`
|
||||
- Result: `gmoccapy_static_build=ok`
|
||||
- Build output: `web-rtcp-5axis-sim-plan/app/dist`
|
||||
2. Packaged the build output.
|
||||
- Command: `tar -C web-rtcp-5axis-sim-plan/app/dist -czf /tmp/web-rtcp-5axis-sim-8092.tar.gz .`
|
||||
- Package size: about `1.6M`
|
||||
3. Uploaded the package to the remote host.
|
||||
- Tooling: `scp` via interactive password handling.
|
||||
- Remote path: `/tmp/web-rtcp-5axis-sim-8092.tar.gz`
|
||||
4. Attempted to create a standalone systemd HTTPS Node service.
|
||||
- Service name: `web-rtcp-5axis-sim-8092.service`
|
||||
- Initial service failed because port `8092` was already occupied.
|
||||
5. Diagnosed port ownership.
|
||||
- `ss -ltnp 'sport = :8092'` showed nginx already listening on `8092`.
|
||||
- `curl -k -I https://127.0.0.1:8092/` already returned HTTP 200 from nginx.
|
||||
6. Removed the failed standalone systemd service.
|
||||
- Disabled/stopped `web-rtcp-5axis-sim-8092.service`.
|
||||
- Removed `/etc/systemd/system/web-rtcp-5axis-sim-8092.service`.
|
||||
- Reloaded systemd daemon.
|
||||
7. Inspected existing nginx HTTPS configuration.
|
||||
- Active config: `/etc/nginx/sites-available/web-rtcp-5axis-sim`
|
||||
- HTTPS listener:
|
||||
- `listen 8092 ssl http2`
|
||||
- `listen [::]:8092 ssl http2`
|
||||
- Root: `/var/www/web-rtcp-5axis-sim`
|
||||
- Certificate paths:
|
||||
- `/etc/letsencrypt/live/82.156.24.101/fullchain.pem`
|
||||
- `/etc/letsencrypt/live/82.156.24.101/privkey.pem`
|
||||
8. Deployed this build through the existing nginx HTTPS site.
|
||||
- Extracted package to a staging directory.
|
||||
- Backed up previous web root:
|
||||
- `/var/www/web-rtcp-5axis-sim.bak.20260623101928`
|
||||
- Replaced `/var/www/web-rtcp-5axis-sim` with the new static build.
|
||||
- Set ownership to `www-data:www-data`.
|
||||
- Ran `nginx -t`.
|
||||
- Reloaded nginx.
|
||||
9. Verified HTTPS access.
|
||||
- Local remote check: `curl -k -I https://127.0.0.1:8092/` returned `HTTP/2 200`.
|
||||
- Public check: `curl -k -I https://82.156.24.101:8092/` returned `HTTP/2 200`.
|
||||
|
||||
Execution timestamp:
|
||||
|
||||
- `2026-06-22 22:19:39 EDT`
|
||||
|
||||
Published URL:
|
||||
|
||||
```text
|
||||
https://82.156.24.101:8092/
|
||||
```
|
||||
|
||||
Files modified or generated by this execution:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/dist/**
|
||||
/tmp/web-rtcp-5axis-sim-8092.tar.gz
|
||||
remote:/tmp/web-rtcp-5axis-sim-8092.tar.gz
|
||||
remote:/var/www/web-rtcp-5axis-sim/**
|
||||
remote:/var/www/web-rtcp-5axis-sim.bak.20260623101928/**
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 realtime current G-code line display
|
||||
|
||||
User request: program realtime display of the currently executing G-code line number.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Inspected the existing UI and state flow.
|
||||
- Checked `app/src/ui/gmoccapy-shell.js` for titlebar, G-code header, and current-line display.
|
||||
- Confirmed runtime line source is already available through `state.programRuntimeFeedback.line`
|
||||
during task/HAL RUN, with `state.activeLine` as fallback.
|
||||
2. Implemented a dedicated realtime current-line indicator.
|
||||
- Added `currentGcodeExecutionLine(state)` in `gmoccapy-shell.js`.
|
||||
- Added `currentGcodeLineSource(state)` in `gmoccapy-shell.js`.
|
||||
- Added a titlebar element:
|
||||
- class: `current-line-indicator`
|
||||
- data attribute: `data-current-gcode-line`
|
||||
- source attribute: `data-current-gcode-source`
|
||||
- Updated the G-code header to show `Executing line <line>` and expose the same
|
||||
`data-current-gcode-line` value.
|
||||
3. Styled the realtime indicator.
|
||||
- Updated `app/src/styles/gmoccapy.css`.
|
||||
- Added compact, stable sizing for the titlebar realtime line display.
|
||||
4. Validation completed.
|
||||
- `node --check web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js`
|
||||
- `node --check web-rtcp-5axis-sim-plan/app/src/state/store.js`
|
||||
- `npm --prefix web-rtcp-5axis-sim-plan/app run build`
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs`
|
||||
- `node qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs`
|
||||
5. Browser test result:
|
||||
- `test_linuxcnc_source_run_status=PASS`
|
||||
- Realtime current-line evidence remained synchronized:
|
||||
- `每行执行高亮同步`: PASS
|
||||
- `程序列表显示每行执行过程`: PASS
|
||||
|
||||
Execution timestamp:
|
||||
|
||||
- `2026-06-22 22:09:20 EDT`
|
||||
|
||||
Files modified or generated by this execution:
|
||||
|
||||
```text
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx
|
||||
qa/web-rtcp-5axis-site-test/screenshots/test-linuxcnc-source-run/*.png
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
## 2026-06-22 test_linuxcnc_source RUN completion
|
||||
|
||||
User request: continue completing RUN execution using files under
|
||||
`/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/working_run/test_linuxcnc_source`,
|
||||
execute actual G-code lines with actual feed, keep each axis data correct,
|
||||
and show each line's execution process in the program list.
|
||||
|
||||
Process summary:
|
||||
|
||||
1. Inspected workspace rules and project structure.
|
||||
- Confirmed `AGENTS.md` requires appending process logs to this file.
|
||||
- Confirmed test source files:
|
||||
- `working_run/test_linuxcnc_source/xyzac-trt.ini`
|
||||
- `working_run/test_linuxcnc_source/impeller-7bl-xyzac.ngc`
|
||||
2. Reviewed existing RUN/task-HAL flow.
|
||||
- Read `app/src/state/store.js`, `app/src/runtime/linuxcnc-task-hal-runtime.js`,
|
||||
`app/src/ui/gmoccapy-shell.js`, and `app/src/styles/gmoccapy.css`.
|
||||
- Confirmed task/HAL already drives runtime feedback from the loaded motion plan,
|
||||
including active line, axis pose, task/servo cycles, and current feed velocity.
|
||||
3. Implemented per-line execution state.
|
||||
- Added `programLineExecution` in `app/src/state/store.js`.
|
||||
- Updated interpreter init, playback fallback, reload/load reset paths, and
|
||||
task/HAL status application to record per-line status, feed, XYZABC axis pose,
|
||||
task cycle, servo cycle, sample index, and source mode.
|
||||
4. Updated the program list UI.
|
||||
- Updated `app/src/ui/gmoccapy-shell.js` so each G-code row shows execution
|
||||
process text such as status, feed, XYZAC values, and task/servo cycle.
|
||||
- Updated `app/src/styles/gmoccapy.css` for running/done/pending line display.
|
||||
5. Ensured the browser test actually uses the requested test source directory.
|
||||
- Added `sourceTextOverrides` support in `app/src/runtime/linuxcnc-machine-file-staging.js`.
|
||||
- Updated `qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs`
|
||||
to stage `xyzac-trt.ini` and override the selected impeller G-code with the
|
||||
text from `working_run/test_linuxcnc_source/impeller-7bl-xyzac.ngc`.
|
||||
- Added checks that loaded source bytes match the test source file.
|
||||
6. Added browser-test evidence for program-list execution process.
|
||||
- Captured active-row execution text from the DOM.
|
||||
- Added a PASS/FAIL check named `程序列表显示每行执行过程`.
|
||||
7. Validation completed.
|
||||
- `node --check web-rtcp-5axis-sim-plan/app/src/runtime/linuxcnc-machine-file-staging.js`
|
||||
- `node --check web-rtcp-5axis-sim-plan/app/src/state/store.js`
|
||||
- `node --check web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js`
|
||||
- `node --check qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs`
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_impeller_feed_task_hal_run.mjs`
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_run_feedback_loop.mjs`
|
||||
- `node web-rtcp-5axis-sim-plan/tests/node/verify_machine_file_staging.mjs`
|
||||
- `npm --prefix web-rtcp-5axis-sim-plan/app run build`
|
||||
- `node qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs`
|
||||
8. Browser test result:
|
||||
- `test_linuxcnc_source_run_status=PASS`
|
||||
- JSON report:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json`
|
||||
- DOCX report:
|
||||
`/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx`
|
||||
9. Key PASS evidence from the generated report:
|
||||
- `test_linuxcnc_source G-code hash matches loaded source`
|
||||
- `刀具路径使用完整 canonical motion 点`
|
||||
- `每行执行高亮同步`
|
||||
- `程序列表显示每行执行过程`
|
||||
- `实时轴值来自 task/HAL feedback`
|
||||
- `RUN feed 不是固定 3600 mm/min`
|
||||
- `RUN feed 随实际 G-code F/G93 段变化`
|
||||
- `RUN 使用 G93 inverse-time feed`
|
||||
- `task/HAL cycle 推进`
|
||||
|
||||
Execution timestamp:
|
||||
|
||||
- `2026-06-22 22:00:22 EDT`
|
||||
|
||||
Files modified or generated by this execution:
|
||||
|
||||
```text
|
||||
qa/web-rtcp-5axis-site-test/capture-test-linuxcnc-source-run.mjs
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report.json
|
||||
qa/web-rtcp-5axis-site-test/output/test-linuxcnc-source-run-report-2026-06-23.docx
|
||||
qa/web-rtcp-5axis-site-test/screenshots/test-linuxcnc-source-run/*.png
|
||||
web-rtcp-5axis-sim-plan/app/src/runtime/linuxcnc-machine-file-staging.js
|
||||
web-rtcp-5axis-sim-plan/app/src/state/store.js
|
||||
web-rtcp-5axis-sim-plan/app/src/styles/gmoccapy.css
|
||||
web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js
|
||||
web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user