Номера строк консоли живут в памяти менеджера и после его перезапуска
начинаются заново, а открытая вкладка отбрасывает всё, чей номер не больше
последнего увиденного. После обновления панели консоль оставалась пустой при
живом сервере — до перезагрузки страницы.
У буфера появилась метка запуска: поток отдаёт её отдельным событием, и по
её смене вкладка сбрасывает счётчик, чистит экран и забирает историю нового
запуска заново.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Поле ввода и кнопка «Отправить» были активны всегда, хотя команда уходит
в stdin процесса: у остановленного сервера его просто нет, и панель
отвечала ошибкой уже после отправки. Теперь консоль блокируется, а
подсказка объясняет, почему.
Заодно из вывода убираются управляющие последовательности терминала.
SteamCMD раскрашивает свои сообщения, и в браузере это выглядело как
«[0mWaiting for user info...[0mOK». Чистка стоит на общем пути записи в
буфер: через него идёт и вывод сервера, и SteamCMD, и сообщения панели.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Менеджер запускает сервер PZ как дочерний процесс и держит его stdin/stdout:
отсюда живая консоль без RCON, стриминг логов через SSE и корректная
остановка по цепочке quit -> SIGTERM -> SIGKILL для всей группы процессов.
Сам менеджер работает под systemd.
Что входит:
- управление жизненным циклом сервера, автозапуск и автоподъём после падения;
- метрики процесса из /proc и состояние хоста, список игроков онлайн;
- редакторы servertest.ini и SandboxVars.lua, сохраняющие исходное
форматирование файлов;
- моды: списки Workshop ID и Mod ID с порядком загрузки, названия из Steam;
- бэкапы мира по расписанию и вручную, с ротацией и восстановлением;
- установка и обновление сервера через SteamCMD;
- вход по логину и паролю, первичная настройка по одноразовому коду.
Веб-интерфейс без сборщика, вшит в бинарник через embed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>