> For the complete documentation index, see [llms.txt](https://docs.bluefletch.com/bluefletch-enterprise/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bluefletch.com/bluefletch-enterprise/product-guides/chat/release-notes.md).

# Release Notes

Release Notes for the BFE Chat Application

### Release 2.8.28

Release Date: August 2026

#### Highlights

This release focuses on **reliability and polish across core chat features**: location sharing, push-to-talk, notifications, and emergency announcements now behave more consistently and clean up after themselves correctly (e.g., location data clearing between chats, expired announcements disappearing, DND resetting on logout).

It also adds a few **user-facing enhancements** — pinch-to-zoom on image attachments, voice messages as a full attachment type, and a more robust emergency alert sound system with fallback support — while fixing a number of **crash and notification bugs** (stale device tokens, background crashes, duplicate/stuck notifications) that were affecting stability.

#### Details

**Added**

* Pinch-to-zoom and pan support for full-screen image attachment previews, with panning constrained to the image edges.
* New emergency alert sound player that plays at max alarm volume from the announcement overlay (rather than the notification), restoring the previous volume afterward. Stacked emergencies now start/stop independently, and a new emergency silences a currently playing one.
* Voice messages can now be sent as a generic attachment type alongside images and video.
* Required package entries added to the app manifest's queries block.

**Fixed**

* Autoplay audio now defaults to the config value when no preference is set, and stays disabled whenever the config disables it (previously the toggle appeared on while never persisted).
* Location button now correctly appears when location tracking is enabled, instead of staying hidden due to a stale first-load value.
* Disabled location tracking for offline users and automatically closes the map if the contact goes offline.
* Location Data Cleanup: switching chats now instantly clears old location data so you never see a previous contact's location.
* The map now instantly snaps directly to the contact's initial location instead of starting at a default blank location.
* Fixed a bug where background location updates kept running after leaving the chat screen. Location tracking now turns off cleanly.
* Emergency announcement overlay is now scrollable, so long messages no longer push the OK button off-screen.
* Autoplay audio toggle now reads from the stored preference only (default off), fixing a mismatch where the Settings toggle showed ON while incoming voice messages were treated as OFF.
* Voice message notifications now only alert once, so tapping play/pause no longer re-triggers the notification banner.
* Play/pause state updates are skipped for notifications the user has already dismissed, preventing swiped-away notifications from reappearing.
* Push-to-talk (PTT) foreground detection now follows the activity lifecycle instead of the process lifecycle, fixing a case where PTT could still record in the background after pressing Home.
* Push-to-talk overlay now dismisses immediately when the app is opened from a failed-send state.
* Push-to-talk channel list is now sorted alphabetically.
* A toast now appears when there is no channel available to push-to-talk on, instead of silently doing nothing.
* User online/offline status now correctly reflects a disconnected "last will" state, moving the contact to the Offline tab instead of showing a misleading gray "connected" state.
* Voice messages that arrive as separate audio and transcript messages no longer produce duplicate notifications.
* Autoplay audio setting is now correctly restored and available in the Settings menu.
* Push-to-talk audio recording no longer stops working after the first time the chat screen is exited.
* Notification banners are now suppressed for emergency-urgency messages and while Do Not Disturb is active; emergencies instead surface via the full-screen announcement overlay, regardless of channel type.
* Announcement text is now converted from HTML to plain text before being shown in system notifications, fixing garbled tags/entities in the notification preview.
* Fixed several push-to-talk audio recording issues: a stuck "recording" UI state if the recorder unexpectedly stopped, and new recordings being killed by a stale "stop" call from a previous session.
* Fixed a bug where the chat app could keep sending a stale/null device token to the server even after the device token refreshed.
* Fixed custom emergency alert sound playback, with a fallback to the default sound if the custom audio fails to play.
* Fixed background app crashes related to device status updates.
* Cached attachments were being re-downloaded on every tap due to inconsistent cache-name handling; the download and cache paths are now aligned.
* Video and document/file attachments now correctly generate support events/logs when received (previously only some attachment types were logged).
* Message-view analytics no longer fire when the screen is off.
* Expired announcements are now automatically removed from chat screens, widgets, and unread badge counts.
* Fixed issues where opening announcement channels or having expired messages left incorrect unread badge numbers on the app icon/screen.
* A contact is now only shown as "Online" when both their status and their MQTT connection state indicate they're active/connected.
* Non-emergency announcement overlays are now suppressed while Do Not Disturb is enabled; emergency announcements still bypass DND.
* Logging out now completely turns off Do Not Disturb so settings aren't carried over to the next user who logs in.
* Fixed the app's "visibility" tracker triggering at the wrong time (e.g., during permission or low-battery dialogs) by tracking `ON_STOP` instead of `ON_PAUSE`.
* Fixed a bug causing duplicate "failed to send" voice message entries to appear in chat when retrying a send.
* Push-to-talk send-failure handling reworked so a failed voice message can be retried instead of the overlay dismissing (with a follow-up fix to prevent duplicate database entries during retry). (BFECM-425)
* Fixed a crash (`SecurityException`) that could occur when starting audio recording without microphone permission; recording is now properly gated behind a runtime permission check.
* Voice messages no longer auto-play while Do Not Disturb is active.

### Release 2.8.12

Release Date: May 2026

#### Highlights

Chat app now receives announcements broadcast from the BFE Portal.\
For more information, see [Portal Chat Manager](https://docs.bluefletch.com/bluefletch-enterprise/product-guides/portal/chat-manager/chat-announcements) and [Chat App Announcements](https://docs.bluefletch.com/bluefletch-enterprise/product-guides/chat/chat-announcements).

#### Details

**User Interface Enhancements**

* Updated Chat header to display Username and Site.&#x20;
* Enhanced Audio Recording interface.
* Added video thumbnails.
* Increased video attachment size limit of video from 15 to 30 MB.
* Added visual indicators to distinguish between web and mobile users.
* Renamed active/disconnected status with Online/Offline.
* Added a directional arrow indicator to notify users of new messages while they are viewing older conversation history.

**Bug Fixes**

Push-to-Talk (PTT) & Audio

* Disabled PTT for "Read-Only" channels.
* Enhanced sensitivity multiplier of the audio level bar to better capture low-volume sound.
* Resolved an issue where the PTT interface would remain active even after the recipient logged out.

Messaging & Reliability

* Added a sender name of image in full-screen mode.
* Removed duplicate entries in channel participants list.

### Release 2.7.21

#### Highlights

Allow for displaying and clicking on hyperlinks in Chat messages. Display history of messages, allowing users to see older messages. Added support for Richedit text display. Added support for attaching videos to messages. Provide support to display Do Not Disturb settings from Launcher home screen. Initial logic changes to support Corporate Announcements.

#### Details

* Added support to invoke the chat conversations endpoint.
* Reversed the order of messages in the Chat screen as data is received in descending order
* Added a loading indicator when loading older messages.
* Added method to convert Date to UTC formatted string
* Added logic to handle upward and downward scrolls of the messages in the LazyColumn and cause jump button to show/hide.
* Implemented an error banner for Chat history loading failures.
* Enhanced date formatting for internationalization.
* Implemented scrolling to last visible message when older messages are loaded.
* Shortened the localized date format for conversation date header
* Fixed a bug with slow typing within Chat message.
* Added logic to clear the conversation cache on device boot complete.
* Cleaned up timber logs and added additional logging within Do Not Disturb and Device offline displays.
* Disabled PTT messages in Bot Conversations.
* Updated PTT button usage, as it will now be ignored within the ChatScreen if the user contact cannot receive attachments.
* Updated the application name and included new application icons.
* Added logic to send application events whenever the application enters and exits the DND (Do Not Disturb) mode.
* Added logic to support Launcher 4 and Launcher 3 configuration formats.
* Updated logic to use the topics provided by the contacts endpoint.
* Added basic HTML parsing.
* Fixed issue where blank sender names were being displaying in Channel conversation screens.
* Added support to display RichEdit formatted messages.
* Added a non-bold "opensans\_italic" entry to the FontFamily defined in Type. This is to fix the display of Italic text in Rich Text message support.
* Enabled selection of video files from the Android gallery.
* Added support for "corp" channels alongside existing "site" channels within the channel subscription process.
* Implemented logic for attaching video files to messages based on existing code for images in ChatViewModel and ChatScreen.
* Enabled sending of message when video has been attached.
* Increased video attachments' file size limit from 10 to 15MB .
* Using new config option `allowHyperlinking` to determine if we'll render \<a>\</a> HTML link tags in text messages and if chat will automatically convert URLs into hyperlinks.
* Added logic to track when messages are viewed by users.
* Added logic to send event logs whenever a URL is clicked in a message.
* Implemented a standalone "Do Not Disturb" (DND) settings screen. This allows users to manage DND settings independently.
* Added configuration flag to control the visibility of the "Do Not Disturb" (DND) feature in the UI.
* Added a Do Not Disturb launcher icon.
* Updated notification channels for Voice Messages to fix an issue with blue notification light not showing.

### Release 2.6.5

#### Highlights

Introduction of Do Not Disturb and map location display of a Chat contact.

#### Details

* Added initial implementation of location request logic.
* Added ACCESS\_COARSE\_LOCATION permission to the manifest.
* Added a "LocationRequest" MQTT message type and a function to handle it when received.
* Added logic to switch between Location and Messages view in the ChatScreen.
* Added OpenStreetMaps library for Map Support.
* Added "Do not disturb" toggle to settings bottom sheet.
* Added Do Not Disturb setting duration options.
* Added logic to prevent notifications when Do Not Disturb is enabled.
* Added permission request for SCHEDULE\_EXACT\_ALARM for Do Not Disturb custom durations.
* Added logic to check the minimum app version before showing location button.

### Release 2.5.6

Released March 2025

#### Highlights

Updates to the UI for PTT Channel notifications, support for Adaptive Cards, support for Chat Bots. Added ability to pause, seek, restart audio message playback. Updates for checking the status of connected contacts (presences of the contacts). Updates to the application permission requests on Android 13 devices. General bug fixes.

#### Details

* Added settings bottom sheet accessible through the menu button.
* Added option to disable the automatic playing of audio messages.
* Updated styling of texts in settings bottom sheet.
* Refactored the UI bottom sheet for audio message playback.
* Added pause functionality on audio message playback.
* Added waveform seekbar for audio visualization.
* Added audio playback progress animation.
* Replaced the play/pause button with an IconButton for better control and styling.
* Added audio seek functionality.
* Added play/pause button to chat notifications.
* Fixed crash by changing PTT overlay screen to a full screen overlay instead of modal bottom sheet.
* Enabled back button dismissal for overlay window.
* Updated PTT channel name's text color scheme.
* Implemented Adaptive Card support.
* Updated support for Last Will Status of online contacts.
* Changed some usages of `lastStatus` into `lastWillStatus` to set the correct tab and icon/color for each contact.
* Added a Timber log for failed attempts to the Get Contact endpoint during last will processing, to aid in tracing possible failures.
* During the Allow Contact request, if the response is a 404 (not related), then do not generate an error event.
* Added POST\_NOTIFICATIONS to permissions requested.

### Release 2.3.20

Released December 2024

#### Highlights

Updates to support Android 14, more device application logs, sending PTT audio to a default channel, and to give additional support for Chat Bots.

#### Details

* Added FOREGROUND\_SERVICE\_MICROPHONE permission to the manifest.
* Updates to the service logic when closing Chat Bots
* Added new timber logs.
* Updated how broadcast receivers are defined.
* Updated application minimum SDK to 27.
* Updated pipelines to upload application to Play Store.
* Updated logic to prevent starting the Foreground Service when there are missing permissions.
* Added a toast message for missing permissions.
* Updated logging to included size of contacts list as well as filtered list of "active" contacts.
* Updated the logic to process the Last Will Topic for devices.
* Updated the Messaging model to include the device ID that sent the message.
* Updated Last Will topic processing logic to ignore events for current device.
* Added support for new Chat config "autoSendPttToDefaultChannel".
* Added support for new Chat config option "defaultChannelName".
* Added logic to monitor for network changes.
* Turned on minification of Chat Application to reduce download size.
* Removed the options menu button, as it not used.

### Release 2.3.7

Released November 2024

#### Highlights

Added new Chat Audio transcription support. Added integration with Chat Bots. Various updates to voice calls and improved logging.

#### Details

* Updated the Call Ended indicator.
* Created a new dialog for "device offline".
* Added logic to display when a device is offline.
* Added a basic "CallEndedDialog" that should appear in ChatScreen and ContactsListScreen when the other user has ended a call.
* Added a notification tone that plays when a call is ended by the other user.
* Added logic to ignore PTT button press when a user is not logged in.
* Added support for new configuration flag "audioTranscriptionEnabled", which allows for turn transcription off at the device level.
* Added "transcribedText" to the Chat display.
* Removed "audiovisualizer" third-party library.
* Added logic to interact with installed Chat Bots.
* Updated the Timber log levels in various places.
* Added "toSafeLogString" functions to data classes to redact sensitive information before representation in info-level logs.
* Updated the logic to refresh the Chat Bot when the contacts list is refreshed.
* Added a function that determines if device has an active telephony/voice/VoIP call, and included its result as one of the values checked for determining whether Chat should autoplay audio messages or not.

### Release 2.2.9

Released June 2024

#### Highlights

Fixed various exceptions and bugs.

#### Details

* Fixed a crash that occurs with pressing PTT button on Android 13.
* Fixed an exception (java.lang.IllegalArgumentException) that resulted from an invalid value in the height calculation.
* Fixed a string resource typo from 'Patricipating' to 'Participating'.

### Release 2.2.7

Released April 2024

#### Highlights

Added configurable settings to limit the length of voice messages. Added configuration to control how Chat interacts with the Zebra PTT button. Fixed various issues related to permissions not being given by default.

#### Details

* Fixed lack of notification banner and sound in Channels, which is triggered upon receiving a Voice Message that automatically played.
* Updated some Timber logs to info level.
* Updated Timber log for logging whether notification sound will play.
* Added configuration, voiceMessageLimitInSeconds, to limited the length of voice messages.
* Added logic to check for Camera permission before launching camera.
* Added logic to check for storage read permission before launching Gallery.
* Added logic to prevent audio recordings while in Secondary Auth (Reauth) mode.
* Fixed Android 13 issue when sending image attachments.
* Fixed image attachment file names.
* Added a new flag, disablePttUsageInBackground, to allow using PTT key only when Chat application is activly being used.
* Updated application to refresh the list of contacts when the device reconnects to the network.
* Added support for 'logLevel' setting within bfChat configuration.
* Added support for 'emsLogLevel' setting within configuration extended attributes.
* Fixed logic to request permissions, if not given.
* Updated the image upload logic to utilize the file MIME type of “image” or “video”.

### Release 2.1.7

Released November 2023

#### Highlights

Performance updates for contact loading and various fixes when application permissions are denied.

#### Details

* Added the application version text to the UI footer.
* Wrapped the registerReceiver() and unregisterReceiver() for PTT Button with try-catch blocks.
* Removed the auto contact refresh on application UI start, as not needed.
* Added checking for zero count value to avoid 'ArithmeticException: divide by zero' error.
* Added a try-catch for ArrayIndexOutOfBoundsException in CustomAudioVisualizer.
* Added a try-catch for barHeights\[it].value.dp and added additional error logs.
* Updated the AudioRecorder to handle cases where it is not properly initialized.
* Updated the AudioRecorder with better error handling.
* Updated to show a toast message in the ChatScreen when OnAudioRecordListener.onError is called to inform the user about the error.
* Updated the error handling within the MediaPlayer.
* Handled an exception when receiving an audio file when the application does not have audio permissions.
* Fixed a corner case issue when rapidly pressing back button.

### Release 2.0.17

Released October 2023

#### Highlights

Ability to override the notification sounds used for group and individual chats.

#### Details

* Added notification sound fetching from Launcher configuration.
* Updated Crash Handler library.
* Fixed the image timestamp display.

### Release 2.0.15

Released September 2023

#### Highlights

Refreshed the Chat UI, placing Online / Offline / Channel contacts into separate tabs. Changed the audio notification sounds so to differentiate from the Android standard sounds.

#### Details

* Added UI support for Online, Offline, and Channel tabs.
* Smoothed out audio visualization.
* Changed the Voice Message UI to a bottom sheet for recording.
* Added list of channel participants for each Channel.
* Added logic to disable video call buttons if either user does not have the voice app installed.
* Added logic to disable call buttons for offline users.
* Moved contacts in contact lists from Box container to Card to give theme elevation.
* Moved audio visualizer away from canvas to more traditional compose objects.
* Added logic to allow for previewing audio message on PTT overlay bottom sheet prior to sending.
* Added audio recording elapsed time during recording.
* Added elapsed time to PTT overlay window recording.
* Added custom notification sounds for chat and channel messages.

### Release 1.5.5 <a href="#release-155" id="release-155"></a>

Released June 2023

#### Highlights <a href="#highlights" id="highlights"></a>

Fixes for Device Token usage.

#### Details <a href="#details" id="details"></a>

* Updated the device token usage to first check Launcher configuration to ensure Key Management is enabled.
* Refactored the logic to always expect a string to be returned from the getDeviceToken fetch.

### Release 1.5.4 <a href="#release-154" id="release-154"></a>

Released March 2023

#### Highlights <a href="#highlights" id="highlights"></a>

New feature to send PTT messages to channels when Chat application is not in the foreground. Added security checks for blocked devices.

#### Details <a href="#details" id="details"></a>

* Added logic to remove all contacts from database if the device is blocked.
* Updated the logic that on detection of a blocked device, remove all contacts and messages.
* Added logic to the foreground service to listen to PTT button press.
* Added a voice recording overlay UI.
* Fixed audio recorder visualizer.
* Added logic to instantly send PTT message to a Chat Channel rather than prompting.
* Refactored the upload logic to a common voicefileuploader singleton so the functionality could be shared across the application.
* Added check for screen on for PTT button usage.
* Updated pending intent flags to signify immutability to prevent crashes on Android 12+.

### Release 1.4.25 <a href="#release-1425" id="release-1425"></a>

Released February 9, 2023

#### Highlights <a href="#highlights" id="highlights"></a>

Security updates for endpoint requests, many performance improvements and general bug fixes.

#### Details <a href="#details" id="details"></a>

* Added logic to send information to support services for certain actions.
* Added checks to prevent attachments from being available to send if the photo and camera applications are disabled in the configuration.
* Added logic to decline calls if the microphone is not available.
* Added logic to decline video calls if the camera is not available.
* Added a feature that when the back button is pressed, calls will be cancelled.
* Updated to close the soft keyboard when the edit text is disabled in chat activity.
* Updated the Chat activity to scroll to latest message when entering the activity.
* Updated the app themes to have theme.materialcomponent root.
* Updated camera support to work on Android 11+.
* Cropped the image displayed in text thread to prevent strange scrolling behavior when images load after entering the activity.
* Added a stop recording to remove button receiver to ensure any active recordings are stopped when the activity is stopped.
* Fixed the logic to not send off two messages.
* Updated the Data Services API calls to include the device Id in the header.
* Added the device Id to the messaging and file upload resources.
* Updated project to SDK 33.
* Updated many of the dependant library versions to allow inclusion of Key Management.
* Updated the endpoint requests to use the Launcher Provider device token.
* Fixed the Launcher Helper device token request by using the elvis format for retrieving the token from Launcher.
* Updated the manifest for Key Management usage.
* Added Support Service calls for post and publishing messages.
* Updated the device token inclusion logic to always fetch the latest token during any API requests.
* Added device token and device Id to file read endpoints.
* Updated logic to handle blocked response from Get Contacts endpoint.
* Updated logic so that when receiving images in messages will now generate a notification.
* Fixed logic to not show notification when autoplay is enabled and the message type is PTT.
* Updated Chat to remove dependency on API key being set in the Launcher configuration.
* Added logic to prevent files greater than 32MB from being sent. A dialog will be displayed indicating the restriction.
* Added logic to check for null values when processing the audio UI display for voice recording.

### Release 1.3.57 <a href="#release-1357" id="release-1357"></a>

Released September 29, 2022

#### Highlights <a href="#highlights_1" id="highlights_1"></a>

Introduction of the Chat Channels and Chat Roles support. Additional support for attaching images to messages.

#### Details <a href="#details_1" id="details_1"></a>

* Added the logic to handle Audio requests.
* Fixed sender not opening audio chat after acceptance.
* Changed the sender/destination chat topic when sending out the created message.
* Changed MessagingResource from DataHost to ChatHost.
* Added the Constant variables for the call subtypes.
* Added logic to handle declining of the message with a toast.
* Changed the logic so that the sending caller makes the room.
* Added 'Requesting Call' message in ChatActivity when requesting Audio or Video Call.
* Added grey overlay to most of screen when calling, preventing focus on recycler view or edit text.
* Refactored code to use '.apply {}' when editing data from objects.
* Set ChatEntryType to respective ENUM when reading a StatusAudio or StatusVideo from database.
* Added logic to send unanswered message to sender if a call is declined or missed.
* Fixed ‘unanswered’ message being sent to sender twice when Decline button is clicked.
* Refactored Twilio Logic to join room after 'request' message is sent.
* Added logic to automatically decline messages when the Voice Chat application is not installed on the receiving device.
* Created separate Notification Channel for Missed-Call Notifications.
* Fixed Call History showing incorrect timings.
* Moved Accept/Decline button code into respective handler functions.
* Made variables private when not used publicly.
* Replaced usage of messageService.publishMessage(…) with global function publishChatMessageModel(…), significantly increasing readability & reducing duplicate code.
* Removed Twilio library dependency.
* Implemented Logging for Declined Audio/Video Calls.
* Added logic to log completed calls to Support Dashboard.
* Added event logs for Twilio token errors.
* Added flags for ‘allowMessaging’, ‘allowAudio’, and ‘allowVideo’.
* Added logic to send image when send button is clicked.
* Generalized variable names, comments, and style names to use 'attachment' instead of 'image'.
* Added message for no Chat Roles for the user. Updated the IdP Role reading from Launcher to use ROLE, if not present, use GROUPS.
* Removed null checks in buildMessageEntity(..), replacing with fallback values in case a value is null.
* Call History immediately updated if manually rejected rather than only after timeout.
* Fixed double ringing for Message notifications.
* Fixed display of no IdP Groups message for non-patch API Service endpoints.
* Updated call decline toast to show decline reason.
* Updated logic to separate channel messages from user messages.
* Added logic to hide or show text entry in Chat Channel based on user's permissions for that channel.
* Added sender name and timestamp to message header in Chat Channels.
* Added profile image assets and updated the status circle to appear on top of those.
* Updated logic so that the PTT button does not work if the user cannot post/message in Chat Channels/chats.
* Updated logic to disable chat participant icon on non-channel chats.
* Added code to clear Chat notifications when the Chat service is stopped.
* Updated logic that whenever a user's status is changed, Chat will now also update their sender capabilities since they could have moved from device to Portal.
* Updated the Contacts list to always have 'swipe to refresh'.
* Updated the picture attachment logic to include a camera option.
* Added a safer way of setting variables, removed timber statements, returned false if allowContacts call fails.
* Updated logic to separate sender permissions from device capabilities.
* Replaced channel image attachment display logic with better method.
* Added guard against sending Portal users attachments.
* Added checks to ensure video and audio calls are allowed only when the device is capable.

### Release 1.2.5 <a href="#release-125" id="release-125"></a>

Released July 14, 2022

#### Highlights <a href="#highlights_2" id="highlights_2"></a>

First release of the BlueFletch Chat application. Allows for communications between device users at a location.

#### Details <a href="#details_2" id="details_2"></a>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.bluefletch.com/bluefletch-enterprise/product-guides/chat/release-notes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
