diff --git a/CHANGELOG.md b/CHANGELOG.md index b35a1d2..e2f89a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.7.12 - 2026-06-16 +- Aktor-Auswahlliste zeigt maximal 50 Treffer gleichzeitig und fordert bei + größeren Mengen zum Eingrenzen per Suche oder Typfilter auf. + ## 0.7.11 - 2026-06-16 - Aktor-Discovery erkennt weitere steuerbare HA-Domains wie Buttons, Helper, Heizungen, Schlösser, Ventile und numerische Helper. diff --git a/addon/config.yaml b/addon/config.yaml index bfecb34..992ba10 100644 --- a/addon/config.yaml +++ b/addon/config.yaml @@ -1,5 +1,5 @@ name: SillyHome Next -version: "0.7.11" +version: "0.7.12" 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 49158cc..c05f747 100644 --- a/app/main.py +++ b/app/main.py @@ -102,7 +102,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.7.11", + version="0.7.12", lifespan=lifespan, ) app.state.settings = load_settings() diff --git a/app/static/index.html b/app/static/index.html index fdb1128..7777e4a 100644 --- a/app/static/index.html +++ b/app/static/index.html @@ -182,6 +182,7 @@ let currentActuatorId = null; let actuatorChoices = []; let contextOptions = []; let manualContextState = {options: [], selected: new Set()}; +const ACTUATOR_RESULT_LIMIT = 50; async function api(path, options = {}) { const response = await fetch(path, {headers: {"Content-Type": "application/json"}, ...options}); @@ -349,14 +350,17 @@ function renderActuatorSelect() { const query = normalizedSearch(document.getElementById("actuator-search")?.value || ""); const filtered = actuatorChoices .filter(entity => !domain || entity.domain === domain) - .filter(entity => matchesSearch(entity, query)) - .slice(0, 120); - const domains = [...new Set(filtered.map(entity => entity.domain))].sort(); + .filter(entity => matchesSearch(entity, query)); + const visible = filtered.slice(0, ACTUATOR_RESULT_LIMIT); + const domains = [...new Set(visible.map(entity => entity.domain))].sort(); + const limitLabel = filtered.length > visible.length + ? ` - ${visible.length} von ${filtered.length}; Suche oder Typ weiter eingrenzen` + : ""; select.innerHTML = [ - ``, + ``, ...domains.map(group => ` - ${filtered + ${visible .filter(entity => entity.domain === group) .map(entity => ``) .join("")} diff --git a/pyproject.toml b/pyproject.toml index c085f5e..db1a476 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "sillyhome-next" -version = "0.7.11" +version = "0.7.12" description = "Lokales Smart-Home-Intelligenzsystem für Home Assistant" requires-python = ">=3.11" dependencies = [