Repository navigation
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.