feat(frontend): confirm before stopping Xray and offer Start when it is stopped (#7104)

Stop sat next to Restart on the dashboard and fired on the first click. A
mis-click cut every proxy connection, and when the panel itself is reached
through that proxy the only way back was SSH (#7103).

Stop now opens a confirmation with Cancel focused. When Xray is stopped the
first button reads Start instead of Restart and Stop is disabled; in the
crashed state Stop stays enabled, because setting the manual-stop flag is
what halts the crash-recovery restart loop.

Closes #7103
This commit is contained in:
Nikan Zeyaei
2026-11-13 19:33:01 +03:30
committed by GitHub
parent 21aa662629
commit 166d5633cc
16 changed files with 198 additions and 17 deletions
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "إيقاف",
"restartXray": "إعادة تشغيل",
"startXray": "تشغيل",
"stopXrayDisabledHint": "Xray غير قيد التشغيل",
"stopXrayConfirmTitle": "إيقاف Xray؟",
"stopXrayConfirmContent": "سيؤدي إيقاف Xray إلى قطع جميع اتصالات البروكسي فورًا. هل تريد المتابعة؟",
"stopXrayConfirmOk": "إيقاف Xray",
"xraySwitch": "النسخة",
"xrayUpdates": "تحديثات Xray",
"xraySwitchClickDesk": "اختار بحذر، النسخ القديمة ممكن ما تتوافقش مع الإعدادات الحالية.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Stop",
"restartXray": "Restart",
"startXray": "Start",
"stopXrayDisabledHint": "Xray is not running",
"stopXrayConfirmTitle": "Stop Xray?",
"stopXrayConfirmContent": "Stopping Xray will immediately interrupt all proxy connections. Are you sure you want to continue?",
"stopXrayConfirmOk": "Stop Xray",
"xraySwitch": "Version",
"xrayUpdates": "Xray Updates",
"xraySwitchClickDesk": "Choose carefully, as older versions may not be compatible with current configurations.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Detener",
"restartXray": "Reiniciar",
"startXray": "Iniciar",
"stopXrayDisabledHint": "Xray no se está ejecutando",
"stopXrayConfirmTitle": "¿Detener Xray?",
"stopXrayConfirmContent": "Detener Xray interrumpirá de inmediato todas las conexiones proxy. ¿Seguro que quieres continuar?",
"stopXrayConfirmOk": "Detener Xray",
"xraySwitch": "Versión",
"xrayUpdates": "Actualizaciones de Xray",
"xraySwitchClickDesk": "Elige sabiamente, ya que las versiones anteriores pueden no ser compatibles con las configuraciones actuales.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "توقف",
"restartXray": "راه‌اندازی مجدد",
"startXray": "شروع",
"stopXrayDisabledHint": "Xray در حال اجرا نیست",
"stopXrayConfirmTitle": "Xray متوقف شود؟",
"stopXrayConfirmContent": "توقف Xray بلافاصله همه اتصالات پراکسی را قطع می‌کند. آیا مطمئن هستید؟",
"stopXrayConfirmOk": "توقف Xray",
"xraySwitch": "‌نسخه",
"xrayUpdates": "به‌روزرسانی‌های Xray",
"xraySwitchClickDesk": "لطفا بادقت انتخاب کنید. درصورت انتخاب نسخه قدیمی‌تر، امکان ناهماهنگی با پیکربندی فعلی وجود دارد",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Hentikan",
"restartXray": "Mulai ulang",
"startXray": "Mulai",
"stopXrayDisabledHint": "Xray tidak berjalan",
"stopXrayConfirmTitle": "Hentikan Xray?",
"stopXrayConfirmContent": "Menghentikan Xray akan langsung memutus semua koneksi proxy. Yakin ingin melanjutkan?",
"stopXrayConfirmOk": "Hentikan Xray",
"xraySwitch": "Versi",
"xrayUpdates": "Pembaruan Xray",
"xraySwitchClickDesk": "Pilih dengan hati-hati, karena versi yang lebih lama mungkin tidak kompatibel dengan konfigurasi saat ini.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "停止",
"restartXray": "再起動",
"startXray": "開始",
"stopXrayDisabledHint": "Xray は実行されていません",
"stopXrayConfirmTitle": "Xray を停止しますか?",
"stopXrayConfirmContent": "Xray を停止すると、すべてのプロキシ接続が直ちに切断されます。続行しますか?",
"stopXrayConfirmOk": "Xray を停止",
"xraySwitch": "バージョン",
"xrayUpdates": "Xrayの更新",
"xraySwitchClickDesk": "慎重に選択してください。古いバージョンは現在の設定と互換性がない可能性があります。",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Parar",
"restartXray": "Reiniciar",
"startXray": "Iniciar",
"stopXrayDisabledHint": "O Xray não está em execução",
"stopXrayConfirmTitle": "Parar o Xray?",
"stopXrayConfirmContent": "Parar o Xray interromperá imediatamente todas as conexões de proxy. Tem certeza de que deseja continuar?",
"stopXrayConfirmOk": "Parar o Xray",
"xraySwitch": "Versão",
"xrayUpdates": "Atualizações do Xray",
"xraySwitchClickDesk": "Escolha com cuidado, pois versões mais antigas podem não ser compatíveis com as configurações atuais.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Стоп",
"restartXray": "Перезапуск",
"startXray": "Запуск",
"stopXrayDisabledHint": "Xray не запущен",
"stopXrayConfirmTitle": "Остановить Xray?",
"stopXrayConfirmContent": "Остановка Xray немедленно разорвёт все прокси-соединения. Продолжить?",
"stopXrayConfirmOk": "Остановить Xray",
"xraySwitch": "Выбор версии",
"xrayUpdates": "Обновления Xray",
"xraySwitchClickDesk": "Важно: старые версии могут не поддерживать текущие настройки",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Zastaviť",
"restartXray": "Reštartovať",
"startXray": "Spustiť",
"stopXrayDisabledHint": "Xray nebeží",
"stopXrayConfirmTitle": "Zastaviť Xray?",
"stopXrayConfirmContent": "Zastavenie Xray okamžite preruší všetky proxy spojenia. Naozaj chcete pokračovať?",
"stopXrayConfirmOk": "Zastaviť Xray",
"xraySwitch": "Verzia",
"xrayUpdates": "Aktualizácie Xray",
"xraySwitchClickDesk": "Verziu vyberajte opatrne. Staršie verzie nemusia podporovať aktuálnu konfiguráciu.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Durdur",
"restartXray": "Yeniden Başlat",
"startXray": "Başlat",
"stopXrayDisabledHint": "Xray çalışmıyor",
"stopXrayConfirmTitle": "Xray durdurulsun mu?",
"stopXrayConfirmContent": "Xray'i durdurmak tüm proxy bağlantılarını anında keser. Devam etmek istediğinizden emin misiniz?",
"stopXrayConfirmOk": "Xray'i durdur",
"xraySwitch": "Sürüm",
"xrayUpdates": "Xray Güncellemeleri",
"xraySwitchClickDesk": "Dikkatli seçin, eski sürümler mevcut yapılandırmalarla uyumlu olmayabilir.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Стоп",
"restartXray": "Перезапуск",
"startXray": "Запуск",
"stopXrayDisabledHint": "Xray не запущено",
"stopXrayConfirmTitle": "Зупинити Xray?",
"stopXrayConfirmContent": "Зупинка Xray негайно розірве всі проксі-з'єднання. Продовжити?",
"stopXrayConfirmOk": "Зупинити Xray",
"xraySwitch": "Версія",
"xrayUpdates": "Оновлення Xray",
"xraySwitchClickDesk": "Вибирайте уважно, оскільки старіші версії можуть бути несумісними з поточними конфігураціями.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "Dừng",
"restartXray": "Khởi động lại",
"startXray": "Khởi động",
"stopXrayDisabledHint": "Xray không chạy",
"stopXrayConfirmTitle": "Dừng Xray?",
"stopXrayConfirmContent": "Dừng Xray sẽ ngắt ngay lập tức mọi kết nối proxy. Bạn có chắc muốn tiếp tục?",
"stopXrayConfirmOk": "Dừng Xray",
"xraySwitch": "Phiên bản",
"xrayUpdates": "Cập nhật Xray",
"xraySwitchClickDesk": "Hãy lựa chọn thận trọng, vì các phiên bản cũ có thể không tương thích với các cấu hình hiện tại.",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "停止",
"restartXray": "重启",
"startXray": "启动",
"stopXrayDisabledHint": "Xray 未运行",
"stopXrayConfirmTitle": "停止 Xray?",
"stopXrayConfirmContent": "停止 Xray 将立即中断所有代理连接。确定要继续吗?",
"stopXrayConfirmOk": "停止 Xray",
"xraySwitch": "版本",
"xrayUpdates": "Xray 更新",
"xraySwitchClickDesk": "请谨慎选择,因为较旧版本可能与当前配置不兼容",
+5
View File
@@ -151,6 +151,11 @@
"xrayStatus": "Xray",
"stopXray": "停止",
"restartXray": "重新啟動",
"startXray": "啟動",
"stopXrayDisabledHint": "Xray 未執行",
"stopXrayConfirmTitle": "停止 Xray?",
"stopXrayConfirmContent": "停止 Xray 將立即中斷所有代理連線。確定要繼續嗎?",
"stopXrayConfirmOk": "停止 Xray",
"xraySwitch": "版本",
"xrayUpdates": "Xray 更新",
"xraySwitchClickDesk": "請謹慎選擇,因為較舊版本可能與當前配置不相容",