Add AXIS preview DRO and editor parity

This commit is contained in:
2026-08-23 09:47:34 +08:00
parent a7fcec9d33
commit 26c95e1400
11 changed files with 289 additions and 37 deletions

View File

@@ -0,0 +1,114 @@
{
"boundary": "no ABI/protocol/schema mutation; preview remains read-only projection",
"checks": {
"authoritative_trajectory": {
"no_wall_clock_geometry": true,
"source": "snapshot.authoritative.planner.queue+active",
"status": "verified"
},
"camera_modes": {
"modes": [
"z",
"z2",
"x",
"y",
"y2",
"p"
],
"rotate": true,
"status": "verified",
"zoom": true
},
"canvas_contract": {
"finite_pose": true,
"nonblank": true,
"status": "verified",
"threejs": "r185"
},
"dro_modes": {
"coordinate": [
"machine",
"relative"
],
"display": [
"actual",
"commanded"
],
"dtg": true,
"status": "verified",
"units": [
"mm",
"inch"
]
},
"editor_current_line": {
"aria_current": true,
"diagnostic_alert": true,
"status": "verified",
"worker_fields": [
"program.line",
"task.current_line"
]
},
"preview_layers": {
"layers": [
"grid",
"tool",
"path",
"live",
"limits",
"velocity",
"offsets",
"extents"
],
"status": "verified"
},
"worker_authority": {
"editor_error_owner": "Worker envelope",
"status": "verified",
"trajectory_owner": "Worker snapshot"
}
},
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"implementation": {
"app": {
"path": "web/react/src/App.tsx",
"sha256": "f79247767e0c598aeff389e8b9f9c9acd2f3b9d0d8e20c73483d2c149fe36fa1"
},
"protocol": {
"path": "web/react/src/protocol.ts",
"sha256": "0fcf2fd426b420b04e222af12b6a28e4e6225bf60743b8cca89709a6950adf56"
},
"viewer": {
"path": "web/react/src/ThreeMachineView.tsx",
"sha256": "a26f0776e6a38307e12e0df16ec40053b8bbc071d084fa60ed8d011775d87f97"
}
},
"implementation_status": "authoritative_trajectory_dro_editor",
"report_sha256": "39785b377806de18cb48a1d3c38c129d84a000b9c81d2478cc1a5567ec754e9b",
"schema": "axis-view-edit-report.v1",
"source_anchors": [
{
"lines": "266-449",
"path": "linuxcnc/share/axis/tcl/axis.tcl",
"role": "view menu toggles"
},
{
"lines": "1296-1709",
"path": "linuxcnc/share/axis/tcl/axis.tcl",
"role": "preview/DRO/program panes"
},
{
"lines": "249-310,628-652",
"path": "linuxcnc/lib/python/gremlin.py",
"role": "preview/load/zoom/rotate"
},
{
"lines": "633-725,990-1191",
"path": "linuxcnc/lib/python/rs274/glcanon.py",
"role": "current line/overlays/grid/extents"
}
],
"status": "verified",
"task_id": "AXIS-VIEW-01..04+AXIS-EDIT-01"
}

View File

