* 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
* 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
- When reading service data from the database, make sure to also add custom fields.
- Fix RecyclerView not setting fields to empty when no value is present, potentially showing input from other recycled fields if the field doesn't have any value.
- Fix adding a new custom field destroying any input currently held in the views by using a specific insertion method instead of all changed, which will reset the values.
* 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
* Squash merge Migrate to MenuProvider (#2974) by @NotWoods
* Merge fixes
* Update sensor detail fragment menu for multiserver
* Menu fixes/additions
- Add HelpMenuProvider to Android Auto favorites
- Fix notification history fragment having no view because of missing super call
- Fix crash in device controls view if a server that is offline is selected
* ktlint
* Simplify some code
- Undo formatting change in SettingsActivity
- Don't require each activity to convert the string to URIs if we can do it in one place
* Remove setHasOptionsMenu(false) usage
* 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.
* 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....
- Hide already added instances when adding another server to the app when found in discovery
- Show already added instances with their external URL in discovery when logging in a Wear OS device
* 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
* Replace OutlinedTextField with TextField
* Text field consistency updates
- Replace `OutlinedTextField` with the filled `TextField`
- Replace server dropdown button with server dropdown menu
* Resume Assist voice input on new intent (as assistant app/brought to front)
* Use constants for android.intent.action.ASSIST
- android.intent.action.VOICE_ASSIST is marked as internal
* 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 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
- It looks like not all devices keep the original settings names, fallback to the 'manage default apps' intent if we cannot directly open the screen for the assistant app setting
- Don't suggest setting HA as the assistant app on Android L as this setting doesn't exist yet
- Allow suggesting setting HA as the assistant app on Android M as this setting was added in M
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
- Thread credential syncing uses the provided CoroutineScope to run other functions that throw exceptions. When using a normal Job a thrown exception will mean that everything in that scope is cancelled and propagates, even if caught. That isn't wanted so use a SupervisorJob instead when running this function to make sure that when caught nothing else stops.
* 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