# Release Notes

### Release 4.4.1

#### Highlights

This release introduces a redesigned Force Lock screen with configurable branding options, significant screensaver improvements including a default screensaver and smarter asset management, and enhanced Luggage Tag stability. Several bug fixes address device-specific behavior on Zebra and GETAC hardware, notification handling edge cases, and a smoother in-place upgrade path from Launcher 3.

#### New Features & Improvements

* Force Lock Screen Redesign — The force lock screen now supports configurable header and footer fields with automatic text contrast based on background color.
* Screensaver Enhancements — Added a default screensaver, periodic asset change detection, and improved handling when switching between local and remote asset sources.
* External Site on App Install — External site launch now only triggers when the specific configured package is installed.
* Automatic Chat App Permissions — The launcher automatically grants required permissions to the chat app upon installation.
* GETAC Clear Recents Delay — Added a clearRecentSelectiveDelay config property to tune the timing of selective clear operations on GETAC hardware.
* Luggage Tag Stability — Improved Luggage Tag reliability across reboots and activation/deactivation cycles.
* Launcher 3 → 4 In-Place Upgrade — Bumped the provider database version to support upgrading from Launcher 3 without an uninstall.

#### Bug Fixes

* Fixed a null pointer exception when upgrading directly from Launcher 3.
* Fixed an invalid license detection issue that prevented the launcher from starting in certain deployments.
* Fixed an issue where the initializing screen would reappear after a config push.
* Fixed the extended display session prompt for delayed cradle logout not displaying correctly.
* Fixed secure notifications being incorrectly cleared during screen-off when preserveLockedNotifications was enabled.
* Fixed site location not refreshing on startup after the refreshSiteOnStartup flag was deprecated.
* Fixed the session widget background color not applying when set in the config.
* Fixed Force Lock screen default title and message values and a crash caused by invalid color strings.
* Fixed screensaver asset path templates not resolving until a config reload when siteId was used.
* Fixed missing Spanish translations for search and suggestions labels.
* Fixed clear recents behavior on GETAC and Zebra devices.
* Fixed a config replacement issue caused by unnecessary file delete operations in the config manager.

### Release 4.3.98

#### Highlights

Adjustments to site location handling, widgets, secure notifications, and Chrome Custom Tabs (CCT) configuration.

#### Details

