Improve visible live G-code execution panel

This commit is contained in:
2026-08-29 07:16:29 +08:00
parent 74ae2538a3
commit 43670525d6
6 changed files with 47 additions and 46 deletions

View File

@@ -37,12 +37,12 @@
"replay_same_operation": "verified" "replay_same_operation": "verified"
}, },
"release_status": "STOP_RELEASE", "release_status": "STOP_RELEASE",
"report_sha256": "dced60b3901a793dad7d33882f08985febfa11ac38d863020b0137350dfac4e3", "report_sha256": "7fab23845f85b654699e0e158fc073d5c84804fe3ee092b16b6d34b10c58ba7a",
"schema": "xyzac-program-preview-rtcp-04.v1", "schema": "xyzac-program-preview-rtcp-04.v1",
"scope": "xyzac_only", "scope": "xyzac_only",
"segment_count": 2, "segment_count": 2,
"source_hash": "fnv1a64:b7f4678312207b31", "source_hash": "fnv1a64:b7f4678312207b31",
"state_hash": "fnv1a64:dd298967c8e59be1", "state_hash": "fnv1a64:36e2981582d7fd7f",
"status": "verified", "status": "verified",
"task_id": "RTCP-04", "task_id": "RTCP-04",
"tests": [ "tests": [
@@ -51,7 +51,7 @@
"node", "node",
"web/worker/test_xyzac_program_preview.mjs" "web/worker/test_xyzac_program_preview.mjs"
], ],
"output_sha256": "71682d480c4e9c65128aa87f60c308878dbfe1787f42694def040dd9233fa835", "output_sha256": "b8e01b911b1e35ca1fa9f5d81af46c0d2e6121f9faeda1ba511a8146be20b538",
"returncode": 0, "returncode": 0,
"status": "verified" "status": "verified"
} }

View File

