mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-15 15:50:59 +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:
@@ -40,6 +40,8 @@ func (s *NodeService) LocalDescendants() ([]model.NodeSummary, error) {
|
||||
LatencyMs: n.LatencyMs,
|
||||
PanelVersion: n.PanelVersion,
|
||||
XrayVersion: n.XrayVersion,
|
||||
XrayState: n.XrayState,
|
||||
XrayError: n.XrayError,
|
||||
})
|
||||
}
|
||||
return out, nil
|
||||
@@ -140,6 +142,8 @@ func (s *NodeService) GetNodeTree() ([]*model.Node, error) {
|
||||
LatencyMs: sum.LatencyMs,
|
||||
PanelVersion: sum.PanelVersion,
|
||||
XrayVersion: sum.XrayVersion,
|
||||
XrayState: sum.XrayState,
|
||||
XrayError: sum.XrayError,
|
||||
Transitive: true,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user