Releases: gotical/bridgemesh
Release list
BridgeMesh 1.4.0 — сканирование QR-кодов камерой
📷 Что нового — сканирование QR через камеру
Кнопка «Сканировать»
В карточке «Моя визитка» на вкладке Люди появилась
большая зелёная кнопка «Сканировать» — открывает камеру
для считывания QR-кода другого пользователя.
Экран сканирования
- Затемнение по краям с подсветкой рамки — видно куда
наводить. - Кнопка фонарика в верхнем углу — подсветка в темноте.
- Кнопка «Назад» — выйти без сканирования.
- Автоматически останавливается после успешного считывания.
- Обработка ошибок:
- Нет разрешения на камеру — подсказка открыть настройки.
- Камера не поддерживается.
- Прочие сбои инициализации.
Как это работает
- Пользователь А показывает свой QR (там же, в карточке
«Моя визитка»). В QR зашита ссылка
bridgemesh://contact?id=...&alias=.... - Пользователь Б нажимает «Сканировать» в BridgeMesh.
- Камера считывает QR → возвращается строка →
_handleDeepLinkпарсит → контакт добавляется сразу
с правильным именем. - После добавления можно открыть чат и написать сообщение.
Прочее
ContactService.addContactтеперь принимаетalias—
имя сохраняется сразу (раньше надо было редактировать).- Ручной ввод кода (через «Ввести код») тоже сохраняет
введённое имя в контакт.
Технические детали
mobile_scanner: ^4.0.0(CameraX + MLKit на Android).PermissionService.ensureCamera()— запрашивает
CAMERApermission перед запуском сканера.- Разрешение
CAMERAуже было в манифесте.
📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru
📖 README
BridgeMesh 1.3.1 — доказательство E2E: посредник не видит текст
🔐 Что нового — явное доказательство E2E
Личные сообщения и до этого шифровались (AES-256-CBC + HMAC-SHA256,
ключ из SHA-256 от пары alias'ов). В этой версии добавлено явное
доказательство в коде и UI, что промежуточный узел (relay)
действительно не может прочитать текст.
Что видит посредник
В mesh-сети сообщение часто идёт через несколько узлов, прежде чем
дойдёт до адресата. Каждый из этих узлов — посредник. BridgeMesh
сделан так, что посредник:
- ❌ Не может прочитать текст личного сообщения.
В его локальной памяти лежит только зашифрованный blob
видаenc:<base64>:<hmac>. Расшифровать его можно
только общим ключом, который вычисляется из пары
(alias1, alias2)— а этот ключ есть только у
отправителя и адресата. - ❌ Не может подделать сообщение: HMAC на каждом пакете
проверяется до расшифровки — нет оракул-атаки. - ✅ Может сохранить blob и переслать дальше по цепочке
(store-and-forward), покаttl > 0. Это позволяет
доставить сообщение, даже если адресат временно не в эфире.
Технические изменения
- В
MeshPacket.payloadдобавлено полеclear: bool.
falseдля личных сообщений,trueдля broadcast —
видно в коде relay-узла и в логах. - В
_onIncomingрасшифровка вызывается только при
совпаденииpkt.to == identity.alias. Посредник не
вызываетSecureChat.decryptдля чужих пакетов. MessageStoreхранит толькоMeshPacketцеликом,
включая зашифрованный blobpayload['text'].
Расшифрованный текст в хранилище не попадает.- Подробная документация в
lib/services/secure_chat.dart. - На странице «Ещё → Ретрансляция в mesh» появился блок
с пояснением: «Личные сообщения хранятся в зашифрованном
виде. Этот узел не может прочитать текст».
📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru
📖 README
BridgeMesh 1.3.0 — город в шапке, вкладка «Рядом», общий чат
Что нового
🏙 Город в шапке, сразу
На главном экране теперь показывается ваш текущий город —
как только GPS определит координаты. Если город неизвестен —
есть кнопки «Уточнить по GPS» и «Указать вручную» (например,
написать «Ярославль»). Последний определённый город сохраняется
между запусками.
📡 Новая вкладка «Рядом»
Отдельный экран со списком людей, которых телефон видит прямо
сейчас по BLE и Wi-Fi Direct. По тапу — быстро добавить в
контакты или сразу написать личное. Не надо сканировать
QR-коды.
🌍 Городской чат и общий чат (две подвкладки)
На вкладке «Город» теперь две подвкладки:
- Город — привязан к GPS-городу. Переехали из Рыбинска в
Ярославль — попали в чат Ярославля. - Общий — единый чат для всех, история остаётся локально
и переезжает с телефоном.
В любом из чатов тап на сообщение другого человека открывает
меню: «Добавить в контакты» или «Написать личное».
🔔 Уведомления в чатах
Пуш-уведомление приходит и на сообщения в городском/общем чате —
работает офлайн, без интернета, через системные Android-каналы.
📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru — Рыбинск
📖 README
BridgeMesh 1.2.0 — личные диалоги, push-уведомления офлайн
Что нового
Личные диалоги 1-на-1
Личные сообщения теперь в диалогах. Каждое сообщение
принадлежит конкретному собеседнику. Снизу — список диалогов
с превью последнего сообщения и счётчиком непрочитанных.
Шифрование (AES-256) сохраняется.
Локальные push-уведомления без интернета
Входящие сообщения и SOS теперь дают уведомление в шторке —
полностью офлайн, через системные Android-каналы (не через сервер).
Вкладки
Стало 4: Диалоги / Город / Люди / Ещё. Личные сообщения
больше не смешиваются с городскими чатами.
Публичные объявления
Отдельная кнопка для сообщения «всем вокруг» (не требует
шифрования).
Тон приложения
README переписан как утилита на случай ЧС (отключение
электричества, отсутствие интернета и сотовой связи в
отдалённых районах). Без акцента на анонимности или
защите от кого-либо.
📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru — Рыбинск
📖 Подробности — в README
BridgeMesh 1.1.0 — сохранение данных, фоновый режим, эконом
Что нового
- Сохранение данных между запусками — имя, телефон, контакты, чаты остаются.
- Фоновая работа через foreground-сервис — приложение не убивается системой.
- Эконом-режим — кнопка «Отключиться (эконом)» снижает расход заряда в 5-10 раз, узел остаётся посредником.
- Новая иконка — mesh-схема с буквой Bridge.
- Bottom Navigation Bar выровнен по центру.
- Полностью на русском, без жаргона.
- Исправлены RenderFlex overflow.
📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru — Рыбинск, Россия
📖 Подробности — в README
BridgeMesh 1.0.0 — первый публичный релиз
Первый публичный релиз BridgeMesh
Mesh-сеть общения без интернета и сотовой связи. Bluetooth + Wi-Fi Direct. Команда RybinskLab (Рыбинск).
Возможности: многошаговая доставка (store-and-forward), сквозное шифрование, идентификатор по hardware fingerprint, городские геочаты, SOS, бэкап с паролем.
📖 Подробности — в README