@@ -86,9 +86,9 @@
} }
], ],
"release_status": "STOP_RELEASE", "release_status": "STOP_RELEASE",
"report_sha256": "2a68bfc0f2620b1d4abae70b18ca261802e5450125d37aa7c1e512adfd20ba99", "report_sha256": "6cf3b45d5fae0790c2e1fa5f5b2446c24fc3226b65ba63ee903468eba4ee8071",
"schema": "xyzac-trt-protocol-react-report.v1", "schema": "xyzac-trt-protocol-react-report.v1",
"state_hash": "fnv1a64:30f3ddcdf9544695", "state_hash": "fnv1a64:9a85b44ebb3bb575",
"status": "verified", "status": "verified",
"switchkins": [ "switchkins": [
{ {
@@ -119,7 +119,7 @@
"node", "node",
"web/worker/test_xyzac_protocol_react.mjs" "web/worker/test_xyzac_protocol_react.mjs"
], ],
"output_sha256": "b2d01a0bdee9b31f6680d0265c4537efd0a1fe12b650383089ad52d1148382bc", "output_sha256": "11d6a724eec005eb8d76d8e3fee261a9abc27cc465a76b67bf30fa50a7bbec47",
"returncode": 0 "returncode": 0
}, },
{ {

View File

@@ -74,7 +74,7 @@
}, },
{ {
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"sha256": "a676086169205f16e25c142cb97e7cfac493ea58852cec93b799797f09637845" "sha256": "6ffad5f415dac511b85670475c61c821c5b1cecea2003d812123a7bc3a0bb16f"
}, },
{ {
"path": "web/worker/test_xyzac_exact_preview.mjs", "path": "web/worker/test_xyzac_exact_preview.mjs",
@@ -82,7 +82,7 @@
}, },
{ {
"path": "web/worker/wasm-program-runtime.mjs", "path": "web/worker/wasm-program-runtime.mjs",
"sha256": "6bc403380cfecdb4a05abf0918681b7d64acc97fb948ce7f4f73f554d51df6c4" "sha256": "3b0cae4f3eb4c5fca8791fd8555351a9a718e269151e345c2e1a0f7914ce5119"
}, },
{ {
"path": "web/worker/wasm-motion-queue.mjs", "path": "web/worker/wasm-motion-queue.mjs",
@@ -102,11 +102,11 @@
}, },
{ {
"path": "web/react/src/App.tsx", "path": "web/react/src/App.tsx",
"sha256": "25ccd89e22f43464e23c5920da96b780b0ca4fdb9632f5b1d84a48c37e894f44" "sha256": "d97cbe5f9d57e3071a43f0669bc9babd652a3ac347c4db226f749ee2d77fed10"
}, },
{ {
"path": "web/react/src/styles.css", "path": "web/react/src/styles.css",
"sha256": "c39b6848f0c8d176991acb633206697bbc01bd8dbf28cba69afe605b1d7e6cb9" "sha256": "9f1bd2fe7e365bebfc88ccc382a1ca7268be4e3b4bc5a07a10714be491be0d39"
}, },
{ {
"path": "wasm-core/src/sim_task.c", "path": "wasm-core/src/sim_task.c",
@@ -114,7 +114,7 @@
}, },
{ {
"path": "wasm-core/src/sim_program.c", "path": "wasm-core/src/sim_program.c",
"sha256": "1ab97bbe8750d678b8cffebbad9cad44926285b627858cf2b1aad22da3e0457f" "sha256": "e1b9d23f5c2addeeadc49b62c6b7e8f60926962a9983a28b1a64cd97d0e1da89"
}, },
{ {
"path": "wasm-core/src/sim_posemath.c", "path": "wasm-core/src/sim_posemath.c",
@@ -289,7 +289,7 @@
"schema": "xyzac-exact-tool-preview.v1", "schema": "xyzac-exact-tool-preview.v1",
"segment_count": 29, "segment_count": 29,
"source_hash": "fnv1a64:522e219683194ad2", "source_hash": "fnv1a64:522e219683194ad2",
"state_hash": "fnv1a64:300c582b009b292a", "state_hash": "fnv1a64:d491a917d8941537",
"status": "verified", "status": "verified",
"visual_segments": 29 "visual_segments": 29
}, },
@@ -350,7 +350,7 @@
"PROGRAM_RUN", "PROGRAM_RUN",
"SIM_STEP" "SIM_STEP"
], ],
"state_hash": "fnv1a64:48bf3ba1b27a3272", "state_hash": "fnv1a64:cd105e39133f6dc1",
"status": "verified" "status": "verified"
}, },
"static": { "static": {
@@ -383,7 +383,7 @@
} }
}, },
"release_status": "STOP_RELEASE", "release_status": "STOP_RELEASE",
"report_sha256": "e5823f9c3ddba1217a808c401fb23a8b2cdb93a4242633245c8fc0407aa69911", "report_sha256": "b7b9b7f02688d1f3fe1f1dab5165cc3426f0cb99aa04f951f2a1af1a89840e71",
"schema": "xyzac-trt-tool-preview-report.v1", "schema": "xyzac-trt-tool-preview-report.v1",
"status": "verified", "status": "verified",
"task_id": "RTCP-10-TOOL-PREVIEW", "task_id": "RTCP-10-TOOL-PREVIEW",
@@ -402,7 +402,7 @@
"node", "node",
"web/worker/test_xyzac_exact_preview.mjs" "web/worker/test_xyzac_exact_preview.mjs"
], ],
"output_sha256": "f4764d5350353402e40de503e040b882a66666888e11a8cf17ca696431d89efd", "output_sha256": "82564477f5c3d57b4704ff64d80287d15f8538d4acc25e54b8f9a27015f82419",
"returncode": 0 "returncode": 0
}, },
{ {
@@ -410,7 +410,7 @@
"node", "node",
"web/worker/test_xyzac_machine_sequence.mjs" "web/worker/test_xyzac_machine_sequence.mjs"
], ],
"output_sha256": "57599a2a43b0e5af610955e1c54d0f154999175cca25fa0b827d0cff661119ad", "output_sha256": "194b3fea1bd61be2bec63c6d7d43a5c4f8a91110fefa3362af48190389f4cafe",
"returncode": 0 "returncode": 0
} }
], ],

