Skip to content

Releases: AlsatianConsulting/TransportChat-Android

TransportChat 2.0

Choose a tag to compare

@AlsatianConsulting AlsatianConsulting released this 17 Jul 22:21
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.

TransportChat 1.5.2

Choose a tag to compare

@AlsatianConsulting AlsatianConsulting released this 30 Dec 21:25
bc024ca

TransportChat Android 1.5.2

New

  • About screen added (Settings → About) with version info and GitHub link.
  • Settings menu now includes Manual Connect shortcut (same dialog as the + button).

Improvements

  • File offers wait up to 30 seconds for accept/reject before timing out.
  • Outgoing message bubbles use white text; “Open” button on received files uses black text for contrast.
  • App version bumped to 1.5.2 (versionCode 4) for store metadata.

Privacy & Safety

  • Blocking is stronger: blocked peers cannot send to you, and you will not send messages/files or receipts to them.

Build/Test

  • Built and ./gradlew test executed (no unit tests present); only existing deprecation warnings remain.

TransportChat 1.5

Choose a tag to compare

@AlsatianConsulting AlsatianConsulting released this 02 Oct 15:59

TransportChat for Android — v1.5

Overview

This release adds major improvements to file transfer, share-sheet integration, read receipts, and overall usability, while preserving the simple, account-free LAN chat model. Most changes are backwards compatible with prior 1.x builds.


Highlights

  • Share from any app via the Android share sheet; files route directly into a chosen chat.
  • File transfers with live progress bar, bytes/total size, speed, ETA, and Cancel from either side.
  • Read receipts: ✓ Delivered and ✓✓ Read (with read time) on outgoing bubbles.
  • Block/Unblock peer from the chat overflow menu.
  • ICU-safe link detection with the same styling and tap behavior.
  • Clear chat now also removes local transfer rows/state (downloaded files are not deleted).
  • Auto-scroll to newest message/transfer update.
  • Multi-select copy: long-press to enter selection mode, toggle bullets to select, copy all at once.
  • Live rename: chat title updates immediately after saving.

Navigation and Menus

  • Top-right overflow (in this order):
    1. Rename Chat
    2. Export Chat
    3. Clear chat
    4. Block user / Unblock user
  • Composer “+” remains on the right and includes: Take Photo, Attach File, Send Location (as implemented).
  • Main screen Settings unchanged: Appear offline, Appear online, Change Name, Change Port.

Share Sheet

  • New share activity supports ACTION_SEND and ACTION_SEND_MULTIPLE.
  • Recipient list shows nickname (if set) or the advertised name when available; falls back to host:port.
  • Share UI theme:
    • Background: black
    • Text: white
    • Send button: filled #E87722 with white text
    • Cancel button: outline #E87722 with orange text

File Transfers

  • Progress UI: progress bar plus transferred/total, ETA (minutes/seconds), and speed.
  • Cancel is available on sender and receiver; both ends update consistently.
  • Timeout: offers auto-expire after 30 seconds if no response.
  • Export includes transfer metadata: filename, size (when known), and final status (completed in Xs, rejected, cancelled, failed).
  • Clearing a chat also clears on-screen transfer rows/state for that peer; files are not deleted.

Read Receipts

  • Opening a chat marks visible incoming messages as read and sends read receipts.
  • Outgoing bubbles show status transitions: … Sending → ✓ Delivered → ✓✓ hh:mm when read.

Link Handling

  • Replaced legacy URL regex with an ICU-safe pattern.
  • Styling (underline and color) and tap behavior are preserved.

Unread Badges

  • Main screen shows orange badges with black text for each peer’s unread count.
  • Counts update live as messages arrive or are read.

Developer Notes

  • No group chat introduced.
  • Colors and icons remain unchanged except where specified above.
  • Peers list hides the current device; peer names are not prefixed with “TransportChat-”.
  • Export uses received times and includes display names plus transfer summaries.

Fixes

  • Eliminated duplicate rendering of messages after the first send.
  • Main screen Refresh is stable and no longer crashes.
  • Export and Clear chat compile issues resolved; export now includes the expected metadata.
  • Read receipts are wired end-to-end (send on open, UI updates correctly).

Compatibility

  • Kotlin with Jetpack Compose (Material 3).
  • Works with prior 1.x peers; new features degrade gracefully when unsupported.
  • Permissions unchanged: LAN networking, media/storage as needed, and camera for Take Photo.

Upgrade Notes

  • No data migration steps required.
  • Previously set nicknames continue to be honored.
  • Blocklist persists across restarts; unblock from the chat overflow menu.

Files Touched (high-level)

  • PeerChatActivity.kt: transfers UI (progress/ETA/cancel), multi-select copy, read receipts status, export enhancements, live rename, auto-scroll, block/unblock menu.
  • net/ChatClient.kt and net/ChatServer.kt: read receipt send/parse, transfer offer/accept/reject/cancel, progress reporting, 30-second timeout.
  • data/TransferCenter.kt: progress snapshots, cancellation propagation, peer-scoped clears.
  • MainActivity.kt: unread badges; recipient naming improvements for share.
  • share/ShareToTransportChatActivity.kt: new share entry point.
  • Linkify utilities: ICU-safe pattern.

Known Good Behavior (regression guard)

  • Buttons retain black background with #E87722 border and text where specified.
  • Orange cog Settings icon unchanged.
  • Composer “+” remains on the right.
  • Peers tab does not show the current device.
  • Peer names are not prefixed.
  • Refresh functions correctly.
  • Export and Clear chat behave per the specifications above.

Known Issues / Notes

  • If a peer is running a significantly older build without offer handling, transfers may fail quickly; this is expected.
  • ETA accuracy depends on steady throughput; short or bursty transfers can fluctuate.

TransportChat Android v1

Choose a tag to compare

@AlsatianConsulting AlsatianConsulting released this 29 Aug 14:14

Initital Release of TransportChat for Android