Skip to content

TransportChat 1.5

Choose a tag to compare

@AlsatianConsulting AlsatianConsulting released this 02 Oct 15:59
· 4 commits to main since this release

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.