mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-31 23:47:14 +00:00
feat(nodes): add distinct purple indicator when panel is online but Xray core failed (#5040)
* feat(nodes): add distinct purple indicator when panel is online but Xray core failed Currently nodes only show binary online/offline based on panel API reachability. This adds a third state: - Green: panel reachable + Xray healthy - Purple pulsing dot + "Online (Xray Error)": panel API works (management actions still available) but the node Xray process is in error or stopped. Tooltip shows the remote xrayError. - Red: unreachable (unchanged) Backend now captures xray.state + xray.errorMsg from /panel/api/server/status heartbeats and probes. New fields on Node + NodeSummary, forwarded for transitive nodes. Frontend Zod + NodeList rendering + dedicated .xray-error-dot CSS (color #722ED1) + i18n key. Color chosen purple per feedback after initial implementation. Refs: worktree xray-failed-in-nodes * fix: remove invalid JSON comment causing CI failures * chore: regenerate OpenAPI schemas and types for xray error indicators * chore: regenerate examples and schemas for xray error indicators * chore: regenerate missing openapi.json examples * fix --------- Co-authored-by: Rqzbeh <rqzbeh@users.noreply.github.com> Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
This commit is contained in:
@@ -1656,6 +1656,13 @@
|
||||
"example": 86400,
|
||||
"type": "integer"
|
||||
},
|
||||
"xrayError": {
|
||||
"type": "string"
|
||||
},
|
||||
"xrayState": {
|
||||
"description": "XrayState and XrayError are captured from the remote node's /panel/api/server/status\nduring heartbeats. They let the central panel distinguish \"panel API reachable\"\n(status=online) from \"Xray core itself has failed on the node\" for monitoring.",
|
||||
"type": "string"
|
||||
},
|
||||
"xrayVersion": {
|
||||
"example": "25.10.31",
|
||||
"type": "string"
|
||||
@@ -1691,6 +1698,8 @@
|
||||
"tlsVerifyMode",
|
||||
"updatedAt",
|
||||
"uptimeSecs",
|
||||
"xrayError",
|
||||
"xrayState",
|
||||
"xrayVersion"
|
||||
],
|
||||
"type": "object"
|
||||
@@ -1752,6 +1761,13 @@
|
||||
"example": 86400,
|
||||
"type": "integer"
|
||||
},
|
||||
"xrayError": {
|
||||
"type": "string"
|
||||
},
|
||||
"xrayState": {
|
||||
"description": "XrayState/XrayError are populated on successful probes even when the node's\nXray core is not healthy. The UI uses them for a distinct \"panel ok, xray failed\" indicator.",
|
||||
"type": "string"
|
||||
},
|
||||
"xrayVersion": {
|
||||
"example": "25.10.31",
|
||||
"type": "string"
|
||||
@@ -1765,6 +1781,8 @@
|
||||
"panelVersion",
|
||||
"status",
|
||||
"uptimeSecs",
|
||||
"xrayError",
|
||||
"xrayState",
|
||||
"xrayVersion"
|
||||
],
|
||||
"type": "object"
|
||||
@@ -5894,6 +5912,8 @@
|
||||
"transitive": false,
|
||||
"updatedAt": 1700000000,
|
||||
"uptimeSecs": 86400,
|
||||
"xrayError": "",
|
||||
"xrayState": "",
|
||||
"xrayVersion": "25.10.31"
|
||||
}
|
||||
]
|
||||
@@ -6254,6 +6274,8 @@
|
||||
"panelVersion": "v3.x.x",
|
||||
"status": "online",
|
||||
"uptimeSecs": 86400,
|
||||
"xrayError": "",
|
||||
"xrayState": "",
|
||||
"xrayVersion": "25.10.31"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user