- Исправлена ошибка 'obj is not defined' в WebSocket onopen
- Упрощена логика обработки WebSocket сообщений (убрано дублирование)
- Исправлен вызов addSectionToggleHandlers в buildTabs
- WebSocket теперь работает в реальном времени с follow=True
- Убрана избыточная логика проверки дублирования строк
Изменения в WebSocket:
- Добавлен потоковый режим с follow=True для локальных контейнеров
- Улучшена обработка ошибок
- Убрано автоматическое закрытие соединения
Изменения в JavaScript:
- Исправлена ошибка с неопределенной переменной obj
- Упрощена обработка WebSocket сообщений
- Улучшена стабильность работы
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлен параметр include_stopped в функцию get_remote_containers
- Исправлен вызов функции в list_containers_with_remote
- Добавлена документация для параметра include_stopped
- Ошибка больше не появляется в логах сервера
Теперь API и WebSocket работают корректно:
✅ API endpoints: 200 OK
✅ WebSocket соединения: устанавливаются
✅ Логи передаются через WebSocket
✅ Нет ошибок в логах сервера
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлен CORSMiddleware в app.py для решения проблем с CORS
- Создан test_api.py для тестирования API endpoints
- Создан test_websocket.py для тестирования WebSocket соединений
- Создан test_browser.html для тестирования в браузере
- Все тесты показывают, что API и WebSocket работают корректно
Диагностика показала:
✅ API endpoints работают (health, auth, containers, logs)
✅ WebSocket соединения работают и передают логи
✅ Проблема может быть в браузере или localStorage
Для тестирования в браузере:
1. Откройте http://localhost:9001/test_browser.html
2. Выполните тесты по порядку
3. Проверьте консоль браузера на ошибки
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлено запоминание состояния свернутых секций в localStorage
- Функции loadCollapsedSections(), saveCollapsedSections(), updateCollapsedSection()
- Применение сохраненного состояния при загрузке интерфейса
- Фильтрация остановленных удаленных контейнеров (неактивные более 5 минут)
- Обновлена функция get_remote_containers() для проверки активности
- Исправлен запуск контейнера (убрана зависимость от start.sh)
- Добавлена команда uvicorn в docker-compose.yml
Новые возможности:
✅ Состояние свернутых секций сохраняется между сессиями
✅ Остановленные удаленные контейнеры автоматически скрываются
✅ Контейнеры считаются неактивными после 5 минут без обновления логов
✅ Интерфейс стал более стабильным и удобным
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлена подробная информация о контейнерах в tooltip
- Различение локальных и удаленных контейнеров с иконками
- Отображение хоста для всех контейнеров
- Время последнего обновления для удаленных контейнеров
- Ссылка 'Открыть сайт' для контейнеров с URL
- Ссылка 'Подключиться по SSH' для удаленных контейнеров
- Подсказка 'Кликните для просмотра логов'
- Добавлены CSS стили для новых элементов tooltip
Новая информация в tooltip:
✅ Тип контейнера (локальный/удаленный) с иконкой
✅ Имя контейнера и сервиса
✅ Хост (localhost или удаленный сервер)
✅ Статус с цветовым индикатором
✅ Порт для работающих контейнеров
✅ Время последнего обновления для удаленных
✅ Ссылки на сайт и SSH подключение
✅ Подсказка для просмотра логов
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлена фильтрация demo и test контейнеров в list_containers_with_remote()
- Обновлен тестовый скрипт для исключения demo и test контейнеров
- Теперь в интерфейсе отображаются только рабочие контейнеры
- Убраны лишние тестовые контейнеры из статистики
Результат:
✅ Demo контейнеры убраны из интерфейса
✅ Test контейнеры убраны из интерфейса
✅ Остались только рабочие контейнеры
✅ Интерфейс стал чище и понятнее
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- host-section теперь добавляется внутрь remote-content
- Исправлена иерархия DOM для корректного сворачивания
- Теперь структура полностью правильная:
remote-content -> host-section -> host-content -> container-item
Структура DOM теперь корректная:
✅ Локальные контейнеры: local-content -> container-item
✅ Удаленные контейнеры: remote-content -> host-section -> host-content -> container-item
✅ Сворачивание работает на всех уровнях
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Контейнеры теперь добавляются внутрь соответствующих section-content div'ов
- Локальные контейнеры добавляются в local-content
- Удаленные контейнеры добавляются в host-{hostname}-content
- Исправлена логика сворачивания секций - теперь контейнеры находятся внутри сворачиваемых блоков
- Убраны лишние строки закрытия секций
Теперь сворачивание секций работает корректно:
✅ Контейнеры находятся внутри своих секций
✅ Сворачивание секций работает правильно
✅ Структура DOM соответствует логике сворачивания
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Исправлено сворачивание секций в sidebar (убраны дублирующиеся обработчики)
- Добавлены tooltip для карточек контейнеров с информацией о сервере
- Исправлена функция switchToSingle для корректного отображения логов
- Исправлен healthcheck в docker-compose.yml (путь /healthz)
- Добавлены подробные tooltip для локальных и удаленных контейнеров
- Улучшена обработка событий для сворачивания секций
Теперь все функции работают корректно:
✅ Сворачивание секций работает
✅ Tooltip отображают информацию о сервере
✅ Логи отображаются при клике на карточки
✅ Healthcheck работает правильно
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Создан файл SEPARATION_SUMMARY.md с подробным описанием выполненной работы
- Описаны все этапы разделения проектов
- Указаны ссылки на репозитории
- Добавлены рекомендации по дальнейшему развитию
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Обновлен заголовок проекта в README.md
- Обновлено описание проекта
- Обновлен Makefile с новым названием
- Обновлены переменные окружения
- Обновлена документация по удаленным клиентам
- Обновлены заголовки и описания веб-интерфейса
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Удалена папка client/ из основного проекта
- Удалены сервисы logboard-client и test-nginx из docker-compose.yml
- Удалены команды для клиента из Makefile
- Удалены переменные окружения для клиента из env.example
- Обновлена документация с ссылками на отдельный репозиторий клиента
- Удалены тестовые файлы, связанные с клиентом
- Очищены orphan контейнеры
Клиент теперь доступен в отдельном репозитории:
ssh://git@git.antropoff.ru:222/PetProject/logboard-client.git
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлена функция сворачивания/разворачивания секций локальных и удаленных контейнеров
- Реализовано периодическое обновление списка контейнеров каждые 30 секунд
- Добавлена автоматическая фильтрация остановленных контейнеров
- Обновлены обработчики событий для корректной работы в свернутом sidebar
- Добавлены функции обновления счетчиков контейнеров
- Обновлена документация с описанием новых функций
- Добавлены тестовые скрипты для проверки функциональности
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Создан LogBoard клиент для отправки логов с удаленных серверов
- Добавлен API эндпоинт /api/logs/remote с аутентификацией
- Реализована структурированная система сохранения логов
- Исправлена совместимость Docker client библиотеки
- Добавлена полная документация и тестирование
- Replace multiple COPY commands with single COPY ./app /app
- Simplifies Dockerfile and reduces complexity
- Ensures all app files are copied correctly
- Fix Jinja2Templates directory path to use absolute path /app/templates
- Fix INDEX_HTML path to use absolute path /app/templates/index.html
- Ensure templates are found correctly in Docker container
- Fix static files not loading due to volume mount conflict
- Remove problematic volume mount from docker-compose.yml
- Add __init__.py files to make Python packages
- Fix all import statements to use relative imports
- Update start.sh to use correct module name
- Update config.py with correct default paths and values
- Ensure all environment variables are properly loaded from .env file
- Replace environment section in docker-compose.yml with env_file directive
- Add all missing environment variables to config.py
- Update env.example with proper variable definitions
- Create .env file from env.example
- Ensure all variables are properly loaded from .env file
- Fixed Docker permissions issue by running as root user
- Added DEBUG_MODE support with conditional Swagger docs and auto-reload
- Created start.sh script for conditional Uvicorn execution
- Removed verbose debug logs from WebSocket status endpoint
- Added comprehensive screenshots to documentation
- Enhanced help tooltip with full-screen modal design
- Added theme switcher to error page
- Updated documentation with local development and Docker benefits
- Fixed WebSocket status display issues
- Improved hotkey functionality and documentation
- Added detailed project descriptions for local dev and Docker users
Technical improvements:
- Dockerfile: removed appuser switch, simplified permissions
- docker-compose.yml: kept user: 0:0 for Docker socket access
- app.py: removed debug prints, added DEBUG_MODE support
- templates: enhanced UI/UX with better tooltips and themes
- docs: comprehensive updates with new screenshots and descriptions
- Создан основной README.md с описанием проекта
- Добавлена подробная документация в папке docs/
- Создан файл LICENSE (MIT)
- Обновлен .gitignore
- Добавлена документация по безопасности с генерацией ключей
- Включены примеры конфигураций и устранение неполадок
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Удалена старая документация с эмодзи
- Создана новая техническая документация на русском языке
- Добавлены подробные руководства:
* README.md - обзор проекта
* docs/installation.md - установка и настройка
* docs/configuration.md - конфигурация
* docs/api.md - API документация
* docs/management.md - управление проектом
* docs/security.md - безопасность
* docs/troubleshooting.md - устранение неполадок
- Обновлены конфигурационные файлы
- Улучшена структура проекта
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлена кнопка Update для управления AJAX auto-update
- AJAX auto-update включен по умолчанию
- Улучшено управление видимостью кнопки Refresh
- Переупорядочены кнопки в header (Update, Refresh)
- Унифицированы стили кнопок (высота, шрифт, границы)
- Добавлен hover эффект для кнопки options с цветом warning
- Позиционирование help-btn в свернутом sidebar
- Уменьшена ширина свернутого sidebar на 30%
- Добавлена логика разворачивания sidebar при клике на options
- Отображение внешнего порта в статусе контейнера
- Показ 'standalone' для контейнеров без проекта
- Обновлена документация
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Основные изменения:
- Добавлено AJAX обновление логов с чекбоксом 'Auto-update logs'
- Добавлена опция 'All logs' в выпадающий список tail lines
- Исправлено отображение длинных названий контейнеров в multi-view режиме
- Восстановлена загрузка истории логов при включенном AJAX обновлении
Новые функции:
- Чекбокс 'Auto-update logs' в секции Options (включен по умолчанию)
- Настройка интервала обновления через LOGBOARD_AJAX_UPDATE_INTERVAL
- API эндпоинт /api/settings для получения настроек приложения
- Поддержка параметра tail=all для загрузки всех логов
- Автоматический запуск AJAX обновления при включении чекбокса
Исправления UI:
- Кнопки LogLevels не уезжают вправо при длинных названиях контейнеров
- Добавлено обрезание длинных названий с многоточием
- Фиксированная высота заголовков в multi-view режиме
- Защита от сжатия кнопок LogLevels
Тестирование:
- Добавлены тесты для AJAX обновления (test_ajax_update.py)
- Тест multi-view AJAX обновления (test_multi_view_ajax.py)
- Тест опции 'all logs' (test_all_logs.py)
- Тест отображения длинных названий (test_multi_view_layout.py)
- Команды make test-ajax, make test-multi-view-ajax, make test-all-logs, make test-multi-view-layout
Документация:
- Создана подробная документация AJAX обновления (app/docs/ajax-update.md)
- Обновлен CHANGELOG.md с версиями 1.3.0, 1.5.0, 1.6.0
- Обновлен README.md с описанием новых функций
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Универсальное исправление скролла для всех контейнеров в Multi View режиме
- Более специфичные CSS селекторы для предотвращения влияния на другие элементы
- Исправление проблемы с wrap text в options
- Добавление вызовов applyWrapSettings() в ключевых местах
- Обновление документации с описанием всех исправлений
- Добавление CHANGELOG.md и SCROLL_FIX_SUMMARY.md
- Добавление документации в app/docs/
- Добавлены функции saveLogLevelsState() и getLogLevelsStateFromStorage()
- Сохранение состояния при кликах по кнопкам loglevels
- Восстановление состояния при инициализации кнопок
- Сохранение настроек для Single View и Multi View режимов
- Индивидуальные настройки фильтрации для каждого контейнера
- Автоматическое восстановление настроек после обновления страницы
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Добавлены кнопки LogLevels в заголовки контейнеров
- Реализована индивидуальная фильтрация логов для каждого контейнера в multi-view режиме
- Исправлена проблема с потерей цветов при фильтрации логов
- Добавлена статистика по уровням логирования для каждого контейнера
- Кнопки показывают количество логов каждого уровня
- Каждый контейнер может иметь свои настройки фильтрации уровней
- Сохранена цветовая схема при переключении уровней логирования
- Добавлен красивый контейнер для Single View аналогично Multi View
- Добавлен заголовок с названием контейнера в Single View
- Скрыт multi-view-panel в Single View режиме
- Добавлена равная высота панелей в Multi View при 3+ окнах
- Обновлены стили и JavaScript функции для корректной работы
- Навигация по контейнерам: [ ] и Ctrl + стрелки
- Переключение темы: Ctrl + T
- Управление формами: Enter для отправки
- Описаны условия работы горячих клавиш
- Добавлено полное описание всех возможностей LogBoard+
- Подробная документация по установке и настройке
- Описание API endpoints и WebSocket соединений
- Инструкции по развертыванию в продакшне
- Примеры конфигурации для Docker Swarm и Kubernetes
- Документация по безопасности и мониторингу
- Описание режимов Single View и Multi View
- Руководство по разработке и отладке
- Исправлена функция sendSnapshot для создания отдельных файлов в Multi View режиме
- Исправлена функция fetchServices для корректной работы кнопки Refresh в Multi View режиме
- Улучшена функция refreshLogsAndCounters для лучшей работы с Multi View
- Добавлена поддержка Multi View режима в обработчики кнопок
- Добавлена кнопка OTHER в LogLevels для неклассифицированных логов
- Созданы красивые страницы ошибок с поддержкой темной/светлой темы
- Добавлены обработчики для ошибок 401, 403, 404, 500
- Реализована безопасность: убраны детали ошибок из пользовательского интерфейса
- Кнопка 'Войти в систему' показывается только на странице ошибки 403
- На странице 403 убран error-message, оставлен только auth-notice
- Обновлены счетчики логов для поддержки уровня OTHER
- Добавлены тестовые маршруты для проверки страниц ошибок
- Улучшен UX: адаптивный дизайн, интерактивность, навигация
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Удален Basic Auth, заменен на современную JWT авторизацию
- Добавлена страница входа с красивым интерфейсом
- Обновлен фронтенд для работы с JWT токенами
- Добавлены новые зависимости: PyJWT, passlib[bcrypt], jinja2
- Создан тестовый скрипт для проверки авторизации
- Добавлено руководство по миграции
- Обновлена документация и README
- Улучшен дизайн поля ввода пароля на странице входа
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Радикально переработаны функции очистки пустых строк
- Удалены переносы строк из HTML-шаблонов логов
- Добавлены CSS стили для правильного отображения элементов .line
- Увеличена частота периодической очистки до 2 секунд
- Добавлена агрессивная очистка во всех ключевых точках приложения
- Улучшена логика определения типа элемента для правильной очистки
Автор: Сергей Антропов
Сайт: https://devops.org.ru
- Убраны фразы 'Connected to container: frontend-iaas' из single view
- Исправлен пересчет счетчиков LogLevels с учетом параметра Tail Lines
- Добавлена функция recalculateMultiViewCounters() для корректной работы счетчиков в MultiView
- Счетчики теперь считают только отображаемые логи с учетом фильтров и Tail Lines
- Обновлены все обработчики событий для корректного пересчета счетчиков в обоих режимах
- Добавлено сохранение выбранного контейнера в localStorage при переключении из multi view в single view
- Реализовано полное обновление страницы для корректного отображения логов
- Добавлено восстановление состояния выбранного контейнера при загрузке страницы
- Исправлена проблема, когда логи не отображались при переключении режимов просмотра
Теперь при снятии галочек с контейнеров в multi view до одного контейнера,
приложение автоматически переключается в single view с корректным отображением логов.
- Добавлена инициализация счетчиков в openMultiViewWs
- Исправлена обработка входящих сообщений WebSocket
- Добавлена отладочная информация для диагностики
- Парсер теперь работает сразу при переключении в multiview
- Улучшена обработка ошибок и проверки объектов
Автор: Сергей Антропов
Сайт: https://devops.org.ru