mirror of
https://github.com/Corfirean/coa-server-manager.git
synced 2026-11-11 03:51:01 +00:00
- Add UnsavedChangesGuard modal (Save/Discard/Cancel) when navigating between tabs - Wire guard into ModulesPage and SettingsPage with floating action bar - Implement crash parser and explanation engine in coa-core - Expose list_crashes Tauri command and CrashItem API - Add auto-restart on unexpected server crash with crash loop protection - Add crash counter badge and CrashHistoryModal with human-readable explanations and full crashlogs - Support all 6 locales (en, ru, de, fr, es, zh)
4.9 KiB
4.9 KiB
TODO
UI / UX
- Предупреждение о несохранённых изменениях при переходе между вкладками (Unsaved Changes Guard / Modal):
- Если у пользователя есть несохранённые изменения в настройках (
ModulesPage,SettingsPage— сервер, боты и др.) и он переходит на другую вкладку (в боковом менюShell.tsxили кнопками навигации), показывать pop-up диалог подтверждения. - Опции в диалоге:
- Сохранить (Save) — сохранить внесённые изменения и перейти на выбранную страницу.
- Сбросить (Discard) — отменить несохранённые изменения и перейти на выбранную страницу.
- Отмена (Cancel) — остаться на текущей странице с сохранением введённых данных.
- Контекст: Предотвратит случайную потерю настроек, когда пользователь меняет параметры модуля/сервера и сразу уходит на вкладку Overview для запуска сервера (см. Issue #45).
- Если у пользователя есть несохранённые изменения в настройках (
Сервер и стабильность
- Автоподнятие сервера при падении (Auto-restart on crash) со счётчиком и расшифровкой крашей:
- Настройка: Чекбокс «Автоматически перезапускать сервер при падении» в настройках сервера / менеджера.
- Поведение автоподнятия:
- Перезапускать процесс сервера только если падение произошло внезапно (процесс завершился с ненулевым exit code, крашем или без команды от менеджера).
- Если пользователь нажал кнопку «Стоп» (Stop Server), сервер останавливается полностью, автоподнятие не срабатывает.
- Защита от бесконечного цикла крашей (Crash Loop Protection): если за короткий интервал (например, 2-3 минуты) сервер падает более 3-5 раз, автоподнятие временно прекращается, а в UI выводится критическое оповещение.
- Счётчик падений в интерфейсе:
- Рядом со статусом сервера (или в шапке/панели состояния) показывать бейдж со счётчиком крашей с момента старта (например:
Крашей: 2). - При клике на счётчик открывать окно / модалку со списком последних падений с точным временем.
- Рядом со статусом сервера (или в шапке/панели состояния) показывать бейдж со счётчиком крашей с момента старта (например:
- Расшифровка причин краша (Crash Explanation Engine):
- Как парсить и определять причину:
- Читать свежий текстовый файл из
Core/Crashes/<hash>_worldserver.exe_[date].txt. - Смотреть
Exception code(например,C0000005— нарушение доступа к памяти/access violation,C0000420— сработавший assert ядра,C00000FD— переполнение стека,E06D7363— исключение C++ / std::bad_alloc). - При
C0000420парсить блокASSERTION FAILED(Location,Function,Condition). - Анализировать последние строки
Core/Logs/Server.logиErrors.logна критические маркеры (потеря соединения с MySQL, нехватка RAM/OOM, ошибка бинда портов). - Проверять по встроенному словарю известных сигнатур (паттерны частых крашей с понятным описанием, например: «Сбой удаления объекта из сетки карты», «Ошибка запроса к базе данных», «Нехватка оперативной памяти»).
- Читать свежий текстовый файл из
- Fallback: Если сигнатура не опознана в словаре известных проблем, показывать краткую техническую выжимку (код исключения + сработавший ассерт или вершина Call Stack) и кнопку разворота полного текста крашлога / копирования.
- Как парсить и определять причину: