mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-07-24 05:26:08 +00:00
feat(nodes): bulk panel self-update with live online indicator
Adds the ability to update node panels to the latest release from the Nodes page: select online, enabled nodes (checkboxes) and trigger their official self-updater, or use the per-row Update action. A node whose reported panel version trails the latest GitHub release is flagged with an 'update available' tag (compared via lib/panel-version, mirroring the Go isNewerVersion). Backend: Remote.UpdatePanel calls the node's existing POST /panel/api/server/updatePanel; NodeService.UpdatePanels fans out over the selected ids, skipping disabled/offline nodes with a per-node reason; exposed as POST /panel/api/nodes/updatePanel (documented in endpoints.ts + openapi.json). The bulk request sends a JSON body, so it sets Content-Type: application/json explicitly — axios defaults POST to form-urlencoded, which made ShouldBindJSON fail with 'invalid character i'. Also reuses the clients-page online cue on the Nodes page: a pulsing green dot plus green label for an online node. The .online-dot style moved to the shared styles/utils.css so both pages load it. Translations for all new node keys added across every language file.
This commit is contained in:
@@ -832,6 +832,12 @@
|
||||
"panelVersion": "Версия панели",
|
||||
"actions": "Действия",
|
||||
"probe": "Проверить сейчас",
|
||||
"updatePanel": "Обновить панель",
|
||||
"updateSelected": "Обновить выбранные ({count})",
|
||||
"updateAvailable": "Доступно обновление",
|
||||
"upToDate": "Актуально",
|
||||
"updateConfirmTitle": "Обновить {count} узлов до последней версии?",
|
||||
"updateConfirmContent": "Каждый выбранный узел загрузит последний релиз и перезапустится. Обновляются только включённые узлы в сети.",
|
||||
"testConnection": "Проверить соединение",
|
||||
"connectionOk": "Соединение в порядке ({ms} мс)",
|
||||
"connectionFailed": "Не удалось подключиться",
|
||||
@@ -853,7 +859,10 @@
|
||||
"deleted": "Узел удалён",
|
||||
"test": "Проверить соединение",
|
||||
"fillRequired": "Имя, адрес, порт и токен API обязательны",
|
||||
"probeFailed": "Проверка не удалась"
|
||||
"probeFailed": "Проверка не удалась",
|
||||
"updateStarted": "Обновление панели запущено",
|
||||
"updateResult": "Обновление запущено на {ok} узлах, {failed} не удалось",
|
||||
"updateNoneEligible": "Выберите хотя бы один включённый узел в сети"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
|
||||
Reference in New Issue
Block a user