From 1e1444d1a0bf6b4b7c2236630198d65b17a72dbe Mon Sep 17 00:00:00 2001 From: Joshua King Date: Mon, 14 Sep 2026 09:30:03 -0400 Subject: [PATCH] release: advance version to 0.2.0 and add Feature 02 release notes --- RELEASE_NOTES.md | 41 +++++++++++++++++++++++ custom_components/nestquest/manifest.json | 6 ++-- pyproject.toml | 2 +- uv.lock | 2 +- 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index dd82c4a..2ec1e0d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,46 @@ # NestQuest Release Notes +## Version 0.2.0 — 2026-09-14 + +### Scope + +Second release of NestQuest, shipping Feature 02 — the persistence layer the integration owns outright: + +- Integration-owned SQLite database (`nestquest.db`) in the Home Assistant config directory: WAL journal mode, foreign-key enforcement, executor-backed access so the event loop never blocks. +- Schema v1 for all eight tables: `children`, `admin_users`, `schedule_rules`, `task_definitions`, `presence_schedules`, `presence_overrides`, `task_instances`, `completion_events` — validated by declarative CHECK constraints (no triggers). +- Versioned migration runner: on first start the database is created at schema version 1; later starts are a verified no-op; a failed migration rolls back to its prior version. A database stamped with a future version refuses to start. +- Typed DAO layers for every table so no other feature writes raw SQL. Assignment validation is atomic; `completion_events` is strictly append-only — the DAO exposes no update or delete method, and a package-wide guard keeps mutation SQL out of every module. +- Startup handling for missing (created fresh), valid (opened), and corrupt (logged, retried, left byte-identical for backup restore) database files via a read-only `integrity_check` preflight that cannot write or create sidecars. + +### Requirements + +- Minimum Home Assistant version: **2024.6.0**. + +### Known Limitations + +- No entities, services, or calendar platforms yet — the integration does not expose sensors, calendar events, or service calls in this release (data layer only). +- No business logic yet: nothing materializes task instances and nothing can be completed — storage and schema only. +- Single-instance only — one NestQuest config entry is permitted per Home Assistant instance. + +### Rollback + +Downgrading from 0.2.0 to 0.1.0 removes the data layer's code but leaves the `nestquest.db` file in place (0.1.0 never touches it, and no code path deletes an existing database). The file is compatible with this release's schema version stamp; a later reinstall of 0.2.0 or newer resumes from the stored version without re-migrating. + +**HACS installs:** + +1. Downgrade via HACS (HACS > Integrations > NestQuest > Redownload > 0.1.0) or Remove entirely. +2. Restart Home Assistant. +3. If removing: delete the integration in Home Assistant (Settings > Devices & Services > NestQuest > Delete), then restart Home Assistant again. + +**Manual installs:** + +1. Replace or delete the `custom_components/nestquest/` directory in your Home Assistant configuration directory. +2. Restart Home Assistant. + +**Data:** the `nestquest.db` file (plus any `-wal`/`-shm` sidecars) is intentionally left untouched by both upgrade and rollback — back it up before upgrading. Removing the integration via Home Assistant deletes the config entry but not the database file. + +**Repository operators:** instead of uninstalling, git-revert the release merge on `main`. The database file is independent of the code and is never deleted by code. + ## Version 0.1.0 — 2026-09-13 ### Scope diff --git a/custom_components/nestquest/manifest.json b/custom_components/nestquest/manifest.json index 8e75b31..53cec3b 100644 --- a/custom_components/nestquest/manifest.json +++ b/custom_components/nestquest/manifest.json @@ -1,12 +1,14 @@ { "domain": "nestquest", "name": "NestQuest", - "codeowners": ["@overseer"], + "codeowners": [ + "@overseer" + ], "config_flow": true, "documentation": "https://github.com/talon2king/NestQuest", "integration_type": "hub", "iot_class": "local_polling", "issue_tracker": "https://github.com/talon2king/NestQuest/issues", "requirements": [], - "version": "0.1.0" + "version": "0.2.0" } diff --git a/pyproject.toml b/pyproject.toml index 6d77648..380e31e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "nestquest" -version = "0.1.0" +version = "0.2.0" description = "NestQuest Home Assistant Integration" readme = "README.md" requires-python = ">=3.11" diff --git a/uv.lock b/uv.lock index 185f269..0a9df36 100644 --- a/uv.lock +++ b/uv.lock @@ -22,7 +22,7 @@ wheels = [ [[package]] name = "nestquest" -version = "0.1.0" +version = "0.2.0" source = { virtual = "." } [package.dev-dependencies]