From c3293bca8281a2a601d477d42f1ad44c28986fd2 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Fri, 8 May 2026 12:39:38 +0200 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20Phase=205c-iii=20=E2=80=94=20?= =?UTF-8?q?xray=20status=20card=20+=20stop/restart=20controls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit XrayStatusCard.vue renders the right-hand card on the dashboard: - Title with mobile-only version tag (matches the legacy collapse) - Animated badge for the running/stop/error states. The pulsing dot comes from xray-pulse keyframes (renamed from runningAnimation in legacy custom.min.css). Color rings on the badge use the legacy's per-state border-color overrides on .ant-badge-status-processing. - Error state replaces the badge with a popover that surfaces the multi-line errorMsg + a logs shortcut. - Action row at the bottom: optional logs (when ipLimitEnable), stop, restart, and version switch. IndexPage now wires: - POST /panel/api/server/stopXrayService and /restartXrayService, followed by a refresh() so the status card reflects the new state without waiting for the next poll tick - POST /panel/setting/defaultSettings to read ipLimitEnable - Stub handlers for the panel-logs / xray-logs / version-switch / cpu-history modals — those land in 5c-iv AD-Vue 4 changes hit on this card: - → explicit BarsOutlined / PoweroffOutlined / ReloadOutlined / ToolOutlined -