* Refactored the site location service using a Strategy Pattern to handle automatic detection, external app integration, and site list matching scenarios.
* Updated the system to support sideloaded sitelist.csv files when a site list URL is not provided in the configuration.
* Added new interface methods to the demo variant of SiteManagerImpl.
* Implemented a fix to only register the site info receiver when site location is enabled.
* Removed legacy site location initialization methods and the redundant \_useStrategyPattern flag.
* Updated for backward compatibility with deprecated methods and extras.
* Fixed issues on custom fields when using replacement values and trimmed unwanted white spaces from formattedField.
* Added a try-catch block to handle volume-setting exceptions in the Volume Manager.
* Updated the AppInfo class to use badge counts for equality checks and forced workspace reactions on badge count changes.
* Added a default value for customField.
* Added Chrome Custom Tab (CCT) customization via remote configuration, including settings for URL bar hiding, title visibility, and back arrow behavior.
* Refactored widget coroutines to a dedicated scope that is cancelled when the widget list is cleared.
* Added a network available callback to allow the site service to run when a network is available.
* Added logic to check for a default site ID when no location match is found.
* Cleaned up the site manager and converted autodetection strategy events to sealed classes.
* Moved site file downloads to strategy constructors to prevent blocking site selection while waiting for the network.
* Removed downloadFilesFlow and replaced with a downloadFileFlow.
* Moved site\_worker\_tag to sitemanager interface for shared use.
* Added tags to site file downloads to allow cancellation of queued work during configuration changes.
* Updated the Assets Manager to clear pending work on configuration changes.
* Implemented secure notification processing and properties, such as playAudioIfLocked and snoozeDuration, aligned with Launcher 3.
* Removed the deprecated NotificationDatamanager.
* Fixed Knox platform issues when requesting external file permissions.
* Added open modifiers and protected functions to platform classes to allow for easier extension.
* Implemented the ability to set the default browser and dialer at the platform level.
* Optimized the controller to only instantiate the secure notification manager when enabled to reduce memory usage.
* Fixed secure notification bubble offsets and visibility issues after the screen is turned on.
* Fixed Authorized Header issues.
* Added a new theme configuration, fadingPageIndicators to show or hide the page indicator.&#x20;
* Updated the inactive page indicator to remain visible when darkTheme is false.
* Updated SecureNotificationManagerImpl to make \_notifications ConcurrentHashMap thread safe.
* Updated SecureNotificationManagerImpl to remove coroutine when updating notification.
* Updated LauncherNotificationListener to make instance Volatile.
* Updated SbnHelper to add a method on handling all kinds drawables and to prevent app crash.
* Implemented a delayed cradle logout timer dialog for extended displays.
* Updated LauncherNotificationListener to implement a thread safe synchronized companion variable.
* Fixed an issue in extended display where apps would not stay open on the main device.
* Added support for supplying custom extras data to app widgets.
* Set all default config for CustomTabConfig.kt to restrictive
* Added new method cancelNotifications. This new method will handle the removing of multiple notification via swipe or close button.
* Removed Launcher and Extended display state shouldUpdateBadgeNotification.
* Implemented HashMap to JSONObject Conversion of bfbrowser.
* Fixed flickering widgets during re-authentication and app badge updates.
* Resolved an issue where logout from Temporary Admin did not occur on reboot.
* Granted the Launcher widget display access on Zebra devices.
* Migrated revised CCT behavior from Launcher 3.
* Updated \_customTabPackages to make it a Set instead of MutableSet, since it is read only.
* Added launchFallback to make sure custom tabs will get launched even if the defined package or browser is not existing.
* Enabled the preservation of missed notifications on the lock screen.
* Set BlueFletch Phone as default dialer when bf-phone package is present.
* Implemented allowWidgetAccess for devices allowing Platform Service to run ADB commands.
* Updated the NotificationReceiver to allow autologin messages to trigger authentication.
* Fixed search widgets failing to switch to light mode and custom widget headers flashing default configurations.
* Updated AppInfo with an isActivity property to identify applications within footer widgets.
* Resolved failures in AutomaticPermissionControl.
* Fixed intermittent issues where the site list failed to fetch the provided URL on the first launch.
* Implemented the removeAccounts platform method for Samsung Knox.
* Consolidated download logic back into SiteManagerImpl.
* Moved site\_url set in shared preferences until after successful copy
* Fixed an issue where auto selecting a location does not apply when refreshSiteRequiresNetwork is false.

### Release 4.3.70

#### Highlights

Fixes contents of duplicate app folders. Corrects the application of the "roundedCorner" icon shape. Adds value replacement.

#### Details

* Adds `HIDE_NAVIGATION_OPEN_ZONE` configuration setting (default: `false`).
  * &#x20;Hides system navigation bar in OpenZone when config is `true`. The navigation bar will always shows in Authorized view regardless of config.&#x20;
  * Use `WindowInsetsControllerCompat` for platform-agnostic control.
* Fixes issue where "roundedCorner" icon shape used "circle".
  * Updated `ThemeConfig` to remove lowercase in `_iconShape`.&#x20;
* Refreshes the launchable apps whenever site changes.
* Applies replacement variables in layout labels (app, folder, shortcuts, widgets etc.).
* Performs value replacement for `data` field for layout actions.
* Renames `processLabel` to `processReplacementData(inputValue: String?`) Removed `updateInstance()`.
* Fixes contents of duplicate app folders that are hidden.
  * Modifies `data` class's constructor parameter contents to a private val `_contents` and adds a getter for contents that will be publicly available to access; in this case we ensure that the `_contents` is being updated.
  * Makes `_contents` private since there is already a public variable for contents.
* Validates all files are downloaded before starting screen saver and turns off screen saver if config has been updated.

### Release 4.3.48

#### Highlights

Initial production release for Launcher 4 and Launcher 4 for Healthcare.


---

# Agent Instructions: 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:

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

The question should be specific, self-contained, and written in natural language.
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.
