Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

---

## [1.2.3] - 2026-03-11

### Fixed
- **False-positive core Downloader conflict notification:** the check that detects whether the built-in `downloader` integration is active was incorrectly using `hass.config.components`, which can contain `"downloader"` even when `downloader:` is not present in `configuration.yaml` (HA may register available built-in integrations at boot). The check now inspects `hass.services.async_services()` instead, which only lists domains with registered services — a reliable indicator that `async_setup()` was actually called for that integration. Additionally, the check is now deferred until after HA has fully started (via `hass.async_at_start()`) to guarantee all YAML-configured integrations have had a chance to register their services before the conflict detection runs.

---

## [1.2.2] - 2026-03-10

### Fixed
Expand Down Expand Up @@ -215,6 +222,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Service `media_downloader.download_file` with optional subdirectories, custom filenames, overwrite control, and per-download timeout.
- Events: `media_downloader_download_started`, `media_downloader_download_completed` (with `success` and `error` fields).

[1.2.3]: https://github.com/Geek-MD/Advanced_Downloader/compare/v1.2.2...v1.2.3
[1.2.2]: https://github.com/Geek-MD/Advanced_Downloader/compare/v1.2.1...v1.2.2
[1.2.1]: https://github.com/Geek-MD/Advanced_Downloader/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/Geek-MD/Advanced_Downloader/compare/v1.1.6...v1.2.0
Expand Down
48 changes: 30 additions & 18 deletions custom_components/advanced_downloader/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,24 +74,36 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
# Warn if the core "downloader" integration is loaded (configured via
# configuration.yaml). Advanced Downloader is a full superset of its
# functionality; having both active serves no purpose and may cause confusion.
if "downloader" in hass.config.components:
_LOGGER.warning(
"The built-in 'downloader' integration is active alongside Advanced "
"Downloader. Remove 'downloader:' from your configuration.yaml and "
"restart Home Assistant to avoid redundancy."
)
_pn.async_create(
hass,
(
"The built-in **Downloader** integration is loaded in your "
"configuration. **Advanced Downloader** provides a full superset of "
"its functionality.\n\n"
"To avoid redundancy, remove `downloader:` from your "
"`configuration.yaml` and restart Home Assistant."
),
title="Advanced Downloader: Remove core Downloader integration",
notification_id="advanced_downloader_core_downloader_conflict",
)
#
# The check is deferred until HA has fully started so that all YAML-configured
# integrations have had a chance to register their services. We test for a
# registered service rather than inspecting hass.config.components, because
# hass.config.components may contain "downloader" even when the integration is
# not explicitly configured (e.g. available built-in integrations are scanned
# at boot). A service is only registered after a successful async_setup(), so
# this is a reliable indicator that downloader: is present in configuration.yaml.
@callback
def _check_downloader_conflict(_: HomeAssistant) -> None:
if "downloader" in hass.services.async_services():
_LOGGER.warning(
"The built-in 'downloader' integration is active alongside Advanced "
"Downloader. Remove 'downloader:' from your configuration.yaml and "
"restart Home Assistant to avoid redundancy."
)
_pn.async_create(
hass,
(
"The built-in **Downloader** integration is loaded in your "
"configuration. **Advanced Downloader** provides a full superset of "
"its functionality.\n\n"
"To avoid redundancy, remove `downloader:` from your "
"`configuration.yaml` and restart Home Assistant."
),
title="Advanced Downloader: Remove core Downloader integration",
notification_id="advanced_downloader_core_downloader_conflict",
)

hass.async_at_start(_check_downloader_conflict)

# Warn if Video Normalizer is also configured as a standalone integration.
# Its code must remain installed (Advanced Downloader imports from it), but
Expand Down
2 changes: 1 addition & 1 deletion custom_components/advanced_downloader/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
"issue_tracker": "https://github.com/Geek-MD/Advanced_Downloader/issues",
"quality_scale": "legacy",
"requirements": [],
"version": "1.2.2"
"version": "1.2.3"
}