* 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
Add toggle for assistant app intent filter on Wear
- Adds a toggle for enabling/disabling Assist as an assistant app (= intent filter on Assist activity), as users may not be able to change the app used after choosing 'Always' and Wear OS 2 doesn't ask the user which app to use which can result in Assist instead of the Google Assistant being forced.
* Add CarInfoSensorManager
* use overrideLibrary instead of increasing minSdk
* use fullImplementation
* ensure that the sensor is enabled
* check sensorid for required permissions
* fix formatting
* start app notification
* merge CarInfoSensorManager into AndroidAutoSensorManager
* fix formatting
* fix merge error
* add other sensors
car name, manufacturer, manufacturing year, odometer, ev status (connected, charging port open/close)
* prevent multiple notifications
* apply review comments
* add "needs to be started" state to sensors
* apply review comments
* add android auto channel
* set car battery level as diagnostic sensor
* remove onNewIntent (not needed)
* formatting
* remove notification code
* replace "android_auto" prefix by "car"
* move carinfo sensors to main instead of full
* move android car sdk override to main
* update unavailable message
* add hasSensor method
* hide sensors for automotive
* move automotive check and limit sensors to full version
* remove _level from sensor names and ids
* remove alreadySentMessage
* Implement a frontend-like single entity picker
- Adds a new Composable `SingleEntityPicker` which aims to provide a text input with autocomplete search for entities like the frontend, where you can pick one
* Improve filtering to allow suggestions with space, searching for entity IDs
- Trim search input so the space automatically added after an IME suggestion is ignored
- Also search entity ID but sort those results second, friendly name keeps priority
Add Auto notification extension + vector icon
- Add an option to have notifications show up on Android Auto
- Apply color filter to MDI notification icons as Android Auto doesn't make them white
- Switch default notification icon for vector icon
Implement suggestion area in settings
- Add a suggestion area to the top of the main app settings screen where very important settings can be promoted; to start setting HA as assistant app and enabling the notification permission
* Add icon dialog based on Jetpack Compose
TODO
* Migrate to new icon dialog
* Migrate old database
* Don't wrap with drawablecompat
* Rebase fixes and updates
- Fix and update database migration
- Fix dependencies
- Fix shortcut icons
- Fix ComposeView in AlertDialog not working by switching implementation to DialogFragment
- Fix icons that no longer exist
- ktlint
* Visual compatibility
- Automotive asset
- Handle icon ids in shortcuts to prevent users losing icons when updating shortcuts
- Add padding, color filter to shortcut icons to keep icons consistent with older icons
- Increase button widget icon padding to keep sizing consistent
- Add tip to dialog about searching in non-English languages
* Fix line endings
---------
Co-authored-by: Tiger Oakes <contact@tigeroakes.com>
* Add troubleshooting menu to settings, with Thread credentials sync
- Add a troubleshooting menu to the app settings which includes logs/debugging settings
- Add an option to manually sync Thread credentials and view the result
* Less technical messages matching frontend
* Use Assist pipeline STT/TTS on Wear OS
- Update Assist pipeline support on Wear OS to use the pipelines' STT/TTS capabilities, if available and if the app has the required permission
- Move UrlHandler functions (app) to UrlUtil (common)
* Create a base AssistViewModel for sharing code
- Creates AssistViewModelBase in common to share Assist tasks that appear in both the main app and watch app
* Keep screen on during voice input to avoid interruption
* First attempt at a new release model.
* Fix bad syntax
* Bump year and month with another job
* Use the plugin's version in apps.
* Make sure to generate the pre release weekly.
* Review Comments.