Changelog
[0.5.1] - 2026-10-05
Исправлено
- Трекинг зависал при потере ACK/ответа от модема — теперь
UWPort.timeout доходит до UWTrackingEngine
- Дублирование сообщений о таймауте (
[DEVICE] и [RC] появлялись дважды) при активном трекинге
- Двойной вызов
deviceManager.processResponse при ITG/CDMA-ответах (двойной инкремент succeededRequests)
- Пауза между запросами трекинга (ждали
intervalMs даже при мгновенном ответе) — теперь следующий запрос уходит сразу
- Наклонная дальность не вычислялась при
propTime = 0 — теперь 0 валидное значение
- Проекция наклонной дальности считалась при нулевой дальности — теперь только при
slantRange > 0
Изменено
UWTrackingEngine._handleTrackingError сбрасывает isWaitingLocal/isWaitingRemote и останавливает таймер порта
UWTrackingEngine подписан на port.timeout и port.rcTimeout — единый источник таймаута
_advanceToNextDevice планирует следующий запрос без задержки (_scheduleNextRequest(0))
handleRCTimeout и handlePacketRequestTimeout возвращают управление trackingEngine, если трекинг активен (устранён дубль)
handleRCResponse и handlePacketResponse возвращают управление trackingEngine, если трекинг активен (устранён дубль processResponse)
solveUSBL: propTime = 0 даёт slantRangeM = 0, проекция не вычисляется
Добавлено
- Watchdog трекинга — принудительный переход к следующему устройству, если
_advanceToNextDevice не был вызван за intervalMs * 2 + 6000 мс
- Счётчик
stats.watchdogFires
- Событие
watchdog (логируется в консоль как [TRACK] WATCHDOG)
- Логирование
port.timeout в консоли ([PORT] Локальный таймаут)
[0.5.0] - 2026-09-18
Добавлено
- Отображение ITG-ответов и таймаутов в чате (
ITG ответ #N, ITG ТАЙМАУТ #N)
Исправлено
- Залипание порта после первого таймаута удалённого запроса (ITG/CDMA)
- Отсутствие USBL-координат маяков при заданной топопривязке
- Трекинг логических устройств не переходил к следующему после ITG-таймаута
- Не обновлялись карточки устройств в UI при ITG-ответах
- Краш чата при инициализации на старых сообщениях с
null
- Прерывание
initUIModules при падении одного модуля (ломало чат, линейку)
Изменено
- Service Worker:
ignoreSearch при поиске в кэше (решает ?native=1)
- Чат: инкрементальное добавление сообщений, throttle
localStorage, защита от null
- Порт:
_timerTick сбрасывает флаги всегда, не сбрасывает detected
- Нормализация
propTimeS во всех модулях (protocol, device-manager, tracking-engine, app)
[0.4.0] - 2026-09-16
Добавлено
- Чат — единая панель для обмена сообщениями:
- Отправка: короткий запрос (CDMA), передача пакета, короткий логический запрос (PT_ITG)
- Приём: RC_ASYNC_IN (асинхронные коды), PT_RCVD (входящие пакеты)
- Уведомления о доставке/недоставке пакетов (PT_DLVRD / PT_FAILED)
- Ответы на ручные запросы (когда трекинг неактивен)
- Фильтры: все / входящие / исходящие / ASYNC / пакеты
- Счётчик непросмотренных входящих с бейджем
- Мигание кнопки при новых входящих
- Хранение последних 100 сообщений в localStorage
- Экспорт в CSV
- Индикатор VLBL в верхней панели
Изменено
- Панель “Ручные запросы” заменена на “Чат”
- Service Worker: версия кэша обновлена до
uwave-v4
- Service Worker: устойчивый
install (пропускает недоступные файлы)
Исправлено
- Отслеживание непросмотренных входящих сообщений
- Открытие панели чата при клике на кнопку
- Индикатор реального подключения GNSS в VLBL
[0.3.0] - 2026-09-15
Добавлено
- VLBL режим — дальномерная навигация (TOA):
- Автоматический сбор измерений при движении
- Авторешение каждые N измерений
- Умный отбор баз по угловому разбросу (
VLBLMeasurements)
- Web Worker для фоновых вычислений
- Отображение решений VLBL на карте
- Хранение истории решений в localStorage
- POI (точки интереса):
- Отдельное меню POI в верхней панели
- Загрузка из CSV файла
- Сохранение в CSV файл
- Очистка всех POI
- Кнопка 📌 на карточках устройств для быстрой отметки позиции маяка
- Отображение POI на карте
- Хранение в localStorage (
uwave_poi_data)
- Управление логическим адресом модема (панель “Адресация”)
- Автоматическая настройка локальной телеметрии при подключении
- Синхронизация настроек из DINFO при подключении
- Командный режим по умолчанию (isCmdMode)
- Ускорение свободного падения (g) в настройках устройства
Изменено
- Панель VLBL переработана: тумблер + настройки + список устройств
- Ручные запросы: “Передача пакета”, “Короткий запрос (логический)”
- Убрана панель CDMA каналы (настройки в Settings → Устройство)
- Разделение USBL и VLBL решений в карточке устройства
Исправлено
- Синхронизация настроек между UI и устройством
- Логирование обмена в Logger
- Ограничение зума карты
- Открытие панели VLBL при клике на тумблер
[0.2.0] - 2026-09-14
Добавлено
- PWA-оболочка: манифест (
manifest.json) и Service Worker (sw.js) — приложение можно установить как standalone-приложение на десктопе (Chrome, Edge)
- Автоматическое обновление через Service Worker:
skipWaiting() и clients.claim() — новая версия применяется при следующем запуске приложения
- Иконки приложения (192×192, 512×512)
Изменено
- Service Worker регистрируется только в защищённом контексте (http/https). Работа из
file:// и из Android Launcher не затронута
- Кэширование статики не влияет на работу Web Serial API (serial работает напрямую с USB, минуя сеть)
Примечания
- В standalone-режиме Vivaldi диалог выбора порта Web Serial может не отображаться — это известный баг браузера (подтверждён в трекере Vivaldi). В Chrome и Edge standalone работает корректно
[0.1.0] - 2026-09-09
Добавлено
- Первый релиз uWaveSuite
- Подключение к модему uWave (Web Serial)
- Протокол uWave (NMEA $PUWV)
- Трекинг устройств (CDMA + Logical)
- Взвешенный режим команд (5:1:1)
- USBL решение (азимут + дальность)
- VLBL решатель (TOA)
- Карта с устройствами и треками
- Линейка и графическая шкала
- Топопривязка
- Логирование NMEA
- Воспроизведение логов
- Экспорт CSV, KML, JSON, GGA, DXF
- Темы оформления (6 тем)
- Ручные запросы (CDMA + пакетные)
Техническое
- Плоская структура JS
- Event-driven архитектура
- Promise-based порт
- Модульная система UI