Skip to content

TransportChat 2.0

Latest

Choose a tag to compare

@AlsatianConsulting AlsatianConsulting released this 17 Jul 22:21
· 1 commit to 15440dc7fada031daa2b07c5e8689326c824fa63 since this release
fcba397

TransportChat v2.0 Release Notes


Security & Encryption

  • Signal Protocol E2EE — Messages are now encrypted with the Signal Protocol (libsignal-client) instead of ephemeral ECDH/AES-GCM. Keys survive app restarts; sessions are ratcheted per message.
  • SQLCipher encrypted database — All chat history, contacts, and session state are stored in an AES-256 encrypted database on-device. Nothing is kept in unencrypted memory-only structures.
  • App Lock — PIN protection with optional biometric unlock. The app locks automatically on background.
  • QR code identity verification — Scan a peer's QR code to cryptographically verify their public identity and mark them as trusted. Verified contacts show a lock badge.
  • Identity mismatch warnings — If a peer's public key changes unexpectedly (possible MITM), the app shows a warning before allowing communication to resume.

Messaging

  • Persistent chat history — Messages survive app restarts. Previously all chats were cleared when the app was removed from recents.
  • Group chat — Create named groups with multiple LAN peers. Each member gets a pairwise-encrypted copy of every message (no shared group key).
  • Disappearing messages — Set a per-chat timer; messages auto-delete after the configured duration with a countdown visible in the chat bubble.
  • Chat bubbles — Outgoing and incoming messages now use distinct bubble styling instead of a flat list.
  • Delivery & read receipts — Outgoing messages show sent → delivered → read status.
  • Clear conversation — Clear a chat thread with a confirmation dialog.
  • Unread tracking — Home list shows unread counts; badge clears when the thread is opened.

File Transfers

  • Offer/accept/decline flow — Sending a file sends an offer first; the recipient must accept before the transfer begins.
  • Multi-file auto-zip — Sending multiple files at once automatically bundles them into a single ZIP archive.
  • File save picker — Recipients choose where to save received files via the system file picker.

Voice & Video Calls

  • 1:1 WebRTC calls — Audio and video calls between any two peers on the LAN. No server relay; all media is peer-to-peer.
  • Call overlay — In-call controls (mute, camera toggle, end call) rendered as a full-screen overlay over the chat UI.

Peer Discovery & Contact Management

  • Background foreground service — The transport layer now runs as a persistent foreground service so peers remain reachable when the app is in the background.
  • Boot receiver — The transport service auto-restarts after a device reboot.
  • Manual peer add with profile fallback — Add a peer by IP:port directly; if NSD hasn't cached them yet the app fetches their profile via a direct TCP connection.
  • Contact nicknames preserved — Renamed contacts keep their custom title even if the peer changes their display name.
  • Group member deduplication — Endpoint contacts are deduplicated in member/group pickers.

UI & Navigation

  • Single-activity Compose rewrite — Replaced four separate Activities (Main, PeerChat, Settings, About) with a single Jetpack Compose navigation graph.
  • Home tabs — Separate tabs for Chats and Contacts on the home screen with tab icons.
  • Settings screen — Consolidated settings with a QR code sharing action so you can share your identity without opening a chat.
  • Verified lock badges — Contacts you've verified via QR show a lock icon on the home list and chat header.
  • Permission rationale dialogs — Before requesting each sensitive permission for the first time, the app explains why it's needed.

Removed

  • About screen — Removed as a standalone screen; attribution info moved into settings.
  • In-memory-only chat storage — All prior message data was ephemeral and cleared on task removal. This is no longer the case.
  • Home-grown ECDH session crypto — Replaced entirely by the Signal Protocol. Existing v1.x sessions are not forward-compatible.

Compatibility note: v2.0 is not backward-compatible with v1.5.x. All peers on the LAN must upgrade together — the Signal Protocol session handshake is incompatible with the old ECDH scheme.