* Support for Thread "import credentials" frontend action
- Add support for the frontend action to import Thread credentials, or better said export Thread credentials from the device. This is essentially a very basic sync.
* Rename/reorder reused Matter code
- Change names and order of reused Matter code for Thread importing to prevent potential confusion
* Update minimal implementation
- Fixes the button widget authentication dialog automatically being dismissed when triggered on Android 14 QPR1+, because the window was not in the foreground. It looks like the framework check for this was bugged before QPR1, and the Home Assistant app was showing the authentication dialog before the window (which is transparent) was in the foreground.
- Addresses the following warning: The option setting 'android.defaults.buildfeatures.buildconfig=true' is deprecated. Each module uses the BuildConfig class so it's added everywhere.
* Add Wear OS TLS client certificate authentication (TLS CCA) support
Wear OS does not currently allow the user to install certificates to the
system-wide KeyChain for TLS CCA support. This commit adds support for
using certificates from the app-specific Android KeyStore with UI for
setting up a certificate during the Wear OS onboarding process.
The manual step in the onboarding process is required since we cannot
transmit certificates of the Android KeyChain because they are not
extractable.
In particular, this commit adds the following changes:
* KeyStoreImpl as an additional KeyChainRepository interface
implementation for loading and storing keys to the application's
KeyStore. TLSHelper uses KeyStoreImpl as a fallback key manager.
* UI for selecting a certificate file with GET_CONTENT intent during
Wear OS onboarding in OnboardingActivity if it is detected that the
Home Assistant may require TLS CCA. The UI includes a password check
for the PKCS12 container.
* During onboarding the app sends the raw PKCS12 data to Wear OS
together with the container password. The connection is assumed to be
encrypted and trusted so that no additional encryption is necessary.
* Move PKCS12 password check to lifecycle scope
* Remove redundant try-catch when loading PKCS12
* Simplify MobileAppIntegrationView layout code
- When using the device controls panel instead of individual/native controls on Android 14, also check the setting for using controls while the device is locked and if so block the panel (as the frontend doesn't have a read only mode).
Fix wrong attribute name for the target temperature step. Correct one is target_temp_step (which is returned by the API) instead of target_temperature_step
* mobile_app_notification_cleared for wearos
* Fix imports
* Remove database id extra
* Fix whitespace
* Reformatted imports and added the receiver to the manifest
* Move `handleDeleteIntent` to common
* Added a sensor to detect if the hotspot is enabled.
* Validate if we aren't running a watch before showing hotspot sensor.
* Fixed code style issues with the linter.
* Fix instant update for hotspot-sensor.
* Update hotspot icon to access-point instead of wifi.
- Shows the server name instead of a generic "Home Assistant" to prevent confusion when the app cannot connect in the WebViewActivity, when using multiserver.
* Update launcher icon, Play Store feature graphic
- Update launcher icon to better match other Android app launcher icon sizes
- Update Play Store feature graphic to new version
* Cannot deduplicate this launcher icon on Wear
* ktlint
* Add first draft for NFC sensor
* Rename NfcSensorManager.nfcSensor to nfcStateSensor
* Move NfcSensorManager to the common module
* Add BroadcastReceiver subscription to NfcAdapter.ACTION_ADAPTER_STATE_CHANGED in both the app and wear modules
* Remove TODO comments
* Change updateType to INTENT
* Convert simple methods to expression body
* Change mdi:nfc to mdi:nfc-variant
* Fix docs URL
* Reword NFC sensor manager according to the PR suggestions
* Update icon
- Replace old icon with the new icon
- Update app primary color to new blue tint
- Deduplicate resources
* Update feature graphic
* Decouple app icon color from main color
* Add location history (location, trigger, result)
- Initial setup saving data, no UI, cleanup or preferences yet
* On/off setting, limit history size and basic UI
- Add a on/off setting for location history (default on)
- Limit the history size to 48 hours, any older entries will be deleted during regular sensor updates
- Add a basic UI for location history based on paging considering the possible data size with multiserver/high accuracy. The list looks good and shows status at a glance, detail view still needs work.
* Finish expanded UI
- Make the expanded UI nicer and show relevant data, buttons for opening the location in a maps app and sharing log data
- Add empty states for location history
* Filter by state, improve list speed
- Add option to filter by state
- Simplify Room configuration and sort by indexed ID to improve list loading speed
* Remove duplicate source
* Fix minimal
* Split sent into sent and failed to send
* [WIP] Prepare camera snapshot tile
* Deduplicate refresh views
* Get/save tile config in the database
* Deduplicate haptic click, add to camera refresh
* [WIP] Camera tile settings UI
- Create UI to set camera tile settings
- Reuse shortcut tile settings activity as a general tile settings activity
* Rename camera snapshot tile to camera tile
* Cleanup: camera entities selection, empty state, preview image
- On initial load also create a list of camera entities to make it possible to select them without showing up elsewhere in the app
- Add text to empty state instructing the user to set a camera
- Update tile preview images
* Fix logged out state on missing tile config
* Force tile update on login
* Scale bitmap to fit inside screen size
- Scale the received image to a bitmap that does not exceed the screen size to ensure timely refreshes and prevent parcels that are too big
* Only use the base URL during onboarding
* Use HttpUrl Builder to construct proper URL
* Move variable to try/catch block
* Only apply logic to NC URLs as those do not have custom path
* Only parse the end of the URL
* Deduplicate code per review
* Prepare controls panel activity for Android 14
* Allow controls panel to work while locked
* UI to enable/disable controls panel
- Disable panel by default
- Add area to controls settings on Android 14 to enable/disable panel
* Panel server/path settings
- Add setting to choose which server and path to use for the panel
* Remove transition animation for panel
* experience -> mode
* Fix deleting orphaned Thread credentials
- Deleting orphaned Thread datasets (= datasets for servers that have been deleted for the app) actually deleted current datasets. No real harm except it's deleting stuff and adding it again.
* Log app added preferred Thread network details for debugging
* Always delete Thread datasets using placeholder on >=2023.9
* More detailed log for update app added dataset action