Skip to content

Releases

v0.4.11

Choose a tag to compare

@zumuvik zumuvik released this 20 Jul 21:18
  • Preserve Gson wire field names and generic signatures in minified releases, restoring pairing and PairAccept decoding.
  • Increase Android versionCode to 11 for a valid update from prior signed builds.

v0.4.10

Choose a tag to compare

@zumuvik zumuvik released this 20 Jul 21:04
  • Preserve Gson generic signatures in minified releases so PairAccept and challenge messages decode correctly.

v0.4.9

Choose a tag to compare

@zumuvik zumuvik released this 20 Jul 20:51
  • Preserve canonical Gson wire field names in minified releases, restoring PC/phone pairing and authentication.
  • Add handshake JSON schema regression tests.

v0.4.8

Choose a tag to compare

@zumuvik zumuvik released this 18 Jul 22:46
  • Debug APKs use com.phonect.android.debug, so they can be installed alongside signed releases.
  • CI artifact is explicitly marked as a diagnostic debug build.

Phonect v0.4.7.1

Choose a tag to compare

@zumuvik zumuvik released this 13 Jul 08:06

Что исправлено

  • Исправлен lifecycle теста Android attempt registry, который оставлял незавершённую coroutine.
  • Проверена корректная отмена владельца attempt’а и освобождение ключа после завершения cleanup.
  • Сохранены исправления discovery in-flight, сетевого lifecycle и timeout биометрии из 0.4.7.

Проверки

  • Android unit tests пройдены.
  • Debug APK успешно собран в GitHub Actions.
  • Python: 69 тестов пройдено.
  • Nix flake check пройден.

Phonect Android 0.4.6.1 — handshake diagnostics

Choose a tag to compare

@zumuvik zumuvik released this 13 Jul 00:10

This is a debug-signed diagnostic Android build, not a production release.

It adds temporary PairHello/frame logging to diagnose the Expected 'pair_hello', got 'None' handshake failure.

You may need to uninstall the previous APK before installing this build because signing keys may differ.

APK SHA-256: d63a00335c7f1fd36e8d849b88c98165e71b368f0f2bee55713f04f33c5ae5ad

v0.4.6

Choose a tag to compare

@zumuvik zumuvik released this 03 Jul 13:30

Changes

  • Revert transport from Bluetooth RFCOMM back to Wi-Fi/LAN TCP with UDP discovery.
  • Android listens for UDP discovery and connects back to the PC daemon TCP listener.
  • Add bounded auth windows so arbitrary TCP connections cannot unlock outside wake/manual/start authentication.
  • Harden TOFU: first pairing stores keys only after proof-of-possession and never unlocks on the first TOFU connection.
  • Reject trusted-key mismatches without overwriting pinned keys.
  • Add dynamic TCP port discovery, Android connection debounce, PEM fingerprint validation, and key-based trust with IP/port refresh after verification.
  • Update NixOS module firewall/settings, docs, and version metadata to 0.4.6.

Validation

  • python -m py_compile src/phonect/*.py tests/*.py
  • nix-instantiate --parse phonect-service.nix

Note: full pytest and Android Gradle build were not run in this environment because pytest/pip and Java/JDK are unavailable.

v0.4.5-easy-bt — one-command Bluetooth pairing

Choose a tag to compare

@zumuvik zumuvik released this 03 Jul 10:07

v0.4.5-easy-bt — лёгкое сопряжение по Bluetooth

Что нового

  • phonect pair — одна команда для Bluetooth-сканирования, сопряжения и TOFU-обмена ключами. Больше не нужно вручную запускать bluetoothctl и править конфиг NixOS.
  • state.json — MAC-адрес телефона теперь хранится в mutable-файле состояния (~/.config/phonect/state.json), а не в декларативном NixOS-конфиге.
  • Убран device.bluetooth_mac из phonect-service.nix.

Как использовать

phonect gen-keys         # если ещё не сгенерированы
phonect pair              # BT scan → select → pair → TOFU → save state
phonect daemon --foreground

APK

Не подписан — требуется локальная подпись для установки на телефон, либо adb install на dev-устройстве.

Полный список изменений

  • src/phonect/state.py — новый модуль для хранения состояния устройства
  • src/phonect/cli.py — добавлена команда phonect pair
  • src/phonect/config.py — удалён bluetooth_mac из DaemonConfig
  • src/phonect/daemon.py — BT MAC читается из state.json
  • phonect-service.nix — удалён device.bluetooth_mac
  • tests/test_state.py — 5 новых тестов (roundtrip, corruption, partial JSON)
  • Версия обновлена до 0.4.5

v0.4.0-bluetooth

Choose a tag to compare

@zumuvik zumuvik released this 03 Jul 09:46

v0.4.0 — Bluetooth RFCOMM Transport

Breaking change: Replaced Wi-Fi (UDP discovery + TCP sockets) with Bluetooth RFCOMM. Fixes AP isolation issues on routers.

What changed

  • Python daemon: Now connects to phone via Bluetooth RFCOMM (PC = BT client)
  • Android service: Now listens for Bluetooth connections (phone = BT server)
  • Config: Removed IP/port/poll settings, added device.bluetooth_mac
  • Mutual auth PSS fix: Cross-platform salt length match between Python cryptography and Android KeyStore
  • NixOS module: Removed firewall rule, added bluetooth_mac option

Migration

  1. Pair phone with PC at OS level (Bluetooth settings)
  2. Set bluetooth_mac in config
  3. Install new APK
  4. Rebuild NixOS config

Files changed

 M android/app/src/main/AndroidManifest.xml
 M android/app/src/main/java/.../CryptoManager.kt
 M android/app/src/main/java/.../HandshakeModels.kt
 M android/app/src/main/java/.../PhonectNetworkService.kt
 M android/app/src/main/java/.../ProtocolHandler.kt
 M phonect-service.nix
 M src/phonect/config.py
 M src/phonect/crypto.py
 M src/phonect/daemon.py
 M tests/test_daemon.py

v0.3.1

Choose a tag to compare

@zumuvik zumuvik released this 02 Jul 22:22

v0.3.1 — Bugfix: firewall + connection flood

  • Firewall rule: NixOS module now opens TCP port 9876 automatically
  • Connection flood fix: Android debounces duplicate TCP connection attempts (was launching one per UDP broadcast every 300ms, causing EHOSTUNREACH storms)
  • Version bump: phonect-service.nix → 0.3.1