{ "jobId": "w7full-20260628002838-518bf522", "reportId": "report-w7full-20260628002838-518bf522", "evidenceScope": "working7-full-functional-evidence", "generatedAt": "2026-06-28T00:28:38.507Z", "targetUrl": "http://127.0.0.1:41281/web-rtcp-5axis-sim-plan/app/index.html", "chromePath": "/usr/bin/google-chrome", "screenshotsDir": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence", "steps": [ { "name": "01-loaded-inventory", "title": "我打开主界面并记录按钮库存", "description": "我确认主界面九大区域、所有 data-action 控件、canvas 和运行时 API 已经加载。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/01-loaded-inventory.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.45, "nonBlackRatio": 0.7801 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before AUTO", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before MANUAL", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before MANUAL", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before MDI", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "coolant blocked: machine must be on", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "coolant blocked: machine must be on", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: machine must be on", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: machine must be on", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: machine must be on", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: machine must be on", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: machine must be on", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: machine must be on", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: machine must be on", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: machine must be on", "label": "Home", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: machine must be on", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" } } }, { "name": "02-initial-run-blocked", "title": "我验证未上电 RUN 门禁", "description": "未上电时 RUN 不会进入执行状态,页面给出 machine must be on 门禁原因。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/02-initial-run-blocked.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.45, "nonBlackRatio": 0.7801 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before AUTO", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before MANUAL", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before MANUAL", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: machine must be on before MDI", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "coolant blocked: machine must be on", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "coolant blocked: machine must be on", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: machine must be on", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: machine must be on", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: machine must be on", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: machine must be on", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: machine must be on", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: machine must be on", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: machine must be on", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: machine must be on", "label": "Home", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: machine must be on", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: machine must be on", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" } } }, { "name": "03-powered-homed", "title": "我完成上电和回零", "description": "POWER 和 HOME 后,机床处于 on/manual/allHomed 状态,DRO 与轴值保持可读。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/03-powered-homed.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.48, "nonBlackRatio": 0.7801 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 30, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 30, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL machine homed" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 3/30 | sample 30 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine homed" } } }, { "name": "04-auto-right-panel", "title": "我验证右侧 AUTO 按钮", "description": "右侧 AUTO 变为 active,MANUAL 变为 inactive,power/home 状态未丢失。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/04-auto-right-panel.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.49, "nonBlackRatio": 0.7801 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 40, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 40, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode auto" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Pause", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: interpreter is not paused", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Step", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: switch to manual mode first", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 4/40 | sample 40 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode auto" } } }, { "name": "05-right-sidebar-all-states", "title": "我验证右侧全班按钮", "description": "右侧 E-STOP/POWER/RESET/AUTO/MANUAL/JOG/MDI/IDENTITY/TCP 的状态和门禁均已实际点击验证。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/05-right-sidebar-all-states.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.48, "nonBlackRatio": 0.7801 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "kinematics identity" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "kinematics identity" } } }, { "name": "06-profile-xyzbc", "title": "我验证 Profile 下拉切换", "description": "切换到 xyzbc-trt 后,INI、运动学和机床文件 staging 会重新加载到对应 profile。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/06-profile-xyzbc.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.49, "nonBlackRatio": 0.7802 }, "state": { "machineProfile": "xyzbc-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 100, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" } } }, { "name": "07-preview-buttons", "title": "我验证刀具预览按钮和刀路状态", "description": "X/Y/Z/Fit/Clear/Reload 后,canvas dataset 中的 selectedView、pathPoints、RTCP 状态与 store 同步。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/07-preview-buttons.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 130.25, "nonBlackRatio": 0.7887 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 1868, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": null, "operatorMessage": "program reloaded" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0.043,\"y\":-0.032,\"z\":-0.011}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "program reloaded" } } }, { "name": "08-linuxcnc-source-loaded", "title": "我验证 LinuxCNC G-code 来源选择", "description": "Stage 和 source 下拉选择后,G-code 面板、程序行、刀路预览和 interpreter canonical motion 均已刷新。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/08-linuxcnc-source-loaded.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.4, "nonBlackRatio": 0.7893 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": -84.019, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":-84.019,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "2", "threeFeedPathPoints": "0", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "2", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" } } }, { "name": "09-open-file-loaded", "title": "我验证 Open 文件按钮", "description": "通过隐藏 file input 实际上传本地 fixture/test-program.ngc,页面加载为 operator-file 程序。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/09-open-file-loaded.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.54, "nonBlackRatio": 0.7784 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-interpreter-wasm", "runState": "idle", "activeLine": 3, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 30 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-tp-runtime-sample", "line": 3, "sampleIndex": 0, "motionIndex": 0, "currentVelocityMmPerMin": 30, "axisPose": { "x": 0, "y": 0, "z": 0.00025, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC interpreter motion events 3" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Pause", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: interpreter is not paused", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Step", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: switch to manual mode first", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":5,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "1", "threeFeedPathPoints": "2", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 3, "activeRowLine": 3, "activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC interpreter motion events 3" } } }, { "name": "10-run-ready", "title": "我验证 Run Ready", "description": "Run Ready 完成 power/home/auto/source/session 前置条件,准备进入 Task/HAL 程序执行。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/10-run-ready.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.65, "nonBlackRatio": 0.7784 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 40, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 40, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "RUN ready: power on, homed, auto mode" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Pause", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: interpreter is not paused", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Step", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: switch to manual mode first", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "1", "threeFeedPathPoints": "2", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 4/40 | sample 40 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "RUN ready: power on, homed, auto mode" } } }, { "name": "11-run-realtime-path", "title": "我验证刀具实时执行路径", "description": "RUN 后 G-code 当前行、DRO、Task/HAL runtime feedback、canvas executedPathPoints 和当前段高亮同步变化。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/11-run-realtime-path.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.41, "nonBlackRatio": 0.7789 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "running", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "reading", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 790, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 790, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL status tick 14" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: AUTO interpreter is not idle", "label": "MANUAL", "iconName": "mode_manual_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: AUTO interpreter is not idle", "label": "JOG", "iconName": "mode_user_tabs_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: AUTO interpreter is not idle", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: interpreter is running", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "spindle blocked: interpreter is running", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Run", "label": "Run", "iconName": "play", "iconVariant": "active", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Pause", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: interpreter is not paused", "label": "Resume", "iconName": "play", "iconVariant": "active", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Step", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: switch to manual mode first", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.003}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":2.51,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "1", "threeFeedPathPoints": "2", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "running | F 200.0 | cycle 79/790 | sample 790 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL status tick 14" } } }, { "name": "12-pause-resume-step", "title": "我验证暂停、继续和单步", "description": "PAUSE/RESUME/STEP 的状态、interpState、taskPaused 和 Task/HAL singleStepping 均已验证。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/12-pause-resume-step.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.37, "nonBlackRatio": 0.7787 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "paused", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "paused", "taskPaused": true, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 980, "activeLine": 4, "singleStepping": true }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 980, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL stepped one cycle" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: AUTO interpreter is not idle", "label": "MANUAL", "iconName": "mode_manual_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: AUTO interpreter is not idle", "label": "JOG", "iconName": "mode_user_tabs_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "mode blocked: AUTO interpreter is not idle", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: resume paused program first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Pause", "label": "Pause", "iconName": "pause_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Resume", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Step", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: switch to manual mode first", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "1", "threeFeedPathPoints": "2", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "paused | F 200.0 | cycle 98/980 | sample 980 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL stepped one cycle" } } }, { "name": "13-stop-idle", "title": "我验证 STOP 停止", "description": "STOP 后 interpreter 返回 idle,进给速度清零,Task/HAL status loop 停止。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/13-stop-idle.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.44, "nonBlackRatio": 0.7787 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 990, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 990, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL program stopped" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Pause", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: interpreter is not paused", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Step", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: switch to manual mode first", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "1", "threeFeedPathPoints": "2", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 99/990 | sample 990 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL program stopped" } } }, { "name": "14-manual-jog-axis-values", "title": "我验证手动点动和机床轴值", "description": "X-/X+/Y-/Y+ 均实际改变对应轴值,DRO 和 axisPose 同步。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/14-manual-jog-axis-values.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 129.35, "nonBlackRatio": 0.7787 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1040, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1040, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog Y +1" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 62, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G0 X0 Y0 Z0", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "1", "threeFeedPathPoints": "2", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 104/1040 | sample 1040 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog Y +1" } } }, { "name": "15-mdi-execution", "title": "我验证 MDI 执行过程", "description": "MDI 输入、表单提交、历史按钮和底部 MDI_RUN 都执行到 store/runtime,并写入历史。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/15-mdi-execution.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 131.27, "nonBlackRatio": 0.7812 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1080, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1080, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 63, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G90 X12.5 Y-4 Z1.25 F900", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Pause", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: interpreter is not paused", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "false", "ariaDisabled": "true", "title": "home blocked: switch to manual mode first", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "jog blocked: switch to manual mode first", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "MDI", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0.013,\"y\":-0.004,\"z\":0.001}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "operator-mdi", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "fixture_line_playback_not_promoted", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "0", "threeFeedPathPoints": "1", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_FEED" }, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" } } }, { "name": "16-overrides-hal", "title": "我验证倍率和 HAL 输入", "description": "Rapid/Feed/Spindle 倍率和 Limits/Block/M1 均通过按钮实际改变状态,并在诊断中显示 last HAL effect。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/16-overrides-hal.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 131.01, "nonBlackRatio": 0.7814 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "optional stop on" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 63, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G90 X12.5 Y-4 Z1.25 F900", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "operator-mdi", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "fixture_line_playback_not_promoted", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "0", "threeFeedPathPoints": "1", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_FEED" }, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "optional stop on" } } }, { "name": "17-spindle-coolant", "title": "我验证主轴和冷却", "description": "FWD/REV/STOP、Flood、Mist 均受 power gate 控制并实际更新状态。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/17-spindle-coolant.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 130.76, "nonBlackRatio": 0.7814 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "mist coolant toggled" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 63, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G90 X12.5 Y-4 Z1.25 F900", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "operator-mdi", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "fixture_line_playback_not_promoted", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "0", "threeFeedPathPoints": "1", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_FEED" }, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "mist coolant toggled" } } }, { "name": "18-session-fullscreen", "title": "我验证会话和 Full 按钮", "description": "Save/Restore 通过 OPFS 或 fallback 存储恢复 profile/程序/UI 状态,Full 切换 preview.fullscreen。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/18-session-fullscreen.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 130.76, "nonBlackRatio": 0.7814 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "fullscreen preview on" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 63, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G90 X12.5 Y-4 Z1.25 F900", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_close", "iconVariant": "active", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "operator-mdi", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "fixture_line_playback_not_promoted", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "0", "threeFeedPathPoints": "1", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_FEED" }, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "fullscreen preview on" } } }, { "name": "19-diagnostics-audit", "title": "我验证诊断和 gmoccapy 边界", "description": "Task policy、INI、Task/HAL、Full boundary、gmoccapy comm/HAL/native page 诊断均可读,HAL pin 模型可实际更新页面状态。", "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence/19-diagnostics-audit.png", "pixelStats": { "width": 1600, "height": 1150, "averageLuminance": 130.76, "nonBlackRatio": 0.7814 }, "state": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "file-load", "lastHalPinEffect": "IconFileSelection1 / _BB_LOAD_FILE partial" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC machine files staged 18" }, "dom": { "regions": { "titlebar": true, "preview": true, "dro": true, "gcode": true, "status-sidebar": true, "info-tabs": true, "override": true, "spindle-coolant": true, "bottom-controls": true }, "actionCount": 63, "uniqueActions": [ "AUDIT_FULL_BOUNDARY", "FULL", "HOME", "JOG_X_NEG", "JOG_X_POS", "JOG_Y_NEG", "JOG_Y_POS", "MDI_RUN", "OPEN", "OPEN_FILE", "PAUSE", "RELOAD", "RESTORE_SESSION", "RESUME", "RUN", "RUN_READY", "SAVE_SESSION", "STEP", "STOP", "block-delete", "clear-preview", "estop", "feed-override-down", "feed-override-reset", "feed-override-up", "ignore-limits", "kins-identity", "kins-tcp", "mdi-command", "mdi-form", "mdi-history", "mdi-submit", "mode-auto", "mode-jog", "mode-manual", "mode-mdi", "optional-stop", "power", "rapid-override-down", "rapid-override-reset", "rapid-override-up", "reset", "reset-view", "select-linuxcnc-gcode-source", "select-profile", "spindle-forward", "spindle-override-down", "spindle-override-reset", "spindle-override-up", "spindle-reverse", "spindle-stop", "stage-linuxcnc-sources", "toggle-flood", "toggle-mist", "view-x", "view-y", "view-z" ], "buttons": { "select-profile": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-x": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View X", "label": "X", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-y": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Y", "label": "Y", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "view-z": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "View Z", "label": "Z", "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "reset-view": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Fit perspective", "label": "Fit", "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "clear-preview": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Clear preview path", "label": "Clear", "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "select-linuxcnc-gcode-source": { "exists": true, "tagName": "SELECT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "stage-linuxcnc-sources": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Stage", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-form": { "exists": true, "tagName": "FORM", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI\n \n Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-command": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "MDI command", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-submit": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "Run", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mdi-history": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "G90 X12.5 Y-4 Z1.25 F900", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "estop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Estop the machine / F1", "label": "E-STOP", "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, "power": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "Turn the machine on/off / F2", "label": "POWER", "iconName": "power_on", "iconVariant": "active", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, "reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "Reset estop and return machine off", "label": "RESET", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "mode-auto": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter auto mode", "label": "AUTO", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, "mode-manual": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Enter manual mode", "label": "MANUAL", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, "mode-jog": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Manual jog page", "label": "JOG", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, "mode-mdi": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Enter MDI mode", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, "kins-identity": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "IDENTITY", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "kins-tcp": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": null, "ariaDisabled": null, "title": "", "label": "TCP", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "rapid-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "feed-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "ignore-limits": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "Limits", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "block-delete": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "/ Block", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "optional-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": null, "ariaDisabled": null, "title": "", "label": "M1", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-flood": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Flood coolant", "label": "Flood", "iconName": "coolant_flood_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "toggle-mist": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Mist coolant", "label": "Mist", "iconName": "coolant_mist_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-forward": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle forward", "label": "FWD", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-stop": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle stop", "label": "STOP", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-reverse": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Spindle reverse", "label": "REV", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-down": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "-", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-up": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "+", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "spindle-override-reset": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "100", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN_FILE": { "exists": true, "tagName": "INPUT", "disabled": false, "active": null, "commandReady": null, "ariaDisabled": null, "title": "", "label": "", "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "OPEN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Open", "label": "Open", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RELOAD": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Reload", "label": "Reload", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN_READY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Run Ready", "label": "Run Ready", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RUN": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "run blocked: switch to auto mode first", "label": "Run", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STOP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Stop", "label": "Stop", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "PAUSE": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "pause blocked: task mode must be auto or MDI", "label": "Pause", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESUME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "resume blocked: task mode must be auto or MDI", "label": "Resume", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "STEP": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "false", "ariaDisabled": "true", "title": "step blocked: switch to auto mode first", "label": "Step", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "HOME": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Home", "label": "Home", "iconName": "ref_all", "iconVariant": "active", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, "JOG_X_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X-", "label": "X-", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_X_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "X+", "label": "X+", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_NEG": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y-", "label": "Y-", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "JOG_Y_POS": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Y+", "label": "Y+", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "MDI_RUN": { "exists": true, "tagName": "BUTTON", "disabled": true, "active": "false", "commandReady": "false", "ariaDisabled": "false", "title": "MDI blocked: switch to MDI mode first", "label": "MDI", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "SAVE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Save Session", "label": "Save Session", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "RESTORE_SESSION": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Restore Session", "label": "Restore Session", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "AUDIT_FULL_BOUNDARY": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "false", "commandReady": "true", "ariaDisabled": "false", "title": "Audit", "label": "Audit", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, "FULL": { "exists": true, "tagName": "BUTTON", "disabled": false, "active": "true", "commandReady": "true", "ariaDisabled": "false", "title": "Full", "label": "Full", "iconName": "fullscreen_close", "iconVariant": "active", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } }, "canvas": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}", "threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}", "threeRtcpState": "off", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "operator-mdi", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "fixture_line_playback_not_promoted", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "0", "threeFeedPathPoints": "1", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_FEED" }, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control IconFileSelection1 / _BB_LOAD_FILE partial", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active file-load", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "LinuxCNC machine files staged 18" } } } ], "buttonInventory": [ { "index": 0, "action": "select-profile", "tagName": "SELECT", "type": "", "label": "XYZAC xyzac-trt\n \n XYZBC xyzbc-trt\n \n XYZAB gmoccapy-xyzab", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 1, "action": "view-x", "tagName": "BUTTON", "type": "button", "label": "X", "disabled": false, "active": "false", "commandReady": null, "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 2, "action": "view-y", "tagName": "BUTTON", "type": "button", "label": "Y", "disabled": false, "active": "false", "commandReady": null, "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 3, "action": "view-z", "tagName": "BUTTON", "type": "button", "label": "Z", "disabled": false, "active": "false", "commandReady": null, "iconName": "tool_axis_z", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_z", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 4, "action": "reset-view", "tagName": "BUTTON", "type": "button", "label": "Fit", "disabled": false, "active": "true", "commandReady": null, "iconName": "tool_axis_p", "iconVariant": "active", "gmoccapyButtonId": "rbt_view_p", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 5, "action": "clear-preview", "tagName": "BUTTON", "type": "button", "label": "Clear", "disabled": false, "active": "true", "commandReady": null, "iconName": "toolpath", "iconVariant": "active", "gmoccapyButtonId": "tbtn_view_tool_path", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 6, "action": "select-linuxcnc-gcode-source", "tagName": "SELECT", "type": "", "label": "select source\n \n boat-xyzac.ngc\n \n \n \n boat-xyzbc.ngc\n \n \n \n impeller-7bl-xyzac.ngc\n \n \n \n xyzac_switchkins_test_1.ngc\n \n \n \n xyzac_switchkins_test_2.ngc\n \n \n \n xyzac_switchkins_test_3.ngc\n \n \n \n xyzac_switchkins.ngc\n \n \n \n xyzbc_switchkins.ngc", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 7, "action": "stage-linuxcnc-sources", "tagName": "BUTTON", "type": "button", "label": "Stage", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 8, "action": "mdi-form", "tagName": "FORM", "type": "", "label": "MDI\n \n Run", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 9, "action": "mdi-command", "tagName": "INPUT", "type": "text", "label": "MDI command", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 10, "action": "mdi-submit", "tagName": "BUTTON", "type": "submit", "label": "Run", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 11, "action": "mdi-history", "tagName": "BUTTON", "type": "button", "label": "G0 X0 Y0 Z0", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 12, "action": "mdi-history", "tagName": "BUTTON", "type": "button", "label": "G91 X1", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 13, "action": "mdi-history", "tagName": "BUTTON", "type": "button", "label": "G90", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 14, "action": "mdi-history", "tagName": "BUTTON", "type": "button", "label": "M429", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 15, "action": "mdi-history", "tagName": "BUTTON", "type": "button", "label": "M428", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 16, "action": "mdi-history", "tagName": "BUTTON", "type": "button", "label": "M430", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 17, "action": "estop", "tagName": "BUTTON", "type": "button", "label": "E-STOP", "disabled": false, "active": "false", "commandReady": null, "iconName": "main_switch_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_estop", "nativePanel": "right", "nativeButtonIndex": "0", "halPin": "gmoccapy.v-button.button-0" }, { "index": 18, "action": "power", "tagName": "BUTTON", "type": "button", "label": "POWER", "disabled": false, "active": "false", "commandReady": null, "iconName": "power_off", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_on", "nativePanel": "right", "nativeButtonIndex": "1", "halPin": "gmoccapy.v-button.button-1" }, { "index": 19, "action": "reset", "tagName": "BUTTON", "type": "button", "label": "RESET", "disabled": false, "active": "false", "commandReady": null, "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 20, "action": "mode-auto", "tagName": "BUTTON", "type": "button", "label": "AUTO", "disabled": true, "active": "false", "commandReady": "false", "iconName": "mode_auto_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_auto", "nativePanel": "right", "nativeButtonIndex": "4", "halPin": "gmoccapy.v-button.button-4" }, { "index": 21, "action": "mode-manual", "tagName": "BUTTON", "type": "button", "label": "MANUAL", "disabled": true, "active": "true", "commandReady": "false", "iconName": "mode_manual_active", "iconVariant": "active", "gmoccapyButtonId": "rbt_manual", "nativePanel": "right", "nativeButtonIndex": "2", "halPin": "gmoccapy.v-button.button-2" }, { "index": 22, "action": "mode-jog", "tagName": "BUTTON", "type": "button", "label": "JOG", "disabled": true, "active": "true", "commandReady": "false", "iconName": "mode_user_tabs_active", "iconVariant": "active", "gmoccapyButtonId": "tbtn_user_tabs", "nativePanel": "right", "nativeButtonIndex": "5", "halPin": "gmoccapy.v-button.button-5" }, { "index": 23, "action": "mode-mdi", "tagName": "BUTTON", "type": "button", "label": "MDI", "disabled": true, "active": "false", "commandReady": "false", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": "right", "nativeButtonIndex": "3", "halPin": "gmoccapy.v-button.button-3" }, { "index": 24, "action": "kins-identity", "tagName": "BUTTON", "type": "button", "label": "IDENTITY", "disabled": false, "active": "false", "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 25, "action": "kins-tcp", "tagName": "BUTTON", "type": "button", "label": "TCP", "disabled": false, "active": "true", "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 26, "action": "rapid-override-down", "tagName": "BUTTON", "type": "button", "label": "-", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 27, "action": "rapid-override-up", "tagName": "BUTTON", "type": "button", "label": "+", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 28, "action": "rapid-override-reset", "tagName": "BUTTON", "type": "button", "label": "100", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 29, "action": "feed-override-down", "tagName": "BUTTON", "type": "button", "label": "-", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 30, "action": "feed-override-up", "tagName": "BUTTON", "type": "button", "label": "+", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 31, "action": "feed-override-reset", "tagName": "BUTTON", "type": "button", "label": "100", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 32, "action": "ignore-limits", "tagName": "BUTTON", "type": "button", "label": "Limits", "disabled": false, "active": "false", "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 33, "action": "block-delete", "tagName": "BUTTON", "type": "button", "label": "/ Block", "disabled": false, "active": "false", "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 34, "action": "optional-stop", "tagName": "BUTTON", "type": "button", "label": "M1", "disabled": false, "active": "false", "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 35, "action": "toggle-flood", "tagName": "BUTTON", "type": "button", "label": "Flood", "disabled": true, "active": "false", "commandReady": "false", "iconName": "coolant_flood_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_flood", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 36, "action": "toggle-mist", "tagName": "BUTTON", "type": "button", "label": "Mist", "disabled": true, "active": "false", "commandReady": "false", "iconName": "coolant_mist_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_mist", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 37, "action": "spindle-forward", "tagName": "BUTTON", "type": "button", "label": "FWD", "disabled": true, "active": "false", "commandReady": "false", "iconName": "spindle_right", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_forward", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 38, "action": "spindle-stop", "tagName": "BUTTON", "type": "button", "label": "STOP", "disabled": true, "active": "true", "commandReady": "false", "iconName": "spindle_stop_on", "iconVariant": "active", "gmoccapyButtonId": "rbt_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 39, "action": "spindle-reverse", "tagName": "BUTTON", "type": "button", "label": "REV", "disabled": true, "active": "false", "commandReady": "false", "iconName": "spindle_left", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_reverse", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 40, "action": "spindle-override-down", "tagName": "BUTTON", "type": "button", "label": "-", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 41, "action": "spindle-override-up", "tagName": "BUTTON", "type": "button", "label": "+", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 42, "action": "spindle-override-reset", "tagName": "BUTTON", "type": "button", "label": "100", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 43, "action": "OPEN_FILE", "tagName": "INPUT", "type": "file", "label": "", "disabled": false, "active": null, "commandReady": null, "iconName": null, "iconVariant": null, "gmoccapyButtonId": null, "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 44, "action": "OPEN", "tagName": "BUTTON", "type": "button", "label": "Open", "disabled": false, "active": "false", "commandReady": "true", "iconName": "open_file", "iconVariant": "inactive", "gmoccapyButtonId": "btn_load", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 45, "action": "RELOAD", "tagName": "BUTTON", "type": "button", "label": "Reload", "disabled": false, "active": "false", "commandReady": "true", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 46, "action": "RUN_READY", "tagName": "BUTTON", "type": "button", "label": "Run Ready", "disabled": false, "active": "false", "commandReady": "true", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "ref_all", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 47, "action": "RUN", "tagName": "BUTTON", "type": "button", "label": "Run", "disabled": false, "active": "false", "commandReady": "false", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 48, "action": "STOP", "tagName": "BUTTON", "type": "button", "label": "Stop", "disabled": false, "active": "false", "commandReady": "true", "iconName": "stop", "iconVariant": "inactive", "gmoccapyButtonId": "btn_stop", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 49, "action": "PAUSE", "tagName": "BUTTON", "type": "button", "label": "Pause", "disabled": false, "active": "false", "commandReady": "false", "iconName": "pause", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_pause", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 50, "action": "RESUME", "tagName": "BUTTON", "type": "button", "label": "Resume", "disabled": false, "active": "false", "commandReady": "false", "iconName": "play", "iconVariant": "inactive", "gmoccapyButtonId": "btn_run", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 51, "action": "STEP", "tagName": "BUTTON", "type": "button", "label": "Step", "disabled": false, "active": "false", "commandReady": "false", "iconName": "step", "iconVariant": "inactive", "gmoccapyButtonId": "btn_step", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 52, "action": "HOME", "tagName": "BUTTON", "type": "button", "label": "Home", "disabled": false, "active": "false", "commandReady": "false", "iconName": "ref_all", "iconVariant": "inactive", "gmoccapyButtonId": "btn_homing", "nativePanel": "bottom", "nativeButtonIndex": "0", "halPin": "gmoccapy.h-button.button-0" }, { "index": 53, "action": "JOG_X_NEG", "tagName": "BUTTON", "type": "button", "label": "X-", "disabled": true, "active": "false", "commandReady": "false", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 54, "action": "JOG_X_POS", "tagName": "BUTTON", "type": "button", "label": "X+", "disabled": true, "active": "false", "commandReady": "false", "iconName": "tool_axis_x", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_x", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 55, "action": "JOG_Y_NEG", "tagName": "BUTTON", "type": "button", "label": "Y-", "disabled": true, "active": "false", "commandReady": "false", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 56, "action": "JOG_Y_POS", "tagName": "BUTTON", "type": "button", "label": "Y+", "disabled": true, "active": "false", "commandReady": "false", "iconName": "tool_axis_y", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_view_y", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 57, "action": "MDI_RUN", "tagName": "BUTTON", "type": "button", "label": "MDI", "disabled": true, "active": "false", "commandReady": "false", "iconName": "mode_mdi_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "rbt_mdi", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 58, "action": "SAVE_SESSION", "tagName": "BUTTON", "type": "button", "label": "Save Session", "disabled": false, "active": "false", "commandReady": "true", "iconName": "save", "iconVariant": "inactive", "gmoccapyButtonId": "btn_save_session", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 59, "action": "RESTORE_SESSION", "tagName": "BUTTON", "type": "button", "label": "Restore Session", "disabled": false, "active": "false", "commandReady": "true", "iconName": "refresh", "iconVariant": "inactive", "gmoccapyButtonId": "btn_reload", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 60, "action": "AUDIT_FULL_BOUNDARY", "tagName": "BUTTON", "type": "button", "label": "Audit", "disabled": false, "active": "false", "commandReady": "true", "iconName": "mode_settings_inactive", "iconVariant": "inactive", "gmoccapyButtonId": "tbtn_setup", "nativePanel": null, "nativeButtonIndex": null, "halPin": null }, { "index": 61, "action": "FULL", "tagName": "BUTTON", "type": "button", "label": "Full", "disabled": false, "active": "false", "commandReady": "true", "iconName": "fullscreen_open", "iconVariant": "inactive", "gmoccapyButtonId": "btn_fullscreen", "nativePanel": null, "nativeButtonIndex": null, "halPin": null } ], "actionResults": [ { "action": "RUN", "label": "未上电直接 RUN 应被门禁拦截", "status": "PASS", "checks": [ { "name": "RUN gate blocks when power is off", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":false,\"estopActive\":false,\"taskState\":\"estop-reset\",\"mode\":\"manual\",\"allHomed\":false,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":0,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":false,\"estopActive\":false,\"taskState\":\"estop-reset\",\"mode\":\"manual\",\"allHomed\":false,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":0,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"run blocked: machine must be on\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "mode-auto", "label": "未上电 AUTO 应被门禁拦截", "status": "PASS", "checks": [ { "name": "AUTO gate blocks when power is off", "pass": true, "detail": "{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"mode blocked: machine must be on before AUTO\",\"label\":\"AUTO\",\"iconName\":\"mode_auto_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_auto\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"4\",\"halPin\":\"gmoccapy.v-button.button-4\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "mode-mdi", "label": "未上电 MDI 应被门禁拦截", "status": "PASS", "checks": [ { "name": "MDI gate blocks when power is off", "pass": true, "detail": "{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"mode blocked: machine must be on before MDI\",\"label\":\"MDI\",\"iconName\":\"mode_mdi_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_mdi\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"3\",\"halPin\":\"gmoccapy.v-button.button-3\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "spindle-forward", "label": "未上电主轴正转应被门禁拦截", "status": "PASS", "checks": [ { "name": "Spindle gate blocks when power is off", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":false,\"estopActive\":false,\"taskState\":\"estop-reset\",\"mode\":\"manual\",\"allHomed\":false,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":0,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"run blocked: machine must be on\"},\"button\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"spindle blocked: machine must be on\",\"label\":\"FWD\",\"iconName\":\"spindle_right\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_forward\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "toggle-mist", "label": "未上电冷却应被门禁拦截", "status": "PASS", "checks": [ { "name": "Coolant gate blocks when power is off", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":false,\"estopActive\":false,\"taskState\":\"estop-reset\",\"mode\":\"manual\",\"allHomed\":false,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":0,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"run blocked: machine must be on\"},\"button\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"coolant blocked: machine must be on\",\"label\":\"Mist\",\"iconName\":\"coolant_mist_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_mist\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "power", "label": "POWER 上电", "status": "PASS", "checks": [ { "name": "POWER sets task state ON", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":false,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":0,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL machine power on\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "run blocked: machine must be on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL machine power on" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "run blocked: machine must be on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 2/20 | sample 20 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine power on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "HOME", "label": "HOME 回零", "status": "PASS", "checks": [ { "name": "HOME sets allHomed and keeps MANUAL", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":20,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":null,\"operatorMessage\":\"task/HAL home requested\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": false, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 20, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 20, "motionIndex": 0, "currentVelocityMmPerMin": 0, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL machine power on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 20, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": null, "operatorMessage": "task/HAL home requested" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 0.0 | cycle 2/20 | sample 20 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine power on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 3/30 | sample 30 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine homed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "mode-auto", "label": "AUTO 模式", "status": "PASS", "checks": [ { "name": "AUTO active and MANUAL inactive", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":-84.019,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":40,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":40,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode auto\"},\"buttons\":{\"select-profile\":{\"exists\":true,\"tagName\":\"SELECT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"XYZAC xyzac-trt\\n \\n XYZBC xyzbc-trt\\n \\n XYZAB gmoccapy-xyzab\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"view-x\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"View X\",\"label\":\"X\",\"iconName\":\"tool_axis_x\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_x\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"view-y\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"View Y\",\"label\":\"Y\",\"iconName\":\"tool_axis_y\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_y\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"view-z\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"View Z\",\"label\":\"Z\",\"iconName\":\"tool_axis_z\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_z\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"reset-view\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Fit perspective\",\"label\":\"Fit\",\"iconName\":\"tool_axis_p\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"rbt_view_p\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"clear-preview\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Clear preview path\",\"label\":\"Clear\",\"iconName\":\"toolpath\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"tbtn_view_tool_path\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"select-linuxcnc-gcode-source\":{\"exists\":true,\"tagName\":\"SELECT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"select source\\n \\n boat-xyzac.ngc\\n \\n \\n \\n boat-xyzbc.ngc\\n \\n \\n \\n impeller-7bl-xyzac.ngc\\n \\n \\n \\n xyzac_switchkins_test_1.ngc\\n \\n \\n \\n xyzac_switchkins_test_2.ngc\\n \\n \\n \\n xyzac_switchkins_test_3.ngc\\n \\n \\n \\n xyzac_switchkins.ngc\\n \\n \\n \\n xyzbc_switchkins.ngc\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"stage-linuxcnc-sources\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"Stage\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-form\":{\"exists\":true,\"tagName\":\"FORM\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"MDI\\n \\n Run\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-command\":{\"exists\":true,\"tagName\":\"INPUT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"MDI command\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-submit\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"Run\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-history\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"G0 X0 Y0 Z0\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"estop\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Estop the machine / F1\",\"label\":\"E-STOP\",\"iconName\":\"main_switch_off\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_estop\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"0\",\"halPin\":\"gmoccapy.v-button.button-0\"},\"power\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Turn the machine on/off / F2\",\"label\":\"POWER\",\"iconName\":\"power_on\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"tbtn_on\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"1\",\"halPin\":\"gmoccapy.v-button.button-1\"},\"reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Reset estop and return machine off\",\"label\":\"RESET\",\"iconName\":\"mode_settings_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_setup\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mode-auto\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Enter auto mode\",\"label\":\"AUTO\",\"iconName\":\"mode_auto_active\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"rbt_auto\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"4\",\"halPin\":\"gmoccapy.v-button.button-4\"},\"mode-manual\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Enter manual mode\",\"label\":\"MANUAL\",\"iconName\":\"mode_manual_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_manual\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"2\",\"halPin\":\"gmoccapy.v-button.button-2\"},\"mode-jog\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Manual jog page\",\"label\":\"JOG\",\"iconName\":\"mode_user_tabs_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_user_tabs\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"5\",\"halPin\":\"gmoccapy.v-button.button-5\"},\"mode-mdi\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Enter MDI mode\",\"label\":\"MDI\",\"iconName\":\"mode_mdi_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_mdi\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"3\",\"halPin\":\"gmoccapy.v-button.button-3\"},\"kins-identity\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"IDENTITY\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"kins-tcp\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"TCP\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"rapid-override-down\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"-\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"rapid-override-up\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"+\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"rapid-override-reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"100\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"feed-override-down\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"-\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"feed-override-up\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"+\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"feed-override-reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"100\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"ignore-limits\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"Limits\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"block-delete\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"/ Block\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"optional-stop\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"M1\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"toggle-flood\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Flood coolant\",\"label\":\"Flood\",\"iconName\":\"coolant_flood_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_flood\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"toggle-mist\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Mist coolant\",\"label\":\"Mist\",\"iconName\":\"coolant_mist_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_mist\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-forward\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Spindle forward\",\"label\":\"FWD\",\"iconName\":\"spindle_right\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_forward\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-stop\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Spindle stop\",\"label\":\"STOP\",\"iconName\":\"spindle_stop_on\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"rbt_stop\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-reverse\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Spindle reverse\",\"label\":\"REV\",\"iconName\":\"spindle_left\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_reverse\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-override-down\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"-\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-override-up\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"+\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-override-reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"100\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"OPEN_FILE\":{\"exists\":true,\"tagName\":\"INPUT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"OPEN\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Open\",\"label\":\"Open\",\"iconName\":\"open_file\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_load\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RELOAD\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Reload\",\"label\":\"Reload\",\"iconName\":\"refresh\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_reload\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RUN_READY\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Run Ready\",\"label\":\"Run Ready\",\"iconName\":\"ref_all\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"ref_all\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RUN\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Run\",\"label\":\"Run\",\"iconName\":\"play\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_run\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"STOP\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Stop\",\"label\":\"Stop\",\"iconName\":\"stop\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_stop\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"PAUSE\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Pause\",\"label\":\"Pause\",\"iconName\":\"pause\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_pause\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RESUME\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"resume blocked: interpreter is not paused\",\"label\":\"Resume\",\"iconName\":\"play\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_run\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"STEP\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Step\",\"label\":\"Step\",\"iconName\":\"step\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_step\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"HOME\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"home blocked: switch to manual mode first\",\"label\":\"Home\",\"iconName\":\"ref_all\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"btn_homing\",\"nativePanel\":\"bottom\",\"nativeButtonIndex\":\"0\",\"halPin\":\"gmoccapy.h-button.button-0\"},\"JOG_X_NEG\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"false\",\"title\":\"jog blocked: switch to manual mode first\",\"label\":\"X-\",\"iconName\":\"tool_axis_x\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_x\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"JOG_X_POS\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"false\",\"title\":\"jog blocked: switch to manual mode first\",\"label\":\"X+\",\"iconName\":\"tool_axis_x\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_x\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"JOG_Y_NEG\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"false\",\"title\":\"jog blocked: switch to manual mode first\",\"label\":\"Y-\",\"iconName\":\"tool_axis_y\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_y\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"JOG_Y_POS\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"false\",\"title\":\"jog blocked: switch to manual mode first\",\"label\":\"Y+\",\"iconName\":\"tool_axis_y\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_y\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"MDI_RUN\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"false\",\"title\":\"MDI blocked: switch to MDI mode first\",\"label\":\"MDI\",\"iconName\":\"mode_mdi_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_mdi\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"SAVE_SESSION\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Save Session\",\"label\":\"Save Session\",\"iconName\":\"save\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_save_session\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RESTORE_SESSION\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Restore Session\",\"label\":\"Restore Session\",\"iconName\":\"refresh\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_reload\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"AUDIT_FULL_BOUNDARY\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Audit\",\"label\":\"Audit\",\"iconName\":\"mode_settings_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_setup\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"FULL\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Full\",\"label\":\"Full\",\"iconName\":\"fullscreen_open\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_fullscreen\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null}}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 30, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 30, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL machine homed" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 40, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 40, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode auto" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 3/30 | sample 30 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine homed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 4/40 | sample 40 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode auto" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "mode-manual", "label": "MANUAL 模式", "status": "PASS", "checks": [ { "name": "MANUAL active and AUTO inactive", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":-84.019,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":50,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":50,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode manual\"},\"buttons\":{\"select-profile\":{\"exists\":true,\"tagName\":\"SELECT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"XYZAC xyzac-trt\\n \\n XYZBC xyzbc-trt\\n \\n XYZAB gmoccapy-xyzab\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"view-x\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"View X\",\"label\":\"X\",\"iconName\":\"tool_axis_x\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_x\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"view-y\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"View Y\",\"label\":\"Y\",\"iconName\":\"tool_axis_y\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_y\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"view-z\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"View Z\",\"label\":\"Z\",\"iconName\":\"tool_axis_z\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_z\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"reset-view\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Fit perspective\",\"label\":\"Fit\",\"iconName\":\"tool_axis_p\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"rbt_view_p\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"clear-preview\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Clear preview path\",\"label\":\"Clear\",\"iconName\":\"toolpath\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"tbtn_view_tool_path\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"select-linuxcnc-gcode-source\":{\"exists\":true,\"tagName\":\"SELECT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"select source\\n \\n boat-xyzac.ngc\\n \\n \\n \\n boat-xyzbc.ngc\\n \\n \\n \\n impeller-7bl-xyzac.ngc\\n \\n \\n \\n xyzac_switchkins_test_1.ngc\\n \\n \\n \\n xyzac_switchkins_test_2.ngc\\n \\n \\n \\n xyzac_switchkins_test_3.ngc\\n \\n \\n \\n xyzac_switchkins.ngc\\n \\n \\n \\n xyzbc_switchkins.ngc\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"stage-linuxcnc-sources\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"Stage\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-form\":{\"exists\":true,\"tagName\":\"FORM\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"MDI\\n \\n Run\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-command\":{\"exists\":true,\"tagName\":\"INPUT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"MDI command\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-submit\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"Run\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mdi-history\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"G0 X0 Y0 Z0\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"estop\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Estop the machine / F1\",\"label\":\"E-STOP\",\"iconName\":\"main_switch_off\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_estop\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"0\",\"halPin\":\"gmoccapy.v-button.button-0\"},\"power\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Turn the machine on/off / F2\",\"label\":\"POWER\",\"iconName\":\"power_on\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"tbtn_on\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"1\",\"halPin\":\"gmoccapy.v-button.button-1\"},\"reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"Reset estop and return machine off\",\"label\":\"RESET\",\"iconName\":\"mode_settings_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_setup\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"mode-auto\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Enter auto mode\",\"label\":\"AUTO\",\"iconName\":\"mode_auto_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_auto\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"4\",\"halPin\":\"gmoccapy.v-button.button-4\"},\"mode-manual\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Enter manual mode\",\"label\":\"MANUAL\",\"iconName\":\"mode_manual_active\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"rbt_manual\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"2\",\"halPin\":\"gmoccapy.v-button.button-2\"},\"mode-jog\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Manual jog page\",\"label\":\"JOG\",\"iconName\":\"mode_user_tabs_active\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"tbtn_user_tabs\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"5\",\"halPin\":\"gmoccapy.v-button.button-5\"},\"mode-mdi\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Enter MDI mode\",\"label\":\"MDI\",\"iconName\":\"mode_mdi_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_mdi\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"3\",\"halPin\":\"gmoccapy.v-button.button-3\"},\"kins-identity\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"IDENTITY\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"kins-tcp\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"TCP\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"rapid-override-down\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"-\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"rapid-override-up\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"+\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"rapid-override-reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"100\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"feed-override-down\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"-\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"feed-override-up\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"+\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"feed-override-reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"100\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"ignore-limits\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"Limits\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"block-delete\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"/ Block\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"optional-stop\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"M1\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"toggle-flood\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Flood coolant\",\"label\":\"Flood\",\"iconName\":\"coolant_flood_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_flood\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"toggle-mist\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Mist coolant\",\"label\":\"Mist\",\"iconName\":\"coolant_mist_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_mist\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-forward\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Spindle forward\",\"label\":\"FWD\",\"iconName\":\"spindle_right\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_forward\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-stop\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Spindle stop\",\"label\":\"STOP\",\"iconName\":\"spindle_stop_on\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"rbt_stop\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-reverse\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Spindle reverse\",\"label\":\"REV\",\"iconName\":\"spindle_left\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_reverse\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-override-down\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"-\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-override-up\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"+\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"spindle-override-reset\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"100\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"OPEN_FILE\":{\"exists\":true,\"tagName\":\"INPUT\",\"disabled\":false,\"active\":null,\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"\",\"label\":\"\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"OPEN\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Open\",\"label\":\"Open\",\"iconName\":\"open_file\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_load\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RELOAD\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Reload\",\"label\":\"Reload\",\"iconName\":\"refresh\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_reload\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RUN_READY\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Run Ready\",\"label\":\"Run Ready\",\"iconName\":\"ref_all\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"ref_all\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RUN\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"run blocked: switch to auto mode first\",\"label\":\"Run\",\"iconName\":\"play\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_run\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"STOP\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Stop\",\"label\":\"Stop\",\"iconName\":\"stop\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_stop\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"PAUSE\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"pause blocked: task mode must be auto or MDI\",\"label\":\"Pause\",\"iconName\":\"pause\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_pause\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RESUME\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"resume blocked: task mode must be auto or MDI\",\"label\":\"Resume\",\"iconName\":\"play\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_run\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"STEP\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"true\",\"title\":\"step blocked: switch to auto mode first\",\"label\":\"Step\",\"iconName\":\"step\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_step\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"HOME\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Home\",\"label\":\"Home\",\"iconName\":\"ref_all\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"btn_homing\",\"nativePanel\":\"bottom\",\"nativeButtonIndex\":\"0\",\"halPin\":\"gmoccapy.h-button.button-0\"},\"JOG_X_NEG\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"X-\",\"label\":\"X-\",\"iconName\":\"tool_axis_x\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_x\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"JOG_X_POS\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"X+\",\"label\":\"X+\",\"iconName\":\"tool_axis_x\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_x\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"JOG_Y_NEG\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Y-\",\"label\":\"Y-\",\"iconName\":\"tool_axis_y\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_y\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"JOG_Y_POS\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Y+\",\"label\":\"Y+\",\"iconName\":\"tool_axis_y\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_view_y\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"MDI_RUN\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":\"false\",\"ariaDisabled\":\"false\",\"title\":\"MDI blocked: switch to MDI mode first\",\"label\":\"MDI\",\"iconName\":\"mode_mdi_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"rbt_mdi\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"SAVE_SESSION\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Save Session\",\"label\":\"Save Session\",\"iconName\":\"save\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_save_session\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"RESTORE_SESSION\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Restore Session\",\"label\":\"Restore Session\",\"iconName\":\"refresh\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_reload\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"AUDIT_FULL_BOUNDARY\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Audit\",\"label\":\"Audit\",\"iconName\":\"mode_settings_inactive\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"tbtn_setup\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"FULL\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"false\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Full\",\"label\":\"Full\",\"iconName\":\"fullscreen_open\",\"iconVariant\":\"inactive\",\"gmoccapyButtonId\":\"btn_fullscreen\",\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null}}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 40, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 40, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode auto" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 50, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 50, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 4/40 | sample 40 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode auto" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 5/50 | sample 50 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "mode-jog", "label": "JOG 入口归入 MANUAL 点动页", "status": "PASS", "checks": [ { "name": "JOG button keeps manual jog page active", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":50,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":50,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC task/HAL command running\"},\"buttons\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Manual jog page\",\"label\":\"JOG\",\"iconName\":\"mode_user_tabs_active\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"tbtn_user_tabs\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"5\",\"halPin\":\"gmoccapy.v-button.button-5\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 50, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 50, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 60, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 60, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 5/50 | sample 50 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 6/60 | sample 60 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "mode-mdi", "label": "MDI 模式", "status": "PASS", "checks": [ { "name": "MDI active", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"mdi\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"mdi\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":-84.019,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":70,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":70,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode mdi\"},\"buttons\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":false,\"active\":\"true\",\"commandReady\":\"true\",\"ariaDisabled\":\"false\",\"title\":\"Enter MDI mode\",\"label\":\"MDI\",\"iconName\":\"mode_mdi_active\",\"iconVariant\":\"active\",\"gmoccapyButtonId\":\"rbt_mdi\",\"nativePanel\":\"right\",\"nativeButtonIndex\":\"3\",\"halPin\":\"gmoccapy.v-button.button-3\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 60, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 60, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "mdi", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 70, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 70, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode mdi" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 6/60 | sample 60 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "running | F 3600.0 | cycle 7/70 | sample 70 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode mdi" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "mode-manual", "label": "返回 MANUAL", "status": "PASS", "checks": [ { "name": "Back to MANUAL", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":-84.019,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":80,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":80,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode manual\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "mdi", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 70, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 70, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode mdi" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "running | F 3600.0 | cycle 7/70 | sample 70 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode mdi" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "kins-tcp", "label": "右侧 TCP 打开 RTCP", "status": "PASS", "checks": [ { "name": "TCP kinematics enables RTCP", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":80,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":80,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"kinematics tcp-xyzac\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "kinematics tcp-xyzac" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "kinematics tcp-xyzac" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "kins-identity", "label": "右侧 IDENTITY 关闭 RTCP", "status": "PASS", "checks": [ { "name": "IDENTITY disables RTCP", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":80,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":80,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"kinematics identity\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"off\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "kinematics tcp-xyzac" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "kinematics identity" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "kinematics tcp-xyzac" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "kinematics identity" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "estop", "label": "E-STOP 急停", "status": "PASS", "checks": [ { "name": "E-STOP drops power/spindle/coolant", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"estopped\",\"activeLine\":1,\"machine\":{\"powerOn\":false,\"estopActive\":true,\"taskState\":\"estop\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":80,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":80,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"emergency stop active\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "kinematics identity" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "estopped", "activeLine": 1, "machine": { "powerOn": false, "estopActive": true, "taskState": "estop", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "emergency stop active" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "kinematics identity" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "emergency stop active" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "power", "label": "急停后 POWER 被阻止", "status": "PASS", "checks": [ { "name": "POWER is blocked until RESET after E-STOP", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"estopped\",\"activeLine\":1,\"machine\":{\"powerOn\":false,\"estopActive\":true,\"taskState\":\"estop\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":80,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":80,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"power on blocked: reset estop first\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "estopped", "activeLine": 1, "machine": { "powerOn": false, "estopActive": true, "taskState": "estop", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "emergency stop active" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "estopped", "activeLine": 1, "machine": { "powerOn": false, "estopActive": true, "taskState": "estop", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "power on blocked: reset estop first" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "emergency stop active" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "power on blocked: reset estop first" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "reset", "label": "RESET 清除急停", "status": "PASS", "checks": [ { "name": "RESET clears estop and leaves power off", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":false,\"estopActive\":false,\"taskState\":\"estop-reset\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":80,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":80,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"estop reset; machine off\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "estopped", "activeLine": 1, "machine": { "powerOn": false, "estopActive": true, "taskState": "estop", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "power on blocked: reset estop first" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "estop reset; machine off" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "power on blocked: reset estop first" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "estop reset; machine off" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "power", "label": "RESET 后重新上电", "status": "PASS", "checks": [ { "name": "POWER works after RESET", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":80,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":80,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL machine power on\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": false, "estopActive": false, "taskState": "estop-reset", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "estop reset; machine off" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 80, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 80, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL machine power on" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "estop reset; machine off" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 9/90 | sample 90 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine power on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "HOME", "label": "RESET 后重新回零", "status": "PASS", "checks": [ { "name": "HOME works after RESET", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"not-saved\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":90,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":null,\"operatorMessage\":\"task/HAL home requested\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 90, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 90, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL machine power on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 90, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": null, "operatorMessage": "task/HAL home requested" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 9/90 | sample 90 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine power on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine homed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "select-profile", "label": "切换到 xyzbc-trt 轮廓", "status": "PASS", "checks": [ { "name": "Profile switched to xyzbc-trt", "pass": true, "detail": "{\"machineProfile\":\"xyzbc-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":100,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":100,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC kinematics xyzbc-trt worker ready\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "not-saved", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 100, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL machine homed" }, "after": { "machineProfile": "xyzbc-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 100, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "not-saved / - / storage pending / - / -", "operatorMessage": "task/HAL machine homed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "select-profile", "label": "切换到 reference-only gmoccapy-xyzab", "status": "PASS", "checks": [ { "name": "Profile switched to gmoccapy-xyzab", "pass": true, "detail": "{\"machineProfile\":\"gmoccapy-xyzab\",\"activeProgram\":\"linuxcnc/nc_files/3D_Chips.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":100,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":100,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC INI loaded linuxcnc/configs/sim/gmoccapy/gmoccapy_XYZAB.ini\"}" } ], "error": null, "before": { "machineProfile": "xyzbc-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 100, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "after": { "machineProfile": "gmoccapy-xyzab", "activeProgram": "linuxcnc/nc_files/3D_Chips.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "error", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 100, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "machine file staging error: missing vendored sim-config file: configs/sim/axis/vismach/5axis/table-rotary-tilting/gmoccapy_XYZAB.ini" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "linuxcnc/nc_files/3D_Chips.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "machine file staging error: missing vendored sim-config file: configs/sim/axis/vismach/5axis/table-rotary-tilting/gmoccapy_XYZAB.ini" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "kins-tcp", "label": "reference-only profile 的 TCP 禁用", "status": "PASS", "checks": [ { "name": "TCP stays disabled for reference-only profile", "pass": true, "detail": "{\"before\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"false\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"gmoccapy-xyzab is trivkins reference only\",\"label\":\"TCP\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"after\":{\"exists\":true,\"tagName\":\"BUTTON\",\"disabled\":true,\"active\":\"true\",\"commandReady\":null,\"ariaDisabled\":null,\"title\":\"gmoccapy-xyzab is trivkins reference only\",\"label\":\"TCP\",\"iconName\":null,\"iconVariant\":null,\"gmoccapyButtonId\":null,\"nativePanel\":null,\"nativeButtonIndex\":null,\"halPin\":null},\"state\":{\"machineProfile\":\"gmoccapy-xyzab\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":43,\"y\":0,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":43,\"y\":0,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":43,\"y\":0,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":1868,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":100,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":null,\"operatorMessage\":\"LinuxCNC interpreter running program\"}}" } ], "error": null, "before": { "machineProfile": "gmoccapy-xyzab", "activeProgram": "linuxcnc/nc_files/3D_Chips.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "error", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 100, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "machine file staging error: missing vendored sim-config file: configs/sim/axis/vismach/5axis/table-rotary-tilting/gmoccapy_XYZAB.ini" }, "after": { "machineProfile": "gmoccapy-xyzab", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-interpreter-wasm", "runState": "idle", "activeLine": 9, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": -84.019, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 30 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-tp-runtime-sample", "line": 10, "sampleIndex": 0, "motionIndex": 1, "currentVelocityMmPerMin": 30, "axisPose": { "x": 0, "y": 0, "z": 0.00025, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC interpreter motion events 2, switchkins M428/M429" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "linuxcnc/nc_files/3D_Chips.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "machine file staging error: missing vendored sim-config file: configs/sim/axis/vismach/5axis/table-rotary-tilting/gmoccapy_XYZAB.ini" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 10, "activeRowLine": 10, "activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC interpreter motion events 2, switchkins M428/M429" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "select-profile", "label": "切回 xyzac-trt 轮廓", "status": "PASS", "checks": [ { "name": "Profile switched to xyzac-trt", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC kinematics xyzac-trt worker ready\"}" } ], "error": null, "before": { "machineProfile": "gmoccapy-xyzab", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-interpreter-wasm", "runState": "idle", "activeLine": 9, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": -84.019, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 30 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 100, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-tp-runtime-sample", "line": 10, "sampleIndex": 0, "motionIndex": 1, "currentVelocityMmPerMin": 30, "axisPose": { "x": 0, "y": 0, "z": 0.00025, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC interpreter motion events 2, switchkins M428/M429" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC kinematics xyzac-trt profile frame refreshed" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 10, "activeRowLine": 10, "activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC interpreter motion events 2, switchkins M428/M429" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC kinematics xyzac-trt profile frame refreshed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "view-x", "label": "预览 X 视图", "status": "PASS", "checks": [ { "name": "X view updates canvas dataset", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"x\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":null,\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"preview view x\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"x\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC machine files staged 18" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "x", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview view x" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC machine files staged 18" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview view x" }, "canvas": { "threeReady": "true", "threeSelectedView": "x", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "view-y", "label": "预览 Y 视图", "status": "PASS", "checks": [ { "name": "Y view updates canvas dataset", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"y\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":null,\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"preview view y\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"y\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "x", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview view x" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "y", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview view y" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview view x" }, "canvas": { "threeReady": "true", "threeSelectedView": "x", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview view y" }, "canvas": { "threeReady": "true", "threeSelectedView": "y", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "view-z", "label": "预览 Z 视图", "status": "PASS", "checks": [ { "name": "Z view updates canvas dataset", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"z\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":null,\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"preview view z\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"z\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "y", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview view y" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "z", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview view z" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview view y" }, "canvas": { "threeReady": "true", "threeSelectedView": "y", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview view z" }, "canvas": { "threeReady": "true", "threeSelectedView": "z", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "reset-view", "label": "预览 Fit/复位视图", "status": "PASS", "checks": [ { "name": "Reset view returns to iso", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":null,\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"preview fit to program\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "z", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview view z" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview fit to program" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview view z" }, "canvas": { "threeReady": "true", "threeSelectedView": "z", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview fit to program" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "clear-preview", "label": "清除刀路预览", "status": "PASS", "checks": [ { "name": "Clear preview removes path points", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":0,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":null,\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":1,\"sampleIndex\":10,\"motionIndex\":0,\"currentVelocityMmPerMin\":3600,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"preview path cleared\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"0\",\"threeExecutedPathPoints\":\"0\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"null\",\"threeCurrentSegmentHighlight\":\"pending\",\"threeRapidFeedVisualDistinction\":\"pending\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"0\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"0\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview fit to program" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 0, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview path cleared" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview fit to program" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview path cleared" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "0", "threeExecutedPathPoints": "0", "threeRtcpState": "on" } } }, { "action": "RELOAD", "label": "Reload 恢复预览路径", "status": "PASS", "checks": [ { "name": "Reload restores toolpath preview points", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":1868,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":null,\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":null,\"operatorMessage\":\"program reloaded\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0.043,\\\"y\\\":-0.032,\\\"z\\\":-0.011}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":43,\\\"y\\\":-32.15,\\\"z\\\":-11.306,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 0, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "preview path cleared" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 1868, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": null, "operatorMessage": "program reloaded" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "preview path cleared" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "0", "threeExecutedPathPoints": "0", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "program reloaded" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "stage-linuxcnc-sources", "label": "Stage LinuxCNC source", "status": "PASS", "checks": [ { "name": "Stage exposes LinuxCNC G-code sources", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":43,\"y\":-32.15,\"z\":-95.325,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":1868,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":null,\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":null,\"operatorMessage\":\"LinuxCNC machine files staged 18\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 1868, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": null, "operatorMessage": "program reloaded" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 1868, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": null, "operatorMessage": "LinuxCNC machine files staged 18" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "program reloaded" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC machine files staged 18" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "select-linuxcnc-gcode-source", "label": "选择第一个 LinuxCNC 5-axis G-code source", "status": "PASS", "checks": [ { "name": "Selected LinuxCNC source has interpreter preview", "pass": true, "detail": "{\"sourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"programSource\":\"linuxcnc-vendored-5axis-gcode\",\"programExecutionSourceMode\":\"linuxcnc-interpreter-wasm\",\"runState\":\"idle\",\"activeLine\":9,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":-84.019,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":30},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":2,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-tp-runtime-sample\",\"line\":10,\"sampleIndex\":0,\"motionIndex\":1,\"currentVelocityMmPerMin\":30,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0.00025,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC interpreter motion events 2, switchkins M428/M429\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"2\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.005},\\\"maxSpan\\\":0.005}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"2\",\"threeFeedPathPoints\":\"0\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"2\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 43, "y": -32.15, "z": -11.306, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 1868, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": null, "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": null, "operatorMessage": "LinuxCNC machine files staged 18" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-interpreter-wasm", "runState": "idle", "activeLine": 9, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 30 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-tp-runtime-sample", "line": 10, "sampleIndex": 0, "motionIndex": 1, "currentVelocityMmPerMin": 30, "axisPose": { "x": 0, "y": 0, "z": 0.00025, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC interpreter motion events 2, switchkins M428/M429" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC machine files staged 18" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 10, "activeRowLine": 10, "activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC interpreter motion events 2, switchkins M428/M429" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "OPEN", "label": "Open 上传本地 G-code fixture", "status": "PASS", "checks": [ { "name": "OPEN loads local program and preview", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"idle\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":43,\"y\":-32.15,\"z\":-95.325,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":3600},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":7,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":null,\"operatorMessage\":\"LinuxCNC interpreter running program\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"3\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":5,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"on\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0.005,\\\"y\\\":0.005,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0.01,\\\"y\\\":0.01,\\\"z\\\":0.006},\\\"maxSpan\\\":0.01}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"1\",\"threeFeedPathPoints\":\"2\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"1\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 2, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 10, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-interpreter-wasm", "runState": "idle", "activeLine": 3, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 30 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-tp-runtime-sample", "line": 3, "sampleIndex": 0, "motionIndex": 0, "currentVelocityMmPerMin": 30, "axisPose": { "x": 0, "y": 0, "z": 0.00025, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC interpreter motion events 3" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "programSource": "linuxcnc-vendored-5axis-gcode", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "2", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 3, "activeRowLine": 3, "activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC interpreter motion events 3" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "RUN_READY", "label": "Run Ready 一键准备", "status": "PASS", "checks": [ { "name": "Run Ready powers on, homes, enters AUTO, and opens a staged source", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-interpreter-wasm\",\"runState\":\"idle\",\"activeLine\":3,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":5,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":5,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":5,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"tcp-xyzac\",\"rtcpState\":\"on\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":30},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":10,\"activeLine\":1,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-tp-runtime-sample\",\"line\":3,\"sampleIndex\":0,\"motionIndex\":0,\"currentVelocityMmPerMin\":30,\"axisPose\":{\"x\":0,\"y\":0,\"z\":0.00025,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC interpreter motion events 3\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-interpreter-wasm", "runState": "idle", "activeLine": 3, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 30 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-tp-runtime-sample", "line": 3, "sampleIndex": 0, "motionIndex": 0, "currentVelocityMmPerMin": 30, "axisPose": { "x": 0, "y": 0, "z": 0.00025, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC interpreter motion events 3" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-interpreter-wasm", "runState": "idle", "activeLine": 3, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 5, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 30 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 10, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-tp-runtime-sample", "line": 3, "sampleIndex": 0, "motionIndex": 0, "currentVelocityMmPerMin": 30, "axisPose": { "x": 0, "y": 0, "z": 0.00025, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC interpreter motion events 3" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 3, "activeRowLine": 3, "activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC interpreter motion events 3" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 3, "activeRowLine": 3, "activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } } }, { "action": "RUN", "label": "RUN 执行程序", "status": "PASS", "checks": [ { "name": "RUN produces Task/HAL runtime feedback and executed path", "pass": true, "detail": "{\"state\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"running\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"reading\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":3.67183,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":3.67183,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":3.67183,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":440,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":440,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":3.67183,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL status tick 7\"},\"canvas\":{\"fiveAxisCanvas\":\"true\",\"engine\":\"three.js r183\",\"threeReady\":\"true\",\"threeRevision\":\"183\",\"threePathPoints\":\"3\",\"threeExecutedPathPoints\":\"1\",\"threeSceneObjects\":\"20\",\"threeToolhead\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":0.003}\",\"threeSceneUnits\":\"m\",\"threeLinearUnits\":\"mm\",\"threeLinearUnitScaleToMeters\":\"0.001\",\"threeToolAxis\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":1}\",\"threeTcpPose\":\"{\\\"x\\\":0,\\\"y\\\":0,\\\"z\\\":3.34,\\\"a\\\":0,\\\"c\\\":0}\",\"threeRtcpState\":\"off\",\"threeSelectedView\":\"iso\",\"threeFrameApi\":\"web-rtcp-5axis-motion-frame\",\"threeRenderer\":\"webgl\",\"threeSceneMode\":\"program-preview-and-tool-execution\",\"threePreviewScope\":\"machine-reference-and-toolpath\",\"threeMachineReferenceModel\":\"webgl-five-axis-reference\",\"threeCameraControls\":\"orbit-pan-zoom\",\"threeProgramPreviewSource\":\"linuxcnc-interpreter-wasm\",\"threeToolExecutionMarker\":\"true\",\"threeTcpMarker\":\"sphere\",\"threeToolAxisMarker\":\"line\",\"threeToolpathPreviewSource\":\"linuxcnc_interpreter_canonical_motion\",\"threeToolExecutionTraceSource\":\"linuxcnc_tp_samples_or_task_motion_hal_feedback\",\"threePathFitBounds\":\"ok\",\"threePathBoundsMeters\":\"{\\\"center\\\":{\\\"x\\\":0.005,\\\"y\\\":0.005,\\\"z\\\":0.002},\\\"size\\\":{\\\"x\\\":0.01,\\\"y\\\":0.01,\\\"z\\\":0.006},\\\"maxSpan\\\":0.01}\",\"threeCurrentSegmentHighlight\":\"ok\",\"threeRapidFeedVisualDistinction\":\"ok\",\"threeNoGcodeSemanticsGeneration\":\"ok\",\"threeRapidPathPoints\":\"1\",\"threeFeedPathPoints\":\"2\",\"threeArcPathPoints\":\"0\",\"threeCurrentSegmentPoints\":\"1\",\"threeCurrentSegmentType\":\"STRAIGHT_TRAVERSE\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "idle", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 }, "kinsType": "tcp-xyzac", "rtcpState": "on", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 3600 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 40, "activeLine": 1, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 1, "sampleIndex": 40, "motionIndex": 0, "currentVelocityMmPerMin": 3600, "axisPose": { "x": 0, "y": 0, "z": 0, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "RUN ready: power on, homed, auto mode" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "running", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "reading", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 3.33979, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 3.33979, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 3.33979, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 540, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 540, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 3.33979, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL status tick 9" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 1, "activeRowLine": 1, "activeExecution": "idle | F 3600.0 | cycle 4/40 | sample 40 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "RUN ready: power on, homed, auto mode" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "on" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "running | F 200.0 | cycle 59/590 | sample 590 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL status tick 10" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "PAUSE", "label": "PAUSE 暂停", "status": "PASS", "checks": [ { "name": "PAUSE sets paused state", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"paused\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"paused\",\"taskPaused\":true,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":2.34366,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":2.34366,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":2.34366,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":850,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":850,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":2.34366,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL program paused\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "running", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "reading", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 790, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 790, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 2.50968, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL status tick 14" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "paused", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "paused", "taskPaused": true, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 850, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 850, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL program paused" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "running | F 200.0 | cycle 84/840 | sample 840 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL status tick 15" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "paused | F 200.0 | cycle 85/850 | sample 850 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL program paused" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "RESUME", "label": "RESUME 继续", "status": "PASS", "checks": [ { "name": "RESUME returns to running", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"running\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"reading\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":2.31046,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":2.31046,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":2.31046,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":860,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":860,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":2.31046,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL program resumed\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "paused", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "paused", "taskPaused": true, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 850, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 850, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 2.34366, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL program paused" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "running", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "reading", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 2.31046, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 2.31046, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 2.31046, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 860, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 860, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 2.31046, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL program resumed" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "paused | F 200.0 | cycle 85/850 | sample 850 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL program paused" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "running | F 200.0 | cycle 91/910 | sample 910 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL status tick 1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "PAUSE", "label": "STEP 前暂停", "status": "PASS", "checks": [ { "name": "Paused before STEP", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"paused\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"paused\",\"taskPaused\":true,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":970,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":970,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL program paused\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "running", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "reading", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 2.14444, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 2.14444, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 2.14444, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 910, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 910, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 2.14444, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL status tick 1" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "paused", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "paused", "taskPaused": true, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 970, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 970, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL program paused" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "running | F 200.0 | cycle 91/910 | sample 910 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL status tick 1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "paused | F 200.0 | cycle 97/970 | sample 970 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL program paused" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "STEP", "label": "STEP 单步", "status": "PASS", "checks": [ { "name": "STEP performs one task/HAL step", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"paused\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"paused\",\"taskPaused\":true,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":970,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":970,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.97842,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL program paused\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"paused\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"paused\",\"taskPaused\":true,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":980,\"activeLine\":4,\"singleStepping\":true},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":980,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL stepped one cycle\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "paused", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "paused", "taskPaused": true, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 970, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 970, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.97842, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL program paused" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "paused", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "paused", "taskPaused": true, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 980, "activeLine": 4, "singleStepping": true }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 980, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL stepped one cycle" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "paused | F 200.0 | cycle 97/970 | sample 970 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL program paused" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "paused | F 200.0 | cycle 98/980 | sample 980 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL stepped one cycle" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "STOP", "label": "STOP 停止", "status": "PASS", "checks": [ { "name": "STOP aborts motion and returns idle", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"auto\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":0},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":980,\"activeLine\":4,\"singleStepping\":true},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":980,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL stop requested\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "paused", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "paused", "taskPaused": true, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 980, "activeLine": 4, "singleStepping": true }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 980, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL stepped one cycle" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 980, "activeLine": 4, "singleStepping": true }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 980, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL stop requested" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "paused | F 200.0 | cycle 98/980 | sample 980 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL stepped one cycle" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 99/990 | sample 990 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL program stopped" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "mode-manual", "label": "切到 MANUAL 准备点动", "status": "PASS", "checks": [ { "name": "Manual mode before jog", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1000,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1000,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode manual\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "auto", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 0 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 990, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 990, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL program stopped" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1000, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1000, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 99/990 | sample 990 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL program stopped" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 100/1000 | sample 1000 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "JOG_X_NEG", "label": "JOG_X_NEG 点动", "status": "PASS", "checks": [ { "name": "JOG_X_NEG changes X axis", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1000,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1000,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode manual\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"jogging\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1000,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1000,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL jog X -1\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1000, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1000, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "jogging", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1000, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1000, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog X -1" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 100/1000 | sample 1000 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 101/1010 | sample 1010 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog X -1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "JOG_X_POS", "label": "JOG_X_POS 点动", "status": "PASS", "checks": [ { "name": "JOG_X_POS changes X axis", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1010,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1010,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL jog X -1\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"jogging\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1010,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1010,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":-1,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL jog X +1\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1010, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1010, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog X -1" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "jogging", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1010, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1010, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": -1, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog X +1" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 101/1010 | sample 1010 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog X -1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 102/1020 | sample 1020 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog X +1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "JOG_Y_NEG", "label": "JOG_Y_NEG 点动", "status": "PASS", "checks": [ { "name": "JOG_Y_NEG changes Y axis", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1020,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1020,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL jog X +1\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"jogging\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1020,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1020,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL jog Y -1\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1020, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1020, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog X +1" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1030, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1030, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog Y -1" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 102/1020 | sample 1020 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog X +1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 103/1030 | sample 1030 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog Y -1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "JOG_Y_POS", "label": "JOG_Y_POS 点动", "status": "PASS", "checks": [ { "name": "JOG_Y_POS changes Y axis", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1030,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1030,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL jog Y -1\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"jogging\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1030,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1030,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":-1,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL jog Y +1\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1030, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1030, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog Y -1" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "jogging", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1030, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1030, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": -1, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog Y +1" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 103/1030 | sample 1030 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog Y -1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 104/1040 | sample 1040 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog Y +1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "mode-mdi", "label": "切到 MDI", "status": "PASS", "checks": [ { "name": "MDI mode active", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"test-program.ngc\",\"programSource\":\"operator-file\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"mdi\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G0 X0 Y0 Z0\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":4500000,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1050,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1050,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode mdi\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1040, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1040, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL jog Y +1" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1050, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1050, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode mdi" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 104/1040 | sample 1040 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL jog Y +1" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 105/1050 | sample 1050 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL mode mdi" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "mdi-submit", "label": "MDI 输入并执行 G90 X12.5 Y-4 Z1.25 F900", "status": "PASS", "checks": [ { "name": "MDI updates axis pose and history", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"operator-mdi\",\"runState\":\"mdi\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"mdi\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":900},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1050,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1050,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"MDI G90 X12.5 Y-4 Z1.25 F900\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "test-program.ngc", "programSource": "operator-file", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G0 X0 Y0 Z0" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 4500000, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1050, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1050, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode mdi" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "operator-mdi", "runState": "mdi", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 900 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1050, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1050, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "MDI G90 X12.5 Y-4 Z1.25 F900" }, "domBefore": { "actionCount": 62, "gcode": { "currentLine": 4, "activeRowLine": 4, "activeExecution": "stopped | F 200.0 | cycle 105/1050 | sample 1050 | linuxcnc-task-motion-hal-wasm" }, "values": { "activeProgram": "test-program.ngc", "programSource": "operator-file", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL mode mdi" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "3", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "mdi-history", "label": "MDI 历史快捷按钮", "status": "PASS", "checks": [ { "name": "MDI history executes", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"operator-mdi\",\"runState\":\"mdi\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"mdi\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":900},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1060,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1060,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"MDI G90 X12.5 Y-4 Z1.25 F900\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1060, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1060, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1070, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1070, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "MDI_RUN", "label": "底部 MDI_RUN 执行当前 MDI", "status": "PASS", "checks": [ { "name": "Bottom MDI_RUN executes in MDI mode", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"operator-mdi\",\"runState\":\"mdi\",\"activeLine\":1,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"mdi\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":900},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1070,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1070,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"MDI G90 X12.5 Y-4 Z1.25 F900\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1070, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1070, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "operator-mdi", "runState": "mdi", "activeLine": 1, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 900 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1070, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1070, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "MDI G90 X12.5 Y-4 Z1.25 F900" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "mode-manual", "label": "返回 MANUAL 准备倍率", "status": "PASS", "checks": [ { "name": "Manual before overrides", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":null},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"task/HAL mode manual\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "mdi", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1080, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1080, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 12.5, "y": -4, "z": 1.25, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "rapid-override-down", "label": "Rapid -", "status": "PASS", "checks": [ { "name": "Rapid - updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":90,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"rapid override manual step\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"rapid override adjusted\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": null }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "task/HAL mode manual" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 90, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "rapid override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "rapid override adjusted" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "none", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "task/HAL mode manual" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "90 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control rapid override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "rapid override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "rapid-override-up", "label": "Rapid +", "status": "PASS", "checks": [ { "name": "Rapid + updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"rapid override manual step\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"rapid override adjusted\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 90, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "rapid override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "rapid override adjusted" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "rapid override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "rapid override adjusted" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "90 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control rapid override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "rapid override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control rapid override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "rapid override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "rapid-override-reset", "label": "Rapid 100", "status": "PASS", "checks": [ { "name": "Rapid 100 updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"rapid override reset to 100\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"rapid override reset\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "rapid override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "rapid override adjusted" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "rapid override reset to 100" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "rapid override reset" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control rapid override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "rapid override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control rapid override reset to 100", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "rapid override reset" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "feed-override-up", "label": "Feed +", "status": "PASS", "checks": [ { "name": "Feed + updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":110,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"feed override manual step\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"feed override adjusted\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "rapid override reset to 100" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "rapid override reset" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 110, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "feed override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "feed override adjusted" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control rapid override reset to 100", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "rapid override reset" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "110 %", "spindleOverride": "100 %", "halLast": "web-control feed override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "feed override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "feed-override-down", "label": "Feed -", "status": "PASS", "checks": [ { "name": "Feed - updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"feed override manual step\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"feed override adjusted\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 110, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "feed override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "feed override adjusted" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "feed override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "feed override adjusted" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "110 %", "spindleOverride": "100 %", "halLast": "web-control feed override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "feed override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control feed override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "feed override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "feed-override-reset", "label": "Feed 100", "status": "PASS", "checks": [ { "name": "Feed 100 updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"feed override reset to 100\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"feed override reset\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "feed override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "feed override adjusted" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "feed override reset to 100" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "feed override reset" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control feed override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "feed override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control feed override reset to 100", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "feed override reset" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "spindle-override-up", "label": "Spindle +", "status": "PASS", "checks": [ { "name": "Spindle + updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":110,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"spindle override manual step\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle override adjusted\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "feed override reset to 100" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "feed override reset" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 110, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "spindle override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle override adjusted" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control feed override reset to 100", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "feed override reset" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "110 %", "halLast": "web-control spindle override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "spindle-override-down", "label": "Spindle -", "status": "PASS", "checks": [ { "name": "Spindle - updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"spindle override manual step\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle override adjusted\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 110, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "spindle override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle override adjusted" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "spindle override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle override adjusted" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "110 %", "halLast": "web-control spindle override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control spindle override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "spindle-override-reset", "label": "Spindle 100", "status": "PASS", "checks": [ { "name": "Spindle 100 updates override", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"spindle override reset to 100\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle override reset\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "spindle override manual step" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle override adjusted" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "spindle override reset to 100" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle override reset" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control spindle override manual step", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle override adjusted" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control spindle override reset to 100", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle override reset" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "ignore-limits", "label": "Limits", "status": "PASS", "checks": [ { "name": "Limits toggles HAL GUI state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":false,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"spindle override reset to 100\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle override reset\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"ignore limits set from Web checkbox\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"limit override requested\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": false, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "spindle override reset to 100" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle override reset" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "ignore limits set from Web checkbox" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "limit override requested" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control spindle override reset to 100", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle override reset" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control ignore limits set from Web checkbox", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "limit override requested" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "block-delete", "label": "/ Block", "status": "PASS", "checks": [ { "name": "/ Block toggles HAL GUI state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":false,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"ignore limits set from Web checkbox\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"limit override requested\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"block delete set from Web optional blocks button\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"block delete on\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": false, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "ignore limits set from Web checkbox" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "limit override requested" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "block delete set from Web optional blocks button" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "block delete on" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control ignore limits set from Web checkbox", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "limit override requested" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control block delete set from Web optional blocks button", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "block delete on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "optional-stop", "label": "M1", "status": "PASS", "checks": [ { "name": "M1 toggles HAL GUI state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":false,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"block delete set from Web optional blocks button\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"block delete on\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"optional stop on\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": false, "activeNativePage": "main", "lastHalPinEffect": "block delete set from Web optional blocks button" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "block delete on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "optional stop on" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control block delete set from Web optional blocks button", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "block delete on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "optional stop on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "spindle-forward", "label": "主轴 FWD", "status": "PASS", "checks": [ { "name": "主轴 FWD updates state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"optional stop on\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":true,\"direction\":\"forward\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle forward\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "optional stop on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": true, "direction": "forward", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle forward" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "optional stop on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle forward" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "spindle-reverse", "label": "主轴 REV", "status": "PASS", "checks": [ { "name": "主轴 REV updates state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":true,\"direction\":\"forward\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle forward\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":true,\"direction\":\"reverse\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle reverse\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": true, "direction": "forward", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle forward" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": true, "direction": "reverse", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle reverse" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle forward" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle reverse" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "spindle-stop", "label": "主轴 STOP", "status": "PASS", "checks": [ { "name": "主轴 STOP updates state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":true,\"direction\":\"reverse\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle reverse\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle stopped\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": true, "direction": "reverse", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle reverse" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle stopped" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle reverse" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle stopped" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "toggle-flood", "label": "Flood", "status": "PASS", "checks": [ { "name": "Flood updates state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":false,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"spindle stopped\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"flood coolant toggled\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": false, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "spindle stopped" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "flood coolant toggled" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "spindle stopped" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "flood coolant toggled" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "toggle-mist", "label": "Mist", "status": "PASS", "checks": [ { "name": "Mist updates state", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":false},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"flood coolant toggled\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":null,\"path\":null,\"savedAt\":null,\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"mist coolant toggled\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": false }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "flood coolant toggled" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "mist coolant toggled" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "flood coolant toggled" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "mist coolant toggled" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "SAVE_SESSION", "label": "Save Session", "status": "PASS", "checks": [ { "name": "Save Session persists snapshot", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"saved\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staged\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"5-axis session saved web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json (opfs)\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": null, "path": null, "savedAt": null, "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "mist coolant toggled" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "saved", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "5-axis session saved web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json (opfs)" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / - / storage pending / - / -", "operatorMessage": "mist coolant toggled" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "saved / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "5-axis session saved web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json (opfs)" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "select-profile", "label": "会话恢复前临时切换 profile", "status": "PASS", "checks": [ { "name": "Profile switched to xyzbc-trt", "pass": true, "detail": "{\"machineProfile\":\"xyzbc-trt\",\"activeProgram\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"profile-switched\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":null},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC kinematics xyzbc-trt profile frame refreshed\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "saved", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": null }, "machineFileStaging": { "status": "staged", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "5-axis session saved web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json (opfs)" }, "after": { "machineProfile": "xyzbc-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": null }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "saved / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "5-axis session saved web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json (opfs)" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "RESTORE_SESSION", "label": "Restore Session", "status": "PASS", "checks": [ { "name": "Restore Session restores saved profile", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"restored\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":\"2026-06-28T00:29:06.050Z\"},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"5-axis session restored web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\"}" } ], "error": null, "before": { "machineProfile": "xyzbc-trt", "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "profile-switched", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": null }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC INI loaded configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "profile-switched / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "LinuxCNC INI loaded configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "FULL", "label": "Full 全屏状态切换", "status": "PASS", "checks": [ { "name": "FULL toggles preview fullscreen flag", "pass": true, "detail": "{\"before\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":false},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"restored\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":\"2026-06-28T00:29:06.050Z\"},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"LinuxCNC kinematics xyzac-trt worker ready\"},\"after\":{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":true},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"restored\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":\"2026-06-28T00:29:06.050Z\"},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"fullscreen preview on\"}}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": false }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "LinuxCNC INI loaded configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "fullscreen preview on" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "LinuxCNC kinematics xyzac-trt ready" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "fullscreen preview on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "AUDIT_FULL_BOUNDARY", "label": "Audit Full Boundary", "status": "PASS", "checks": [ { "name": "Audit starts full LinuxCNC boundary path", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":true},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"optional stop set from Web control\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"restored\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":\"2026-06-28T00:29:06.050Z\"},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"staging LinuxCNC machine files\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "fullscreen preview on" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "staging LinuxCNC machine files" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "fullscreen preview on" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "staging LinuxCNC machine files" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "GMOCAPY_HAL_PIN ignore-limits", "label": "公开 API 写入 gmoccapy HAL pin", "status": "PASS", "checks": [ { "name": "Native HAL pin model updates Web state", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":true},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"main\",\"lastHalPinEffect\":\"chk_ignore_limits set active; command.override_limits() requested\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"restored\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":\"2026-06-28T00:29:06.050Z\"},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"gmoccapy HAL ignore-limits requested\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "optional stop set from Web control" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "staging LinuxCNC machine files" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "chk_ignore_limits set active; command.override_limits() requested" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "gmoccapy HAL ignore-limits requested" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control optional stop set from Web control", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "staging LinuxCNC machine files" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "gmoccapy.ignore-limits chk_ignore_limits set active; command.override_limits() requested", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "gmoccapy HAL ignore-limits requested" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } }, { "action": "GMOCAPY_NATIVE_PAGE file", "label": "公开 API 切换 gmoccapy native file page", "status": "PASS", "checks": [ { "name": "Native page model switches to file-load page", "pass": true, "detail": "{\"machineProfile\":\"xyzac-trt\",\"activeProgram\":\"MDI\",\"programSource\":\"operator-mdi\",\"programExecutionSourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"runState\":\"stopped\",\"activeLine\":4,\"machine\":{\"powerOn\":true,\"estopActive\":false,\"taskState\":\"on\",\"mode\":\"manual\",\"allHomed\":true,\"interpState\":\"idle\",\"taskPaused\":false,\"mdiCommand\":\"G90 X12.5 Y-4 Z1.25 F900\"},\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"dro\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"tcpPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0},\"kinsType\":\"identity\",\"rtcpState\":\"off\",\"feed\":{\"rapidOverride\":100,\"feedOverride\":100,\"feedRate\":900,\"currentVelocity\":199.9998},\"spindle\":{\"enabled\":false,\"direction\":\"stop\",\"override\":100,\"rpm\":1600},\"coolant\":{\"flood\":true,\"mist\":true},\"preview\":{\"pathPoints\":3,\"selectedView\":\"iso\",\"fullscreen\":true},\"gmoccapyGui\":{\"ignoreLimits\":true,\"optionalBlocks\":true,\"optionalStop\":true,\"activeNativePage\":\"file-load\",\"lastHalPinEffect\":\"IconFileSelection1 / _BB_LOAD_FILE partial\"},\"mdiHistory\":[\"G90 X12.5 Y-4 Z1.25 F900\"],\"sessionPersistence\":{\"status\":\"restored\",\"storageMode\":\"opfs\",\"path\":\"web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json\",\"savedAt\":\"2026-06-28T00:29:05.499Z\",\"restoredAt\":\"2026-06-28T00:29:06.050Z\"},\"machineFileStaging\":{\"status\":\"staging\",\"fileCount\":18,\"selectedGcodeSourceRel\":\"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc\",\"gcodeSourceCount\":8},\"taskHalStatus\":{\"taskCycle\":0,\"servoCycle\":1090,\"activeLine\":4,\"singleStepping\":false},\"programRuntimeFeedback\":{\"sourceMode\":\"linuxcnc-task-motion-hal-wasm\",\"line\":4,\"sampleIndex\":1090,\"motionIndex\":3,\"currentVelocityMmPerMin\":199.9998,\"axisPose\":{\"x\":0,\"y\":0,\"z\":1.94521,\"a\":0,\"b\":0,\"c\":0}},\"operatorMessage\":\"gmoccapy native page file-load\"}" } ], "error": null, "before": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "main", "lastHalPinEffect": "chk_ignore_limits set active; command.override_limits() requested" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "gmoccapy HAL ignore-limits requested" }, "after": { "machineProfile": "xyzac-trt", "activeProgram": "MDI", "programSource": "operator-mdi", "programExecutionSourceMode": "linuxcnc-task-motion-hal-wasm", "runState": "stopped", "activeLine": 4, "machine": { "powerOn": true, "estopActive": false, "taskState": "on", "mode": "manual", "allHomed": true, "interpState": "idle", "taskPaused": false, "mdiCommand": "G90 X12.5 Y-4 Z1.25 F900" }, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "dro": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "tcpPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 }, "kinsType": "identity", "rtcpState": "off", "feed": { "rapidOverride": 100, "feedOverride": 100, "feedRate": 900, "currentVelocity": 199.9998 }, "spindle": { "enabled": false, "direction": "stop", "override": 100, "rpm": 1600 }, "coolant": { "flood": true, "mist": true }, "preview": { "pathPoints": 3, "selectedView": "iso", "fullscreen": true }, "gmoccapyGui": { "ignoreLimits": true, "optionalBlocks": true, "optionalStop": true, "activeNativePage": "file-load", "lastHalPinEffect": "IconFileSelection1 / _BB_LOAD_FILE partial" }, "mdiHistory": [ "G90 X12.5 Y-4 Z1.25 F900" ], "sessionPersistence": { "status": "restored", "storageMode": "opfs", "path": "web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "savedAt": "2026-06-28T00:29:05.499Z", "restoredAt": "2026-06-28T00:29:06.050Z" }, "machineFileStaging": { "status": "staging", "fileCount": 18, "selectedGcodeSourceRel": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc", "gcodeSourceCount": 8 }, "taskHalStatus": { "taskCycle": 0, "servoCycle": 1090, "activeLine": 4, "singleStepping": false }, "programRuntimeFeedback": { "sourceMode": "linuxcnc-task-motion-hal-wasm", "line": 4, "sampleIndex": 1090, "motionIndex": 3, "currentVelocityMmPerMin": 199.9998, "axisPose": { "x": 0, "y": 0, "z": 1.94521, "a": 0, "b": 0, "c": 0 } }, "operatorMessage": "gmoccapy native page file-load" }, "domBefore": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "gmoccapy.ignore-limits chk_ignore_limits set active; command.override_limits() requested", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "gmoccapy HAL ignore-limits requested" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } }, "domAfter": { "actionCount": 63, "gcode": { "currentLine": 4, "activeRowLine": 0, "activeExecution": "" }, "values": { "activeProgram": "MDI", "programSource": "operator-mdi", "rapidOverride": "100 %", "feedOverride": "100 %", "spindleOverride": "100 %", "halLast": "web-control IconFileSelection1 / _BB_LOAD_FILE partial", "taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked", "taskHal": "task / motion / hal / sync", "fullBoundary": "blocked / remap pending / full blocked", "gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping", "gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only", "nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active file-load", "session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json", "operatorMessage": "gmoccapy native page file-load" }, "canvas": { "threeReady": "true", "threeSelectedView": "iso", "threePathPoints": "1", "threeExecutedPathPoints": "1", "threeRtcpState": "off" } } } ], "checks": [ { "name": "所有主界面区域存在", "pass": true, "detail": "{\"titlebar\":true,\"preview\":true,\"dro\":true,\"gcode\":true,\"status-sidebar\":true,\"info-tabs\":true,\"override\":true,\"spindle-coolant\":true,\"bottom-controls\":true}" }, { "name": "canvas 非空且 WebGL ready", "pass": true, "detail": "01-loaded-inventory:0.7801, 02-initial-run-blocked:0.7801, 03-powered-homed:0.7801, 04-auto-right-panel:0.7801, 05-right-sidebar-all-states:0.7801, 06-profile-xyzbc:0.7802, 07-preview-buttons:0.7887, 08-linuxcnc-source-loaded:0.7893, 09-open-file-loaded:0.7784, 10-run-ready:0.7784, 11-run-realtime-path:0.7789, 12-pause-resume-step:0.7787, 13-stop-idle:0.7787, 14-manual-jog-axis-values:0.7787, 15-mdi-execution:0.7812, 16-overrides-hal:0.7814, 17-spindle-coolant:0.7814, 18-session-fullscreen:0.7814, 19-diagnostics-audit:0.7814" }, { "name": "按钮库存包含核心 action", "pass": true, "detail": "missing=" }, { "name": "核心按钮均执行验证", "pass": true, "detail": "missing=" }, { "name": "未发生页面异常", "pass": true, "detail": "-" }, { "name": "所有 action 断言通过", "pass": true, "detail": "-" } ], "consoleErrors": [], "pageErrors": [], "networkErrors": [], "status": "PASS", "jsonPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence-report.json", "pdfPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence-report.pdf", "markdownPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence-report.md" }