Repository navigation
Releases: AlsatianConsulting/TransportChat-Android
Releases · AlsatianConsulting/TransportChat-Android
Release list
TransportChat 2.0
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
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 testexecuted (no unit tests present); only existing deprecation warnings remain.
TransportChat 1.5
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):
- Rename Chat
- Export Chat
- Clear chat
- 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.ktandnet/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
Initital Release of TransportChat for Android