* 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.
* Always send device class during registration
- Always send the device class for a sensor during registration to overwrite any existing invalid values
* Only send sensor registrations with null properties to core 2023.2+
Update tiles logged out state to prevent cut off overflow
- Limit length of logged out state string to prevent text cut off and shorten strings to help with translations
- Fix inconsistent shortcuts tile name
* 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
* 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
* Add/update/delete Thread credentials by border agent ID
* Multiserver: only keep one HA credential, handle credentials for deleted servers
- Make sure the app only stores one HA credential that matches the preferred credential for the server executing the sync.
- Create an 'orphaned Thread credentials' system to be able to delete credentials for servers that have been previously deleted.
* Fix minimal
- Update to Kotlin 1.9
- Update to Compose 1.5 and Compose Wear 1.2, both depend on and are required for Kotlin 1.9. Compose Wear includes lazy classes moving to a different package so updated imports.
- Update to AGP 8.1.1 to remove compatibility warning
- Update Navigation Compose to 2.7.1 as it uses Compose 1.5 internally
- Update Accompanist to 0.32 as it uses Compose 1.5 internally
- Switch Room to KSP instead of kapt because this (latest stable) release doesn't work with Kotlin 1.9 otherwise. As a result, we no longer need to specifically enable incremental compilation.
* Android Auto: Set icon color when entity is considered in an active state
* Add link to frontend code for determing active state
* Add lawn_mower domain and a check on supported colored domains
* Split up isActive and state colored domains
* Update map screen
* [WIP] Widget tap action: toggle entity
* Add feedback on press and failure
* Share code for pressing on entities
* Align cover press action
- Toggle will stop if possible when opening/closing if supported so prefer toggle instead of open/close
* Toggle by default if supported
- Set the default tap action for supported entities to toggle instead of refresh
* Update widget description
* Add support for alarm control panels in android auto
* Check for domain when checking if there is a code
* Check that armed_away is a supported state
* Review comments
* Add some missing strings, match state casing with HA core
Assist last used: remember STT and record before connected
- For the last used pipeline for Assist, remember whether or not it supports STT input, and if it does start recording proactively/as soon as possible to avoid missing voice input while doing network checks.
- Fix potential wrong server while sending voice data.
- Fix voice input remaining active after getting an error response.
* Initial work on migrating plugins to catalogs.
* Remove Enterprise Build profiling since we really don't use it.
* Use a common Java Version and sdk versions.
* ktlint
* Review comments.
* Extract JSONArray -> List<String> conversion to extension fun
* Refactor navigation around Shortcuts Tile settings
* Add ShortcutsTileId enum class
* Introduce multiple ShortcutTile subclasses and modify settings UI and storage to support multiple Tiles
* Check if correct ShortcutsTileId is passed as parameter to BaseShortcutTile
* Update TileUpdateRequester usages to account for multiple Tiles
* Add entity count to Shortcut Tile list in Settings
* Fix ktlint errors
* Fix more ktlint errors
* Extract string resource
* Add MULTI_INSTANCES_SUPPORTED to ShortcutsTile to be able to use any number of Tiles
* Refresh the list of Shortcut Tiles in the Settings without needing to restart the app
* Remove test logs
* Update androidx.wear.tiles:tiles to the latest version which doesn't yet require API 34 compileSdk version
* Fix crash when the preference's value is "{}"
* Fix crash when key String is "null" and converting to Int
* Rename placeholder variable name
* Add a comment explaining why to save the tiles in a getter
* Return emptyList() directly for clarity
* Remove icons from "Shortcut tile #n" entries in Settings
* Pass emptyList instead of using the non-null assertion operator to prevent NPEs in edge cases
* Refactor getTileShortcuts and getAllTileShortcuts in WearPrefsRepositoryImpl.
Make the code more readable and understandable, and reduce code duplication.
* Make it explicit that intKey is only intended to be null if stringKey == "null"
* Rename getTileShortcuts to getTileShortcutsAndSaveTileId and make it save the tileId not only when there's a null key in the map, but also when the tileId is not yet in the map. This way, actual Tiles and the tileId keys will be more in sync.
* Handle adding Shortcuts Tile immediately after updating the app to a new version which introduces support for multiple Shortcuts Tiles.
* Show message in the Settings when there are no Shortcuts tiles added yet.
* Refine message in the Settings when there are no Shortcuts tiles added yet
* WIP: ConfigShortcutsTile action
* Update comments about Wear OS versions
* Finalize ConfigShortcutsTile feature by applying @jpelgrom's suggestion to OpenShortcutTileSettingsActivity
* Only wrap the code in runCatching which is expected to throw an Exception under normal circumstances, when the pref value needs to be migrated from the old format.
* Call getTileShortcutsAndSaveTileId in OpenShortcutTileSettingsActivity
* Remove unnecessary stuff
* First Steps into making Gradle Catalogs
* Rename a couple dependencies.
* Downgrade compose compiler since it'll take more to bump the kotlin version apparently.
* Code review comments.
* Refactoring these are painful.
* Now I know my ABC, next time wont you sing with me....
* Android auto: default to favorites if defined
* Fix changing servers
* Fix empty favorites list
* Review comments
* Account for extra grid items when showing favorites
* Switch to grid view for home screen, show all domains when there are no favorites for the server
* Review comments
* Clean up and move some methods to util
* Collect favorites with allEntities
* Review comments
* Move native mode logic back
* Check distraction again in domain screen
* Use base class to get distraction optimized variable
* Send blank template if user is not logged in
* Mark variables as private
* Fix icon resolution for grid items
* Show measurement unit in Wear OS complication
* Extend existing `friendlyState` method
* Make showing unit configurable (defaulting to false)
* Feedback fixes
* Add favorites selection for Android Auto
* Move reorderable to implementation
* Small clean up
* Hide from minimal build
* Show on automotive builds and change some titles to match that device
* Update strings to be more precise about driving optimized
* Review comments
* Switch from string set to string to preserve order
* Move some conversion logic to PrefsRepository
* clean up
* Review comments
* Consistency updates
* Apply car prefix to car sensors, add some logging around new car sensors
* Update state based on reported status, minor clean up
* Make code more concise per review comment
* Use unavailable when status is not given