@@ -12,8 +12,8 @@
},
"checks": {
"axis_feature_markers": {
"desktop_count": 26,
"mobile_count": 26,
"desktop_count": 28,
"mobile_count": 28,
"required": 14,
"status": "verified"
},
@@ -30,7 +30,7 @@
},
"dom_accessibility_contract": {
"desktop": {
"aria_label_count": 34,
"aria_label_count": 36,
"tab_controls_resolve": true,
"tab_count": 4,
"tabpanel_count": 4,
@@ -38,7 +38,7 @@
"toolbar_icon_scope": "axis-toolbar"
},
"mobile": {
"aria_label_count": 34,
"aria_label_count": 36,
"tab_controls_resolve": true,
"tab_count": 4,
"tabpanel_count": 4,
@@ -73,19 +73,19 @@
"implementation_status": "verified",
"outputs": [
{
"bytes": 132137,
"sha256": "71aa049b571d48cb65d3b0498a75cafd8ec8f1ea57bf672c4445118ac1e07ba0",
"bytes": 132308,
"sha256": "a3a67ad2cfceb572e2c5b80d472b35186a82ae0332ec3042e5eb63b5f7295f33",
"viewport": "desktop"
},
{
"bytes": 48695,
"sha256": "ee50a536c339fb466f17da2284987b7aec1a358f903475863639d38a3534bb0f",
"bytes": 48697,
"sha256": "8c839f0d9f270090e22544f1fe28748d1766c71464033a9fe4a1019c18b559b0",
"viewport": "mobile"
}
],
"probes": {
"desktop": {
"axis_feature_count": 26,
"axis_feature_count": 28,
"axis_feature_markers": {
"AXIS-CTRL-03": true,
"AXIS-EDIT-01": true,
@@ -110,19 +110,19 @@
"--disable-dev-shm-usage",
"--virtual-time-budget=4000",
"--window-size=1440,900",
"--screenshot=/tmp/linuxcnc-gui-visual-6xldxrkr/desktop.png",
"--screenshot=/tmp/linuxcnc-gui-visual-xp6ovsfu/desktop.png",
"--dump-dom",
"http://127.0.0.1:5174/"
],
"dom_contract": {
"aria_label_count": 34,
"aria_label_count": 36,
"tab_controls_resolve": true,
"tab_count": 4,
"tabpanel_count": 4,
"toolbar_icon_count": 20,
"toolbar_icon_scope": "axis-toolbar"
},
"dom_sha256": "c69a2d39f9fe8075182b84f12cd7c7aacf1855e6941e711abeae9290790d8b32",
"dom_sha256": "dbe55352ea426148ecf7142bc56c7c276c5822c067406f101736240839ada047",
"markers": {
"Active G-Codes:": true,
"Coolant": true,
@@ -146,16 +146,16 @@
},
"returncode": 0,
"screenshot": {
"bytes": 132137,
"path": "/tmp/linuxcnc-gui-visual-6xldxrkr/desktop.png",
"sha256": "71aa049b571d48cb65d3b0498a75cafd8ec8f1ea57bf672c4445118ac1e07ba0"
"bytes": 132308,
"path": "/tmp/linuxcnc-gui-visual-xp6ovsfu/desktop.png",
"sha256": "a3a67ad2cfceb572e2c5b80d472b35186a82ae0332ec3042e5eb63b5f7295f33"
},
"status": "verified",
"stderr_sha256": "02bd9ef9fbe8a9911162664b94b9f14d5a1f3c9bcda5d647fc7a756fbf353ec0",
"stderr_sha256": "f82829b494eb4a87c11e6dd04a47e7e172b0ee1c3805acab12561d8b7c2c0322",
"window": "1440,900"
},
"mobile": {
"axis_feature_count": 26,
"axis_feature_count": 28,
"axis_feature_markers": {
"AXIS-CTRL-03": true,
"AXIS-EDIT-01": true,
@@ -180,19 +180,19 @@
"--disable-dev-shm-usage",
"--virtual-time-budget=4000",
"--window-size=390,844",
"--screenshot=/tmp/linuxcnc-gui-visual-6xldxrkr/mobile.png",
"--screenshot=/tmp/linuxcnc-gui-visual-xp6ovsfu/mobile.png",
"--dump-dom",
"http://127.0.0.1:5174/"
],
"dom_contract": {
"aria_label_count": 34,
"aria_label_count": 36,
"tab_controls_resolve": true,
"tab_count": 4,
"tabpanel_count": 4,
"toolbar_icon_count": 20,
"toolbar_icon_scope": "axis-toolbar"
},
"dom_sha256": "13c69c83844597d4b683a2a8a23a4fcae34888fd36998e15001e286fe18d3336",
"dom_sha256": "261a23a8c8f6479fd50fcdb4d745f9ddab10d7fff9bab51a7da1e4938b2f6ccd",
"markers": {
"Active G-Codes:": true,
"Coolant": true,
@@ -216,17 +216,17 @@
},
"returncode": 0,
"screenshot": {
"bytes": 48695,
"path": "/tmp/linuxcnc-gui-visual-6xldxrkr/mobile.png",
"sha256": "ee50a536c339fb466f17da2284987b7aec1a358f903475863639d38a3534bb0f"
"bytes": 48697,
"path": "/tmp/linuxcnc-gui-visual-xp6ovsfu/mobile.png",
"sha256": "8c839f0d9f270090e22544f1fe28748d1766c71464033a9fe4a1019c18b559b0"
},
"status": "verified",
"stderr_sha256": "c0ea7a906e8acfe0e78cc3a86ea41a1dbdf2d7339ee75c99186b64ec405f3afc",
"stderr_sha256": "63b4ad056f773061e195fc3f826b64ab1b084cfbedbbbec7d283c668f1f4b9da",
"window": "390,844"
}
},
"release_action": "STOP_RELEASE",
"report_sha256": "c849e565123c99f1c17868807ae3e243f6fd7e8334ab75af5e10e4e8d9dd89aa",
"report_sha256": "301fae229574e9e0bb4090330ed6d783da4e9771a1c1666473b1cf011f6330d6",
"route": "http://127.0.0.1:5174/",
"schema": "gui-browser-visual-fe-m4-report.v1",
"status": "verified",