Skip to content

Releases: gotical/bridgemesh

BridgeMesh 1.4.0 — сканирование QR-кодов камерой

Choose a tag to compare

@gotical gotical released this 03 Sep 20:12

📷 Что нового — сканирование QR через камеру

Кнопка «Сканировать»

В карточке «Моя визитка» на вкладке Люди появилась
большая зелёная кнопка «Сканировать» — открывает камеру
для считывания QR-кода другого пользователя.

Экран сканирования

  • Затемнение по краям с подсветкой рамки — видно куда
    наводить.
  • Кнопка фонарика в верхнем углу — подсветка в темноте.
  • Кнопка «Назад» — выйти без сканирования.
  • Автоматически останавливается после успешного считывания.
  • Обработка ошибок:
    • Нет разрешения на камеру — подсказка открыть настройки.
    • Камера не поддерживается.
    • Прочие сбои инициализации.

Как это работает

  1. Пользователь А показывает свой QR (там же, в карточке
    «Моя визитка»). В QR зашита ссылка
    bridgemesh://contact?id=...&alias=....
  2. Пользователь Б нажимает «Сканировать» в BridgeMesh.
  3. Камера считывает QR → возвращается строка →
    _handleDeepLink парсит → контакт добавляется сразу
    с правильным именем
    .
  4. После добавления можно открыть чат и написать сообщение.

Прочее

  • ContactService.addContact теперь принимает alias
    имя сохраняется сразу (раньше надо было редактировать).
  • Ручной ввод кода (через «Ввести код») тоже сохраняет
    введённое имя в контакт.

Технические детали

  • mobile_scanner: ^4.0.0 (CameraX + MLKit на Android).
  • PermissionService.ensureCamera() — запрашивает
    CAMERA permission перед запуском сканера.
  • Разрешение CAMERA уже было в манифесте.

📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru
📖 README

BridgeMesh 1.3.1 — доказательство E2E: посредник не видит текст

Choose a tag to compare

@gotical gotical released this 03 Sep 19:44

🔐 Что нового — явное доказательство 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 целиком,
    включая зашифрованный blob payload['text'].
    Расшифрованный текст в хранилище не попадает.
  • Подробная документация в lib/services/secure_chat.dart.
  • На странице «Ещё → Ретрансляция в mesh» появился блок
    с пояснением: «Личные сообщения хранятся в зашифрованном
    виде. Этот узел не может прочитать текст».

📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru
📖 README

BridgeMesh 1.3.0 — город в шапке, вкладка «Рядом», общий чат

Choose a tag to compare

@gotical gotical released this 03 Sep 19:39

Что нового

🏙 Город в шапке, сразу

На главном экране теперь показывается ваш текущий город
как только GPS определит координаты. Если город неизвестен —
есть кнопки «Уточнить по GPS» и «Указать вручную» (например,
написать «Ярославль»). Последний определённый город сохраняется
между запусками.

📡 Новая вкладка «Рядом»

Отдельный экран со списком людей, которых телефон видит прямо
сейчас по BLE и Wi-Fi Direct. По тапу — быстро добавить в
контакты
или сразу написать личное. Не надо сканировать
QR-коды.

🌍 Городской чат и общий чат (две подвкладки)

На вкладке «Город» теперь две подвкладки:

  • Город — привязан к GPS-городу. Переехали из Рыбинска в
    Ярославль — попали в чат Ярославля.
  • Общий — единый чат для всех, история остаётся локально
    и переезжает с телефоном.

В любом из чатов тап на сообщение другого человека открывает
меню: «Добавить в контакты» или «Написать личное».

🔔 Уведомления в чатах

Пуш-уведомление приходит и на сообщения в городском/общем чате —
работает офлайн, без интернета, через системные Android-каналы.

📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru — Рыбинск
📖 README

BridgeMesh 1.2.0 — личные диалоги, push-уведомления офлайн

Choose a tag to compare

@gotical gotical released this 03 Sep 19:29

Что нового

Личные диалоги 1-на-1

Личные сообщения теперь в диалогах. Каждое сообщение
принадлежит конкретному собеседнику. Снизу — список диалогов
с превью последнего сообщения и счётчиком непрочитанных.
Шифрование (AES-256) сохраняется.

Локальные push-уведомления без интернета

Входящие сообщения и SOS теперь дают уведомление в шторке —
полностью офлайн, через системные Android-каналы (не через сервер).

Вкладки

Стало 4: Диалоги / Город / Люди / Ещё. Личные сообщения
больше не смешиваются с городскими чатами.

Публичные объявления

Отдельная кнопка для сообщения «всем вокруг» (не требует
шифрования).

Тон приложения

README переписан как утилита на случай ЧС (отключение
электричества, отсутствие интернета и сотовой связи в
отдалённых районах). Без акцента на анонимности или
защите от кого-либо.

📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).
🔗 rybinsklab.ru — Рыбинск
📖 Подробности — в README

BridgeMesh 1.1.0 — сохранение данных, фоновый режим, эконом

Choose a tag to compare

@gotical gotical released this 03 Sep 19:16

Что нового

  • Сохранение данных между запусками — имя, телефон, контакты, чаты остаются.
  • Фоновая работа через foreground-сервис — приложение не убивается системой.
  • Эконом-режим — кнопка «Отключиться (эконом)» снижает расход заряда в 5-10 раз, узел остаётся посредником.
  • Новая иконка — mesh-схема с буквой Bridge.
  • Bottom Navigation Bar выровнен по центру.
  • Полностью на русском, без жаргона.
  • Исправлены RenderFlex overflow.

📱 Скачайте app-debug.apk ниже, установите на Android (>= 7.0).

🔗 rybinsklab.ru — Рыбинск, Россия
📖 Подробности — в README

BridgeMesh 1.0.0 — первый публичный релиз

Choose a tag to compare

@gotical gotical released this 03 Sep 19:16

Первый публичный релиз BridgeMesh

Mesh-сеть общения без интернета и сотовой связи. Bluetooth + Wi-Fi Direct. Команда RybinskLab (Рыбинск).

Возможности: многошаговая доставка (store-and-forward), сквозное шифрование, идентификатор по hardware fingerprint, городские геочаты, SOS, бэкап с паролем.

📖 Подробности — в README