* Save cloud URL separately and add pref
- Save the cloud / remote UI url that is received during registration separately, and add a preference to use the cloud url instead of the external url
- Save the cloud / remote UI url and cloudhook url received during webhook config updates, to be able to support using cloud after the app was set up
- Clean up cloudhook url when logging out
* Add UI for "Use Home Assistant Cloud" url
* Cleanup
* Fix function order
- Update onBackPressed functions which have been deprecated to use the new OnBackPressedDispatcher and OnBackPressedCallback
- Indicate support for the predictive back gesture
* Use compressed entity changes for device controls
- Add support for the subscribe_entities websocket subscription which delivers initial state + changes in a compressed format to reduce data usage
- Use the new subscribe_entities format in device controls on supported Home Assistant versions
* Less duplicate code
* Add notify command for app-lock
* Add null check for optional parameters
* Only allow enabling app_lock by notify command if previously enabled by user
* Use constants for app lock command parameters
* Add BiometricManager check before turning on app_lock
* Remove 'hasLockEverBeenEnabled' in favor of only biometricmanager check.
* Improved value checking for app lock command.
Made setAppLock function suspending i.s.o. sepearate runBlocking calls.
* Show notification if no parameters were updated.
* improved parameter value checking
* Don't make changes when invalid data is provided
* Early check on argument validity for app lock commands
* Cleanup app lock command parameter validation
* Request notification permission during onboarding
- When using Android 13 or the minimal version, add a screen to onboarding to request to enable notifications on the device. This screen is based on iOS onboarding. When tapping Continue, on Android 13 this requests the system permission and/or on the minimal version this changes the websocket setting.
- Compile with and target SDK 33 (targeting required to be able to request notification system permission on demand)
* Add notification settings link in settings when off
- Show a new setting in settings for the user to enable notifications for the Home Assistant app, either because the permission was denied (Android 13) or the user manually turned off all notifications (Android 8-12).
- This new setting replaces the notification channels setting when everything is off; in this case there is no point managing individual channels. If at least one channel is on, the existing notification channels setting is shown instead.
* Compose tweaks
- Remove redundant content description for icon
- Change to a simpler scroll modifier
* Fix skipping notifications on minimal version
- Ensure that the value is actually saved to the database
* Post Bluetooth on/off commands as if invalid
- When using Android 13, post notification commands to control Bluetooth on/off as a normal notification as if they were invalid, as the function has been deprecated for the app
* Remove type that can be inferred
- Update Gradle to latest version (7.5.1)
- Update Android Gradle plugin to latest version (7.3.0)
- Move package property out of manifest into gradle build files namespace as recommended
* Merge Follow Home Assistant/Follow System Settings theme
- As these two themes behave the same now, don't present two options but instead just one. The default setting has been renamed back to "Follow System Settings" to best match expectations. Internally the "android" setting still works, settings will show "Not set".
* Remove useless webview force dark
- The WebView force dark settings are no longer required (and will no longer be supported when targeting Android 13), as the latest appcompat/webview/HA frontend already respect the app's theme setting and allow overriding it
* Add support for showing custom icons in device controls
* Clean up and set color based on state
* Set icon size and adjust colors based on domain
* Move color values to resources and add more color options from source
* Review comments
* Only set the icon if it exists in the library
* Add commands to control screen brightness and a sensor to get the value
* Minor file clean up
* Review comments
* Rename Device Settings to Display Sensors
* Add support for intent scheme URI in clickAction and actionable notifications
* Add a new prefix for app links in actions
* Rename app link to deep link to be more precise
* Use correct intent prefix
* Take user to the play store if the app is not installed
* Fix taking user to the market if app is missing, remove ability for deep links since we can't get the package name
* Only open the play store if we have an actual package to open to
* Add support for using BSSIDs for internal connection
- Add support for entering BSSIDs to use for detecting when the internal connection URL should be used. These are saved like any regular SSID, but contain the prefix "BSSID:".
* Add link to documentation
* Fix full screen mode for all devices
* Hide system UI when we regain focus and a video is still full screen
* Revert theme changes
* Remove unneeded line break
- Set the thumbnail template for the camera control to active as long as the camera isn't unavailable and the app was able to download an image, to show the camera image more often and better match the frontend.
- Instead of receiving all state changes when the device controls are open, only receive state changes for entities that were added as controls. This potentially reduces the amount of data used while controls are open.
* Improve adding quick settings tiles
- Use the new option available on Android 13 to prompt the user to add a tile to the quick settings panel, if a tile wasn't already added
- Switch Toast to Snackbar
- Move some logic from the manage tiles view to viewmodel
* Only show subtitle field when supported
- Setting a tile subtitle is only supported on Android Q+, so don't show the field on versions before that!
* Deeplink into app for tiles that aren't setup
- Instead of disabling a tile if it isn't setup, if the user is logged in set it up as inactive with the default icon/label and deeplink into the app settings with a notice that it needs to be setup first. This provides a better first use experience, as the user can simply tap it to setup instead of requiring them to manually go to the settings.
* Always do Wear onboarding on phone
- Switch the Wear onboarding to always use the sign in flow on the paired phone, instead of offering the option to sign in completely on the watch.
- When opening the companion app using the Wear app, immediately link the user to the list of instances or sign in screen.
- Use standard OAuth flow for devices without companion app installed.
- Fix type casting of location preference in Wear onboarding result.
* Fix ListenableFuture await import