История изменений: SQVL-MESH

Краткая история выпусков и реальных изменений в проекте.

  1. Командные комнаты прошли полную проверку на двух разных Android-устройствах: создание, управление участниками, перезапуск, потеря связи и восстановление. Всего успешно пройдено 483 автоматических теста; последней устанавливаемой Android-сборкой остаётся 0.12.10.

  2. Подготовлена стабильная версия для финальной проверки командных комнат, включая прерванную настройку, переподключение и переход между активным и фоновым режимами. Новая Android-сборка не публиковалась до завершения физических тестов.

  3. Спроектированы новые настройки GPS, которые будут отсеивать небольшие скачки позиции на телефоне и отправлять через интернет только последнее полезное обновление. В этой версии определено поведение, но приложение не изменилось.

  4. Тестовое окружение было очищено, после чего полный сценарий комнат повторили на Pixel и Sony. Чистая настройка, разделение комнат, взаимные метки на карте, переподключение и восстановление сессии отработали как ожидается.

  5. Добавлен временный Android-обход для сетей, которые не могли найти адрес тестового сервера. Он восстановил доступ на проблемном Sony, но остаётся узким запасным решением, а не постоянной частью системы.

  6. Обновлено оформление Android-приложения, а подписи полей теперь остаются видимыми во время ввода; пароли скрываются и не сохраняются. Результат проверен на Pixel и Sony в обеих ориентациях, темах и состояниях клавиатуры.

  7. Определён контролируемый запуск для небольшой группы Android-тестировщиков, включая оставшиеся проверки надёжности, сети, очистки окружения и распространения. Это был план выпуска, а не видимое обновление приложения.

  8. В общей комнате появился полный список участников с именами, ролями, состоянием, присутствием в сети и свежестью GPS-данных. Функция проверена на Pixel и Sony без изменения того, как позиции хранятся и показываются на карте.

  9. Добавлен защищённый режим администратора для просмотра разрешённых комнат без появления в списке участников. Проверка на трёх устройствах подтвердила, что наблюдатель видит активность, но не отправляет свои данные в комнаты.

  10. Приватные комнаты теперь можно переименовывать, менять их пароль, удалять участников и полностью удалять саму комнату после подтверждения. Обычные участники не получают этих прав; весь сценарий проверен на физических устройствах.

  11. Android-пользователи могут создавать защищённые паролем команды, присоединяться к ним, восстанавливать участие после возврата, видеть разрешённый состав и покидать команду. Релиз прошёл 414 автоматических проверок приложения, сервера и общих правил обмена.

  12. Добавлено первое Android-лобби команд с понятным состоянием вне комнаты и возможностью войти в общую комнату или выйти из неё. Участие восстанавливается после переподключения, а данные разных комнат остаются изолированными.

  13. Создана изолированная серверная основа для командных комнат: разделение данных, отзыв доступа, восстановление и постоянное хранение. Её тестировали отдельно, поэтому действующий публичный сервис и мобильное приложение не изменились.

  14. Определены и проверены правила сообщений и доступа, необходимые для командных комнат, без переключения работающего продукта на новую систему. Это подготовило разработку приложения и сервера, сохранив текущее поведение.

  15. До начала реализации спроектирована работа командных комнат, паролей, восстановления, хранения и ограничений нагрузки. План охватил 37 пользовательских сценариев и до 512 подключённых клиентов; видимых изменений не было.

  16. Завершена более чем недельная полевая проверка Android и iOS: свежесть GPS, направление, скорость, расстояние и расчёт времени прибытия. Интернет-версия принята для дальнейшей разработки; mesh-связь всё ещё не была подключена.

  17. Исправлена ориентация экрана и отступы всплывающих окон после возврата в приложение на Android и iOS. Карта и GPS-состояние сохраняются, а интерфейс корректно подстраивается под текущий экран.

  18. Неподдерживаемые или повреждённые KMZ-файлы карт теперь получают понятное и безопасное для приватности объяснение вместо неясной ошибки. Также стабилизирован регулятор размера тактических символов, чтобы он не конфликтовал с прокруткой страницы.

  19. Диагностика стала понятнее, состояние GPS сведено к компактному элементу, а направление карты показывается фиксированным трёхзначным числом. Сами GPS-данные и логика восстановления не изменились.

  20. Проверка показала, что доступный iPhone не выдаёт надёжные данные компаса. Поддержку компаса на iOS не стали принимать до теста на заведомо исправном устройстве; само приложение не изменилось.

  21. На Android-карте появился компас по истинному северу с направлением, азимутом и визуальным сектором. Android прошёл физическую и автоматическую проверку; проблема датчика на iPhone осталась отдельным вопросом.

  22. Определена первая модель командных комнат: локальный режим без комнаты, одна общая комната, приватные комнаты с паролем и защищённый режим администратора только для просмотра. Релиз описывал будущее поведение и не менял работающее приложение.

  23. Карта теперь запоминает центр, масштаб, поворот и наклон между запусками. Загрузка сохранённых слоёв больше не уводит камеру от выбранного пользователем вида.

  24. Метки участников и собственной позиции теперь всегда остаются поверх импортированных слоёв, поэтому важная текущая информация не скрывается картой. Порядок одинаково работает на Android и iOS.

  25. Подготовлены два следующих улучшения карты: локальный компас и запоминание выбранного пользователем вида. Эта версия только определила работу; новых элементов в приложении ещё не было.

  26. Появилась работа с собственными картографическими слоями на Android и iOS. Можно импортировать до 24 KMZ-файлов, менять их порядок и видимость, переходить к нужной области и удалять ненужные слои; весь сценарий прошёл автоматическую проверку.

  27. Добавлено надёжное локальное хранение импортированных слоёв карты. Приложение помнит их названия, порядок, видимость, размер и состояние после перезапуска и безопасно восстанавливается после повреждённого или прерванного импорта.

  28. Создан общий процесс импорта KMZ для Android и iOS. Файлы проверяются и обрабатываются полностью на устройстве, с прогрессом, отменой, понятными ошибками и автоматической очисткой после сбоя.

  29. Подтверждено, что одна и та же локальная KMZ-карта корректно отображается на Android и iOS. Проверка охватила один распространённый формат слоя; полная совместимость со всеми KMZ ещё не заявлялась.

  30. Определён экран слоёв и правила импорта, порядка, скрытия и удаления до 24 локальных KMZ-карт. Это было проектирование архитектуры и взаимодействия; видимой функции ещё не появилось.

  31. Улучшены метки участников и добавлена настройка размера тактических символов с предпросмотром. Таймеры ранения, гибели и устаревших данных обновляются локально без лишнего сетевого трафика; пройдено 149 автоматических проверок.

  32. Сокращённые коды ролей заменены понятными стабильными обозначениями стрелка, гранатомётчика, пулемётчика, марксмана и медика. Восстановление профилей и совместная работа разных версий приложения сохранились.

  33. Упрощено представление ролей участников и тактических символов, чтобы одно можно было менять, не ломая другое. Внутреннее обновление подготовило более надёжную синхронизацию профилей без видимых изменений продукта.

  34. Роли участников теперь отображаются тактическими символами и в профиле, и на общей карте. Информация переиспользуется локально, поэтому более наглядное представление не увеличивает сетевые сообщения; физическая проверка пройдена.

  35. Создан первый движок тактических символов для пяти ролей участников, принадлежности к своей группе и состояния. Он формирует единообразные символы и прошёл 139 автоматических проверок и визуальный тест на Android.

  36. Состояние участника расширено с двух вариантов до трёх: жив, ранен и погиб. Приложение также запоминает время изменения и показывает, сколько длится это состояние.

  37. Большая карточка предупреждения GPS заменена компактным индикатором состояния и подходящим действием для восстановления. Карта стала легче для чтения, а существующее поведение GPS сохранилось.

  38. Установлены совместимые технические обновления и исправлено отображение системного статуса после поворота устройства. Все 129 автоматических проверок прошли без изменений пользовательских данных или связи.

  39. Принята карта от края до края, при этом элементы управления не попадают под вырезы и системные области на Android и iOS. Панель состояния адаптируется к разным экранам и показывает время диагностики в часовом поясе устройства.

  40. В центре карты теперь показывается координата военной сетки MGRS, рассчитанная без интернета, и её можно скопировать одним нажатием. Просматриваемая точка не отправляется на сервер.

  41. План разработки обновлён с учётом принятой интернет-версии, а новые тактические требования разделены на небольшие проверяемые шаги. Эта версия изменила только план, а не приложение.

  42. Внутренний GPS-контроллер разделён на небольшие части без изменения поведения. Обновление прошло автоматические тесты и физическую проверку на трёх устройствах, поэтому дальнейшая работа с GPS стала безопаснее.

  43. Полноэкранный интерфейс карты разделён на небольшие компоненты без изменения внешнего вида или поведения. Автоматические и физические проверки Android/iOS подтвердили работу GPS, участников, хранения и связи.

  44. Информация о расстоянии, направлении, скорости и времени прибытия перемещена рядом с центральным прицелом, чтобы её было удобно читать на Android и iOS. Сами навигационные расчёты не изменились.

  45. Планы уличных, планшетных, длительных тестов и проверки частоты данных обновлены вокруг трёх режимов позиции: выключено, пока приложение открыто и в фоне. Это было только планирование без изменений приложения.

  46. Отдельные переключатели геолокации заменены одним понятным выбором: выключено, пока приложение открыто или в фоне. Это исключает конфликтующие комбинации и собирает разрешения и восстановление в одном месте.

  47. Быстрые повторные нажатия на управление фоновой геолокацией в Android больше не запускают конфликтующие GPS-операции. Элемент управления ждёт завершения текущего включения или выключения перед новым запросом.

  48. Исправлена Android-проблема, из-за которой возврат из списка недавних приложений мог прервать автоматическое следование карты. Исправление затронуло только поведение карты и прошло полный набор мобильных тестов.

  49. Профиль участника теперь корректно отображается на iPhone в альбомной ориентации. Проблема относилась только к показу окна и исправлена без изменений данных профиля или связи.

  50. Тринадцать новых практических целей превращены в план разработки с зависимостями, а нерешённые варианты оставлены открытыми. Эта версия изменила требования и приоритеты, а не приложение.

  51. Физически приняты фоновая геолокация iPhone, режим только приёма, восстановление сети и возврат после принудительного закрытия приложения при обмене с Android. Все 86 автоматических проверок также прошли.

  52. Из общего с Android исходного кода собрана и физически принята первая автономная версия для iPhone. Она запускается без компьютера разработчика и поддерживает карту и GPS в активном режиме.

  53. Завершена локальная настройка разработки и подписи iOS, после чего общее приложение запущено в симуляторе и на физическом iPhone. Следующим шагом оставалась автономная пользовательская сборка.

  54. Установлены семь совместимых технических обновлений мобильного приложения без изменения его поведения. Все 80 автоматических проверок прошли, а обязательные пакеты стали актуальными.

  55. Оба физических LoRa mesh-устройства получены, заряжены и включены, поэтому ожидание оборудования больше не блокировало работу. Они были готовы к первому радиотесту, но ещё не подключены к приложению.

  56. Полевые тесты подтвердили реалистичные скорость, расстояние, направление и время прибытия: при ходьбе ошибка ETA составила около 30 секунд, а скорость автомобиля отличалась примерно на 2 км/ч. Работа над iOS началась, но готовая версия для iPhone ещё не заявлялась.

  57. Профили участников приняты при работе пользователей в разных местах: постоянная идентичность, редактируемые имена, пять ролей, состояние, переподключение и восстановление из кэша. Восстановление через mesh и общая модель доверия остались будущей работой.

  58. Relay-сервер перенесён с домашнего компьютера на постоянный VPS с проверкой состояния, защищённым доступом и быстрым возвратом к предыдущей версии. Все 79 автоматических тестов прошли без изменения мобильного обмена.

  59. Подготовлена переработка логики карты и GPS, чтобы следующие изменения можно было вносить независимо и с меньшим риском поломок. Видимых пользовательских изменений в этой версии не было.

  60. Настройки геолокации объединены в одном элементе, добавлены надёжная фоновая передача, режим только приёма и восстановление после проблем с разрешениями или фоновой задачей. Физическая проверка Android подтвердила получение позиций при заблокированном экране.

  61. Чистая переустановка Android воспроизвела старую метку участника, которая уже не должна была появляться, поэтому проблема была не только в локальных данных телефона. Дефект зафиксирован для дальнейшего исследования серверного кэша, а не выдан за исправленный.

  62. Добавлены постоянные профили участников с редактируемыми именами, пятью ролями и состоянием «жив» или «погиб». Профили синхронизируются отдельно от GPS, переживают переподключение и приняты в физическом тесте на двух телефонах.

  63. На двух Android-телефонах подтверждено, что приложение продолжает обмениваться позициями после подготовки системы связи к нескольким типам транспорта. Интернет-режим не изменился, а для будущего mesh-подключения появилась понятная точка интеграции.

  64. Разделены зоны ответственности GPS, карты, участников, хранения, диагностики и связи, чтобы будущий mesh-канал можно было добавить без переделки всего приложения. Автоматические проверки прошли; физический тест состоялся в следующей версии.

  65. Полевой тест на двух Android-телефонах подтвердил исправление ложного устаревания неподвижного пользователя. Актуальные GPS-данные и удалённые метки теперь остаются свежими, даже когда человек не двигается.

  66. Добавлены и приняты основные элементы карты: масштаб, автоматическое следование и его ручная отмена, размещение под левую или правую руку, центральный прицел, текущие координаты и сворачиваемая панель состояния. Сборка физически проверена на телефоне и планшете.

  67. В спецификацию управления картой добавлено размещение под левую или правую руку, чтобы вся группа кнопок могла находиться с любой стороны. Эта версия изменила только дизайн; приложение ещё не обновлялось.

  68. Определено автоматическое следование карты: нажатие на геолокацию включает его, а намеренное движение карты выключает и меняет состояние элемента управления. Взаимодействие было описано, но ещё не добавлено в Android-сборку.

  69. Запланированы первые удобные элементы карты для телефонов и планшетов: масштаб, следование за своей позицией, переключатель статуса и центральный прицел. Создание и обмен объектами карты остались за пределами версии.

  70. Сравнены варианты добавления офлайн-карт и разделены географические данные и программа, которая их отображает. Поставщик не выбран до проверки лицензий, хранения, обновлений, поддержки платформ, стоимости и риска зависимости.

  71. Физический тест показал, что неподвижный телефон мог считаться устаревшим даже при получении корректных GPS-данных. Причина и исправление были определены, но само исправление ещё не вошло в приложение.

  72. Два физических Android-телефона успешно обменялись текущими позициями и профилями через публичный relay, включая переподключение и фоновые обновления. Сервер автоматически перезапускался, но всё ещё работал на домашнем компьютере.

  73. Собрано автономное тестовое Android-приложение со всем необходимым для подключения к публичному relay без компьютера разработчика. Пакет проверен, а тест через мобильную сеть и два телефона оставался следующим шагом.

  74. Домашний relay стал доступен по защищённому публичному адресу без открытия домашнего роутера. Внешнее подключение и безопасная проверка состояния работали; физическая приёмка на телефонах ещё ожидалась.

  75. Подготовлен защищённый туннель для публикации relay при сохранении изоляции сервера от домашней сети. Настройка аккаунта и проверка публичного подключения ещё не завершены; учётные данные не попали в репозиторий.

  76. Relay настроен как ограниченный сервис, который надёжно запускается и перезапускается, оставаясь недоступным из домашней локальной сети. Все проверки прошли до его публикации через защищённый туннель.

  77. Добавлен необязательный защищённый доступ к relay-серверу. Токен хранится в настройках сервера, а не в публичных ссылках или файлах проекта, что подготовило безопасное внешнее тестирование без изменения сообщений.

  78. Определён ограниченный пилот запуска relay на домашнем компьютере через управляемый защищённый туннель без открытия портов роутера. Это был план развёртывания; сервер ещё не был публично доступен.

  79. Определено, как одна Android-сборка сможет переключаться между сервером разработки и публичным сервером, а участник задавать позывной. Требования записаны для дальнейшей реализации; обе функции ещё были недоступны.

  80. Собрано и проверено первое автономное Android-приложение для 64-битных устройств. В него вошли карта и текущая интернет-основа, а фоновый GPS, постоянный сервер и mesh-связь остались за пределами принятой сборки.

  81. Адаптивный интерфейс состояния для телефона и планшета прошёл авторскую проверку и стал принятой основой. Нового поведения не добавлялось: версия зафиксировала уже протестированный результат.

  82. Добавлены отдельные панели состояния для телефонов и планшетов и диагностика, которой можно делиться без раскрытия координат, личности, токенов или данных сервера. Реализация прошла 20 автоматических проверок; авторская приёмка состоялась в следующей версии.

  83. Подтверждён первый полный обмен позициями через интернет между двумя клиентами приложения. Сервер проверяет и пересылает обновления, после переподключения возвращает последнее полезное состояние, а принятые данные сохраняются после перезапуска приложения.

  84. Добавлена локальная база для постоянной идентичности устройства, истории полученных сообщений и актуального состояния участников. Некорректные, просроченные, повторные или более старые обновления отклоняются, а полезное состояние переживает перезапуск.

  85. Определён единый автоматически проверяемый формат сообщений для личности участника, позывного, группы, позиции, профиля, времени и срока актуальности. Мобильное приложение и сервер теперь одинаково отклоняют некорректные данные.

  86. Добавлены GPS телефона в активном режиме, запрос разрешения, отображение точности и первая собственная метка на карте. Фоновая геолокация и другие участники в эту версию не входили.

  87. Добавлена первая полноэкранная мобильная карта и подтверждено её корректное отображение на Android. GPS, сеть и офлайн-карты ещё не были подключены.

  88. Создана первая общая структура проекта с мобильным приложением, relay-сервером и едиными правилами сообщений. Android-клиент уже запускался, а iPhone, Bluetooth и работа на физических устройствах ещё не были проверены.

  89. Первая отслеживаемая версия проекта опубликована в удалённом репозитории, а сгенерированные файлы, учётные данные и приватная оперативная информация оставлены за его пределами. Версия изменила доставку проекта, а не поведение продукта.

  90. Подготовлена и проверена локальная среда разработки Android со всеми необходимыми инструментами и 64-битным эмулятором. На этом этапе ещё не заявлялась работа приложения или физических устройств.

  91. Подключён и проверен удалённый репозиторий, а приватные оперативные записи оставлены локально. Проект был готов к первой явной публикации, но удалённой истории разработки ещё не существовало.

  92. Определены границы продукта, основные требования и правила проверки решений. Приложения на этом этапе ещё не существовало.