View File

@@ -128,10 +128,10 @@
"source_slice": "AXIS-XYZAC-PROGRAM-MDI", "source_slice": "AXIS-XYZAC-PROGRAM-MDI",
"sources": [ "sources": [
{ {
"lines": "122-1000", "lines": "122-1003",
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"role": "session-authority-routing", "role": "session-authority-routing",
"sha256": "a676086169205f16e25c142cb97e7cfac493ea58852cec93b799797f09637845", "sha256": "6ffad5f415dac511b85670475c61c821c5b1cecea2003d812123a7bc3a0bb16f",
"status": "resolved", "status": "resolved",
"symbol": "new ProgramRunner" "symbol": "new ProgramRunner"
}, },
@@ -161,10 +161,10 @@
"symbol": "export class MotionState" "symbol": "export class MotionState"
}, },
{ {
"lines": "122-1000", "lines": "122-1003",
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"role": "session-authority-routing", "role": "session-authority-routing",
"sha256": "a676086169205f16e25c142cb97e7cfac493ea58852cec93b799797f09637845", "sha256": "6ffad5f415dac511b85670475c61c821c5b1cecea2003d812123a7bc3a0bb16f",
"status": "resolved", "status": "resolved",
"symbol": "new ProgramRunner" "symbol": "new ProgramRunner"
} }
@@ -186,10 +186,10 @@
"symbol": "export class AuthoritativeRuntime" "symbol": "export class AuthoritativeRuntime"
}, },
{ {
"lines": "122-1000", "lines": "122-1003",
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"role": "session-authority-routing", "role": "session-authority-routing",
"sha256": "a676086169205f16e25c142cb97e7cfac493ea58852cec93b799797f09637845", "sha256": "6ffad5f415dac511b85670475c61c821c5b1cecea2003d812123a7bc3a0bb16f",
"status": "resolved", "status": "resolved",
"symbol": "new ProgramRunner" "symbol": "new ProgramRunner"
} }
@@ -205,7 +205,7 @@
"recovery": "Chromium SIGKILL/profile-reopen, corruption detection and Firefox OPFS round-trip are verified" "recovery": "Chromium SIGKILL/profile-reopen, corruption detection and Firefox OPFS round-trip are verified"
}, },
"release_status": "STOP_RELEASE", "release_status": "STOP_RELEASE",
"report_sha256": "0995970fa99ce6ac0736710bebd35782e4cf4ab60600a72c5baa3966314e1f5d", "report_sha256": "2b7f0ee5b74ba0b961f9679a5bfa156e361c9268cc14a89bf42d12776a22085a",
"scans": { "scans": {
"js_gcode_matches": [ "js_gcode_matches": [
{ {
@@ -274,17 +274,17 @@
"text": "const result = call(this.core, \"sim_interpreter_execute\", \"number\", [\"number\", \"number\", \"number\"], [this.interpreter, this.blockBuffer, bytes.length]);" "text": "const result = call(this.core, \"sim_interpreter_execute\", \"number\", [\"number\", \"number\", \"number\"], [this.interpreter, this.blockBuffer, bytes.length]);"
}, },
{ {
"line": 1733, "line": 1736,
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"text": "const result = this.xyzacProgram.executeBlock(block);" "text": "const result = this.xyzacProgram.executeBlock(block);"
}, },
{ {
"line": 1752, "line": 1755,
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"text": "const result = this.program.executeBlock(block);" "text": "const result = this.program.executeBlock(block);"
}, },
{ {
"line": 197, "line": 211,
"path": "web/worker/wasm-program-runtime.mjs", "path": "web/worker/wasm-program-runtime.mjs",
"text": "executeBlock(block) {" "text": "executeBlock(block) {"
} }
@@ -292,7 +292,7 @@
"opfs_writer_matches": [ "opfs_writer_matches": [
{ {
"line": 1, "line": 1,
"path": "web/react/dist/assets/sim-worker-entry-CyL7D-EC.js", "path": "web/react/dist/assets/sim-worker-entry-CP8X4Y-6.js",
"text": "(function(){var e=(()=>{var e=self.location.href;return(function(t){t||={};var t=t===void 0?{}:t,n,r;t.ready=new Promise(function(e,t){n=e,r=t});var i=Object.assign({},t),a=[],o=typeof window==`object`,s=typeof importScripts==`function`;typ" "text": "(function(){var e=(()=>{var e=self.location.href;return(function(t){t||={};var t=t===void 0?{}:t,n,r;t.ready=new Promise(function(e,t){n=e,r=t});var i=Object.assign({},t),a=[],o=typeof window==`object`,s=typeof importScripts==`function`;typ"
}, },
{ {
@@ -1496,7 +1496,7 @@
"files": [ "files": [
{ {
"path": "web/react/src/App.tsx", "path": "web/react/src/App.tsx",
"sha256": "25ccd89e22f43464e23c5920da96b780b0ca4fdb9632f5b1d84a48c37e894f44" "sha256": "d97cbe5f9d57e3071a43f0669bc9babd652a3ac347c4db226f749ee2d77fed10"
}, },
{ {
"path": "web/react/src/ThreeMachineView.tsx", "path": "web/react/src/ThreeMachineView.tsx",
@@ -1656,7 +1656,7 @@
}, },
{ {
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"sha256": "a676086169205f16e25c142cb97e7cfac493ea58852cec93b799797f09637845" "sha256": "6ffad5f415dac511b85670475c61c821c5b1cecea2003d812123a7bc3a0bb16f"
}, },
{ {
"path": "web/worker/sim-task.mjs", "path": "web/worker/sim-task.mjs",
@@ -2060,7 +2060,7 @@
}, },
{ {
"path": "web/worker/wasm-program-runtime.mjs", "path": "web/worker/wasm-program-runtime.mjs",
"sha256": "6bc403380cfecdb4a05abf0918681b7d64acc97fb948ce7f4f73f554d51df6c4" "sha256": "3b0cae4f3eb4c5fca8791fd8555351a9a718e269151e345c2e1a0f7914ce5119"
}, },
{ {
"path": "web/worker/wasm-xyzac-device-io.mjs", "path": "web/worker/wasm-xyzac-device-io.mjs",
@@ -2094,10 +2094,10 @@
"scope": "selected_xyzac_simulation_only", "scope": "selected_xyzac_simulation_only",
"sources": [ "sources": [
{ {
"lines": "122-1000", "lines": "122-1003",
"path": "web/worker/sim-session.mjs", "path": "web/worker/sim-session.mjs",
"role": "session-authority-routing", "role": "session-authority-routing",
"sha256": "a676086169205f16e25c142cb97e7cfac493ea58852cec93b799797f09637845", "sha256": "6ffad5f415dac511b85670475c61c821c5b1cecea2003d812123a7bc3a0bb16f",
"status": "resolved", "status": "resolved",
"symbol": "new ProgramRunner" "symbol": "new ProgramRunner"
}, },
@@ -2190,10 +2190,10 @@
"symbol": "createSyncAccessHandle" "symbol": "createSyncAccessHandle"
}, },
{ {
"lines": "56-56", "lines": "66-66",
"path": "web/worker/wasm-program-runtime.mjs", "path": "web/worker/wasm-program-runtime.mjs",
"role": "wasm-program-authority", "role": "wasm-program-authority",
"sha256": "6bc403380cfecdb4a05abf0918681b7d64acc97fb948ce7f4f73f554d51df6c4", "sha256": "3b0cae4f3eb4c5fca8791fd8555351a9a718e269151e345c2e1a0f7914ce5119",
"status": "resolved", "status": "resolved",
"symbol": "export class WasmProgramRuntime" "symbol": "export class WasmProgramRuntime"
}, },
@@ -2215,9 +2215,9 @@
} }
], ],
"state_hashes": [ "state_hashes": [
"fnv1a64:209531d9fc283248", "fnv1a64:f9c5800323549ff1",
"fnv1a64:ca3f86c22f00a1b8", "fnv1a64:ad9bcda2c0390aa0",
"fnv1a64:08d380ff6ff129bd" "fnv1a64:0b3199ef804f5546"
], ],
"status": "verified", "status": "verified",
"task_id": "WASM-00", "task_id": "WASM-00",
@@ -2235,7 +2235,7 @@
"control_count": 110, "control_count": 110,
"first_divergent_tick": null, "first_divergent_tick": null,
"motion_authority": "wasm", "motion_authority": "wasm",
"output_sha256": "e9d4aceca4c2c88882593ead1339f12d0ef81af51f257403c22f8c17e15e2f18", "output_sha256": "adab2a85cbfa9b00b2496c07205d99cc0a3c8072c728908c146c45d13e68f60e",
"returncode": 0, "returncode": 0,
"state_hash": "fnv1a64:e862c9e59d9ffd8c", "state_hash": "fnv1a64:e862c9e59d9ffd8c",
"status": "verified", "status": "verified",
@@ -2243,19 +2243,19 @@
{ {
"active_type": 0, "active_type": 0,
"code": "M429", "code": "M429",
"state_hash": "fnv1a64:209531d9fc283248", "state_hash": "fnv1a64:f9c5800323549ff1",
"tick": 0 "tick": 0
}, },
{ {
"active_type": 1, "active_type": 1,
"code": "M428", "code": "M428",
"state_hash": "fnv1a64:ca3f86c22f00a1b8", "state_hash": "fnv1a64:ad9bcda2c0390aa0",
"tick": 0 "tick": 0
}, },
{ {
"active_type": 2, "active_type": 2,
"code": "M430", "code": "M430",
"state_hash": "fnv1a64:08d380ff6ff129bd", "state_hash": "fnv1a64:0b3199ef804f5546",
"tick": 0 "tick": 0
} }
], ],

View File

@@ -96,7 +96,7 @@
"failure_samples": [], "failure_samples": [],
"input": { "input": {
"path": "coverage/xyzac-trt-web-wasm-parity.report.json", "path": "coverage/xyzac-trt-web-wasm-parity.report.json",
"sha256": "df18bbb72ac8e97af9bdf310203c181e8d7a9cf2843121e39ecd3832f08569b0" "sha256": "f1664a422345d7974476a233de23bbebe784ef48d78422e66b3e44103295b47b"
}, },
"known_blockers": [ "known_blockers": [
"STOP_RELEASE is intentional until an owner authorizes scope expansion" "STOP_RELEASE is intentional until an owner authorizes scope expansion"
@@ -104,7 +104,7 @@
"outputs": [], "outputs": [],
"release_decision": "selected_case_verified_but_release_stopped_by_scope_exclusions", "release_decision": "selected_case_verified_but_release_stopped_by_scope_exclusions",
"release_status": "STOP_RELEASE", "release_status": "STOP_RELEASE",
"report_sha256": "c4ea0158e4527823915b678f4fbc0667bba20fe3eff25cd7427358d2b3571b3b", "report_sha256": "70ce954815cc9b7874bd7be3e0ed373fd9ad6ce9fb3b1af68ff9f70907c39b5a",
"schema": "xyzac-trt-wasm-only-release-gate.v1", "schema": "xyzac-trt-wasm-only-release-gate.v1",
"status": "verified", "status": "verified",
"task_id": "RELEASE-00" "task_id": "RELEASE-00"

View File

@@ -183,10 +183,10 @@ output { font: 12px ui-monospace, monospace; text-align: right; }
.program-gutter span { height: 17px; } .program-gutter span { height: 17px; }
.program-gutter span.current-line { color: #174d84; background: #c8d7e8; font-weight: 700; } .program-gutter span.current-line { color: #174d84; background: #c8d7e8; font-weight: 700; }
.program-editor-wrap textarea { width: 100%; height: 100%; min-height: 180px; padding: 6px 8px; resize: none; border: 0; outline: none; background: #fff; color: #111; font: 12px/1.45 ui-monospace, monospace; tab-size: 4; } .program-editor-wrap textarea { width: 100%; height: 100%; min-height: 180px; padding: 6px 8px; resize: none; border: 0; outline: none; background: #fff; color: #111; font: 12px/1.45 ui-monospace, monospace; tab-size: 4; }
.program-execution-line { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-items: baseline; gap: 10px; min-width: 0; padding: 5px 8px; border-top: 1px solid #9aa8b4; border-bottom: 1px solid #9aa8b4; background: #e9f1f8; color: #173b5f; font: 12px/1.35 ui-monospace, monospace; } .program-execution-line { display: grid; grid-column: 1; grid-row: 2; grid-template-columns: max-content minmax(0, 1fr); align-items: baseline; gap: 10px; min-width: 0; padding: 5px 8px; border-top: 1px solid #9aa8b4; border-bottom: 1px solid #9aa8b4; background: #e9f1f8; color: #173b5f; font: 12px/1.35 ui-monospace, monospace; }
.program-execution-line span { font-weight: 700; white-space: nowrap; } .program-execution-line span { font-weight: 700; white-space: nowrap; }
.program-execution-line code { min-width: 0; overflow: hidden; color: #111; text-overflow: ellipsis; white-space: nowrap; } .program-execution-line code { min-width: 0; overflow: hidden; color: #111; text-overflow: ellipsis; white-space: nowrap; }
.program-side { display: flex; flex-direction: column; gap: 12px; padding: 8px; border-left: 1px solid #aaa; background: #d9d9d9; } .program-side { display: flex; grid-column: 2; grid-row: 1 / span 2; flex-direction: column; gap: 12px; padding: 8px; border-left: 1px solid #aaa; background: #d9d9d9; }
.program-actions { display: flex; flex-wrap: wrap; gap: 5px; } .program-actions { display: flex; flex-wrap: wrap; gap: 5px; }
.active-gcodes-label { display: grid; gap: 5px; color: #333; } .active-gcodes-label { display: grid; gap: 5px; color: #333; }
.active-gcodes-label textarea { width: 100%; min-height: 84px; resize: vertical; border: 1px solid #999; background: white; color: #222; font: 11px/1.35 ui-monospace, monospace; } .active-gcodes-label textarea { width: 100%; min-height: 84px; resize: vertical; border: 1px solid #999; background: white; color: #222; font: 11px/1.35 ui-monospace, monospace; }
@@ -209,7 +209,8 @@ output { font: 12px ui-monospace, monospace; text-align: right; }
.axis-notebook { min-height: 330px; } .axis-notebook { min-height: 330px; }
.axis-preview { min-height: 320px; } .axis-preview { min-height: 320px; }
.axis-program-pane { flex: 0 0 auto; height: auto; min-height: 205px; grid-template-columns: 1fr; } .axis-program-pane { flex: 0 0 auto; height: auto; min-height: 205px; grid-template-columns: 1fr; }
.program-side { border-top: 1px solid #aaa; border-left: 0; } .program-execution-line { grid-column: 1; grid-row: 2; }
.program-side { grid-column: 1; grid-row: 3; border-top: 1px solid #aaa; border-left: 0; }
.active-gcodes-label textarea { min-height: 58px; } .active-gcodes-label textarea { min-height: 58px; }
} }
@media (max-width: 620px) { @media (max-width: 620px) {