diff --git a/CHANGELOG.md b/CHANGELOG.md index 02687db..db29c11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.5.2 - 2026-06-14 +- Add-on-Build invalidiert den Docker-Cache bei jeder Versionsänderung, damit + Versionsmetadaten und tatsächlich ausgelieferter Anwendungscode übereinstimmen +- Korrigierte Ingress-Oberfläche aus 0.5.1 dadurch erstmals zuverlässig ausgeliefert + ## 0.5.1 - 2026-06-14 - Technische Modell-, Intervall- und Sicherheitsparameter aus der normalen Home-Assistant-Add-on-Konfiguration entfernt; sichere Standardwerte bleiben aktiv diff --git a/addon/Dockerfile b/addon/Dockerfile index 13d2962..4f5ad5f 100644 --- a/addon/Dockerfile +++ b/addon/Dockerfile @@ -4,13 +4,17 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 +# The add-on version changes for every release. Copying its config before the +# clone makes Docker invalidate the application layer instead of reusing old code. +COPY config.yaml /tmp/addon-config.yaml + RUN apt-get update \ && apt-get install -y --no-install-recommends git \ && git clone --depth 1 --branch main \ http://192.168.6.31:3000/pino/sillyhome-next.git /app \ && python -m pip install --upgrade pip \ && python -m pip install /app \ - && rm -rf /var/lib/apt/lists/* /app/.git + && rm -rf /var/lib/apt/lists/* /app/.git /tmp/addon-config.yaml COPY run.sh /run.sh RUN chmod 0755 /run.sh diff --git a/addon/config.yaml b/addon/config.yaml index 7169122..7ed818d 100644 --- a/addon/config.yaml +++ b/addon/config.yaml @@ -1,5 +1,5 @@ name: SillyHome Next -version: "0.5.1" +version: "0.5.2" slug: sillyhome_next description: Lernt automatisch aus deinem Verhalten und steuert freigegebene Aktoren url: http://192.168.6.31:3000/pino/sillyhome-next diff --git a/app/main.py b/app/main.py index a7801f9..79b455f 100644 --- a/app/main.py +++ b/app/main.py @@ -77,7 +77,7 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]: app = FastAPI( title="SillyHome Next API", description="Lokales Smart-Home-Intelligenzsystem für Home Assistant.", - version="0.5.1", + version="0.5.2", lifespan=lifespan, ) app.state.settings = load_settings() diff --git a/pyproject.toml b/pyproject.toml index ffddd9c..6cae252 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "sillyhome-next" -version = "0.5.1" +version = "0.5.2" description = "Lokales Smart-Home-Intelligenzsystem für Home Assistant" requires-python = ">=3.11" dependencies = [ diff --git a/tests/test_addon_config.py b/tests/test_addon_config.py index 226251e..0ab79d1 100644 --- a/tests/test_addon_config.py +++ b/tests/test_addon_config.py @@ -8,3 +8,11 @@ def test_addon_does_not_expose_internal_learning_parameters() -> None: assert "\nschema:" not in config assert "prediction_confidence" not in config assert "execution_cooldown_seconds" not in config + + +def test_addon_version_invalidates_application_build_layer() -> None: + dockerfile = Path("addon/Dockerfile").read_text(encoding="utf-8") + + config_copy = dockerfile.index("COPY config.yaml /tmp/addon-config.yaml") + repository_clone = dockerfile.index("git clone --depth 1 --branch main") + assert config_copy < repository_clone