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
39 changes: 39 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# =============================================================================
# Debian-based Home Assistant development container.
#
# The official `homeassistant/home-assistant` image is built on Alpine Linux
# (musl libc), which the VS Code Server (Node.js) cannot run on. This image
# uses Debian (glibc) and installs Home Assistant Core via pip, so the custom
# component can be developed live inside the container (mounted at
# /config/custom_components/universal_notifier).
# =============================================================================

FROM mcr.microsoft.com/devcontainers/python:3.13-bookworm

# System libraries used by Home Assistant Core and common integrations.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ffmpeg \
libturbojpeg0 \
libjpeg62-turbo \
libxml2 \
libxslt1.1 \
tzdata \
&& rm -rf /var/lib/apt/lists/*

# Tooling: uv (project dependency management) + Home Assistant Core (latest stable).
# Home Assistant is installed system-wide so the `hass` entry point is on PATH;
# the project's own test dependencies are managed separately by `uv sync`.
#
# NOTE: `pip install homeassistant` installs CORE ONLY — no integration deps.
# La dev config NON usa `default_config:` (troppe integrazioni con deps pip
# pesanti), ma una lista esplicita di integrazioni core-only. L'unica
# requirement extra è il frontend: il pacchetto PyPI `home-assistant-frontend`
# (che fornisce il modulo importabile `hass_frontend`).
RUN pip install --no-cache-dir \
uv \
homeassistant \
home-assistant-frontend

WORKDIR /workspace

1 change: 1 addition & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"dockerComposeFile": "docker-compose.yml",
"service": "homeassistant",
"workspaceFolder": "/workspace",
"remoteUser": "root",
"shutdownAction": "stopCompose",
"forwardPorts": [
8123
Expand Down
15 changes: 9 additions & 6 deletions .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
version: "3.8"

services:
homeassistant:
# build:
# context: .
# dockerfile: Dockerfile
image: homeassistant/home-assistant:stable
build:
context: .
dockerfile: Dockerfile
container_name: universal_notifier_ha_dev
# Home Assistant Core needs to write to /config (a bind mount); running as
# root avoids permission issues on bind mounts (same as the official image).
user: root

# Start Home Assistant against the mounted config directory.
command: [ "hass", "-c", "/config" ]

volumes:
# Cartella config HA (configuration.yaml, .storage, db, ecc.)
Expand Down
25 changes: 25 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Version control / IDE
.git/
.vscode/
.github/

# Python — .venv contains Windows-only symlinks (e.g. lib64) that break
# the Docker build context on Windows ("The file cannot be accessed by the system")
.venv/
__pycache__/
.pytest_cache/
*.pyc

# Home Assistant runtime data
config/

# Docs / artifacts not needed in the image
docs/
img/
htmlcov/
.coverage

# Docker/devcontainer config (not needed inside the build context)
.devcontainer/
tests/Dockerfile.test
.dockerignore
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"python.defaultInterpreterPath": "./.venv/Scripts/python.exe",
"python.defaultInterpreterPath": "./.venv/bin/python3.14",
"editor.formatOnSave": true,
"python.testing.pytestEnabled": true,
"python.analysis.typeCheckingMode": "standard",
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [0.9.0] - 2026-09-06 - PRODUCTION

### Added
- **`notify.send_message` support**: Channels using the Home Assistant notify entity architecture (`service: notify.send_message` + `target: notify.<name>`) are now dispatched correctly. The target is passed as the `target` kwarg of the service call and the `data` key is no longer injected, both of which `notify.send_message` rejects.

### Fixed
- **Empty target no longer forwarded as `['']`**: A channel with a blank `target` field no longer overrides the default recipient of `notify.*` services (e.g. SMTP) with an empty list. Empty and whitespace-only entries are now filtered out during target normalization.

## [0.8.4] - 2026-07-26 - PRODUCTION

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ a new release from an appdaemon app by @caiosweet and @jumping2000
![License](https://img.shields.io/github/license/jumping2000/universal_notifier?style=for-the-badge)
![HA integration](https://img.shields.io/badge/Home%20Assistant-Integration-blue?style=for-the-badge)

> **🆕 Latest (v0.8.0):** Weekday/Weekend DND split, comma-separated multi-target support. See the [Changelog](CHANGELOG.md) for details.
> **🆕 Latest (v0.9.0):** notify.send_message support and some fixes. See the [Changelog](CHANGELOG.md) for details.
>
> [User configuration Guide](USER_GUIDE.md)

Expand Down
Loading
Loading