* Make `async_flash_firmware` a public helper
* [ZBT-1] Implement flashing for Zigbee and Thread within the config flow
* WIP: Begin fixing unit tests
* WIP: Unit tests, pass 2
* WIP: pass 3
* Fix hardware unit tests
* Have the individual hardware integrations depend on the firmware flasher
* Break out firmware filter into its own helper
* Mirror to Yellow
* Simplify
* Simplify
* Revert "Have the individual hardware integrations depend on the firmware flasher"
This reverts commit 096f4297dc.
* Move `async_flash_silabs_firmware` into `util`
* Fix existing unit tests
* Unconditionally upgrade Zigbee firmware during installation
* Fix failing error case unit tests
* Fix remaining failing unit tests
* Increase test coverage
* 100% test coverage
* Remove old translation strings
* Add new translation strings
* Do not probe OTBR firmware when completing the flow
* More translation strings
* Probe OTBR firmware info before starting the addon
* Initial implementation of hardware update model
* Fixes
* WIP: change the `homeassistant_sky_connect` integration type
* More fixes
* WIP
* Display firmware info in the device page
* Make progress more responsive
* WIP: Yellow
* Abstract the bootloader reset type
* Clean up comments
* Make the Yellow integration non-hardware
* Use the correct radio device for Yellow
* Avoid hardcoding strings
* Use `FIRMWARE_VERSION` within config flows
* Fix up unit tests
* Revert integration type changes
* Rewrite hardware ownership context manager name, for clarity
* Move manifest parsing logic into a new package
Pass the correct type to the firmware API library
* Create and delete entities instead of mutating the entity description
* Move entity replacement into a `async_setup_entry` callback
* Change update entity category from "diagnostic" to "config"
* Have the client library handle firmware fetching
* Switch from dispatcher to `async_on_state_change`
* Remove unnecessary type annotation on base update entity
* Simplify state recomputation
* Remove device registry code, since the devices will not be visible
* Further simplify state computation
* Give the device-less update entity a more descriptive name
* Limit state changes to integer increments when sending firmware update progress
* Re-raise `HomeAssistantError` if there is a problem during flashing
* Remove unnecessary state write during entity creation
* Rename `_maybe_recompute_state` to `_update_attributes`
* Bump the flasher to 0.0.30
* Add some tests
* Ensure the update entity has a sensible name
* Initial ZBT-1 unit tests
* Replace `_update_config_entry_after_install` with a more explicit `_firmware_info_callback` override
* Write the firmware version to the config entry as well
* Test the hardware update platform independently
* Add unit tests to the Yellow and ZBT-1 integrations
* Load firmware info from the config entry when creating the update entity
* Test entity state restoration
* Test the reloading of integrations marked as "owning"
* Test installation failure cases
* Test firmware type change callback failure case
* Address review comments