- F-01: document the enforced DOCKER-USER firewall on :8080 (Traefik and
host RETURN, DROP everyone else), its persisting unit
nestquest-api-firewall.service, and operator verification commands;
restore step 6 no longer suggests hitting :8080 from the HA box.
- F-02: restore step 5 uses `dc up -d litestream` so the sidecar is
created on a fresh box instead of `dc start`, which cannot start a
never-created container.
- F-03: pin both reference routers to the `websecure` entrypoint.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add deploy/RUNBOOK.md: the operator procedure to rebuild the API
deployment end to end (image build, compose and the nestquest-db
volume, Traefik TLS and routing on nukapi-03, Authentik OIDC, secrets,
network separation, Litestream backup), restore the database from the
SFTP replica, and verify the result. Point api/README.md at it.
The restore steps were rehearsed locally against a file replica using
the committed compose file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HA event triggers expose the payload as trigger.event.data, not
trigger.payload; fix the blueprint, its tests, and the README
examples, with a regression guard.
README gains the blueprint section: all four blueprints, their
inputs, the wiring table to the options-flow notification settings,
the celebration helper setup, event/sensor payload reference, and a
copy-pasteable example package. Tests assert every event trigger
references a real NestQuest event and no reminder is produced for an
absent child.
Child ids sharing a prefix no longer suppress each other (split and
compare entries for equality), and queued mode keeps a second child's
day-complete event from being dropped while the first notify runs.
Triggers on nestquest_child_day_complete (never a zero-quest day),
notifies with the payload's child name, and dedupes per child per
day via an input_text helper holding <child_id>:<today> entries
pruned to today — a re-cleared day does not re-fire, but a second
child clearing the same day still celebrates.
A missing or non-numeric remaining sensor reads as -1 in the
all-clear guard, so a degraded day reaches the parent instead of
looking like a clear day.
Defaults to 20:00 local — deliberately before the midnight missed
sweep, reading the same day's data. Every present child gets a
completion line; owed lines name still-open quests; absent children
are omitted; nothing sends when all clear unless opted in.
The modern HA action schema passes title and message to the notify
service only under data; fix the morning summary and afternoon
reminder blueprints and the test accessors accordingly.
Lists only present children who still owe quests; sends nothing at
all when every present child is clear (a false template condition
stops the action). Blueprint test helpers move to a shared module.