Commit Graph
5 Commits
Author SHA1 Message Date
toros 912e0a7b28 fix(webui): /api/status устойчив при недоступном atxctl; WS-баннер в клиента, не в порт
В console-режиме на arm atxctl нет по пути — status больше не падает (power=unknown).
WS: баннер 'console ready' уходит в веб-клиент, а не записывается в serial (не мусорим на экран сервера).
2026-09-08 23:39:26 +05:00
toros 49b6cf89f4 feat(webui): режим console (только RS232-консоль, питание отключено)
- ATXPI_MODE=console: /api/power/* → 403, кнопки питания скрыты в UI
- /api/status отдаёт mode; env-шаблон и install.sh учитывают ATXPI_MODE
- нужно для безопасного запуска панели на серверах-«управленцах» без риска питания
2026-09-08 23:34:23 +05:00
toros e3f7865ce6 refactor(webui): MCP вынесен из server.py (сделаю отдельным процессом, шаг ④)
mcp-SDK: streamable_http_app требует собственного run() (task-group),
не встраивается в FastAPI напрямую. Оставляю чистый веб-UI (REST+WS+static+auth).
mcp закреплён на v1 (mcp>=1.2,<2) для будущего mcp_server.py.
2026-09-08 23:03:35 +05:00
toros 586acf22e8 fix(webui): монтируем MCP в корень (внутренний роут /mcp) + UMask key
streamable_http_app() уже содержит маршрут /mcp, поэтому Mount на /mcp
давал двойной префикс (307→/mcp/→404). Монтируем суб-приложение в корень
после всех маршрутов — /api/*, /, /static приоритетны, /mcp отдаёт MCP.
2026-09-08 22:59:49 +05:00
toros a1997b00ac feat(webui): FastAPI REST + WebSocket-консоль + MCP-эндпоинт + браузерный UI
- server.py: /api/power/*, /api/status, /api/history, /ws/console, /mcp (MCPServer streamable-http)
- auth: Bearer-токен (ATXPI_WEB_TOKEN) для /api/* и /mcp/*; WS — через ?token=
- статика: index.html, app.js, style.css + vendored xterm.js (работает офлайн на Pi)
- lightweight: один процесс uvicorn, без node/сборки
- install.sh: отдаю сервис-юзеру владение atxpi/ и /etc/atxpi (pyc/tmp/audit)
2026-09-08 22:55:20 +05:00