overseer
33102f8806
Apply PR #144 review fixes: per-field settings fallback, strict validation, hardened AST scan (task 4dd8f870)
...
P2-1: replace the all-or-nothing from_options try/except in setup with
from_options_resilient, which falls back PER FIELD (logging a warning
naming the bad field) so a malformed sibling (e.g. morning_summary_time
'25:00') cannot silently reset horizon_days/day_rollover_time.
P2-2: drop _run_horizon_materialization's legacy horizon_days keyword and
branch; default settings to NestQuestSettings(); remove the legacy paragraph.
P2-3: _run_horizon_materialization now calls settings.horizon_window(today)
so the helper is real and shared; extend tests to run the integration path
(_run_horizon_materialization + _register_day_rollover_listener) with
horizon_days=3 / day_rollover_time='03:30'.
P2-4: harden the AST scan to forbid hass/config_entry names, .hass/.entry/
.config_entry and .config/.options/.data attributes, and getattr/hasattr
calls with those string args; add a negative-control test for each shape.
P2-5: __post_init__ is strict (rejects None for every field); the
None->default mapping lives ONLY in from_options via _option_value.
P3: remove dead shims (_day_rollover_hour_minute, _configured_horizon_days)
and repoint test_lifecycle at from_options; de-dup the two HH:MM
validators into one using a shared TIME_PATTERN in core/const; make
horizon_window's today required; reword the notify_target docstring to
not claim options-flow parity; document _option_value's None-as-absent
semantics; remove unused test helpers.
2026-09-21 15:37:12 -04:00
overseer
345bd200e1
Replace HA config reads with an explicit settings object (task 4dd8f870)
...
Add core/settings.py: a frozen, HA-free NestQuestSettings dataclass
carrying horizon_days, day_rollover_time, notify_target, the three
notification times, and the four enable toggles. from_options() reads
the CONF_* keys with the matching defaults and validates (horizon int
>= 1, strict HH:MM times, real booleans); horizon_window(today) returns
the rolling [today, today+horizon_days] window.
The integration builds the settings object once from entry.options and
threads it into the horizon materialization and daily-rollover listener;
core never reads HA config itself. A settings.py shim re-exports
core.settings so the integration keeps its shim-only import convention.
Tests: an AST scan asserts no core module imports homeassistant or
accesses hass.config / entry.options / entry.data; a from_options test
covers defaults-when-absent and rejection of invalid horizon/rollover;
a materialization test drives a non-default horizon (3 days, 03:30
rollover) and asserts the resulting instance window matches.
2026-09-21 15:19:09 -04:00
overseer
3ee4c99e5f
Merge pull request 'Dev - add in logos' ( #139 ) from dev into main
...
Reviewed-on: #139
2026-09-21 10:44:43 -04:00
overseer
d4ea552ad7
Merge pull request 'Upload files to "design/logos"' ( #138 ) from design/adding-logos into dev
...
Reviewed-on: #138
2026-09-21 10:44:12 -04:00
overseer
4e52e8dec8
Upload files to "design/logos"
2026-09-21 10:44:01 -04:00
overseer
ee1fae984a
Merge pull request 'Fix SensorDeviceClass.PERCENTAGE removed in HA 2025+' ( #137 ) from fix/sensor-device-class-percentage into main
...
Reviewed-on: #137
2026-09-21 10:02:34 -04:00
overseer
418fc69f36
Remove removed SensorDeviceClass.PERCENTAGE
2026-09-21 10:02:08 -04:00
overseer
b6b1ba65b4
Merge pull request 'Point HACS URLs at Maniacs-Mansion/NestQuest' ( #136 ) from fix/hacs-repo-urls into main
...
Reviewed-on: #136
2026-09-21 07:52:09 -04:00
overseer
37f7d25cd6
Point HACS URLs at Maniacs-Mansion/NestQuest
2026-09-21 07:47:52 -04:00
overseer
fe71d37bb0
Merge pull request 'Promote Feature 12 to main' ( #135 ) from dev into main
...
Reviewed-on: #135
2026-09-21 06:57:15 -04:00
overseer
edca25affa
Add the Lit card toolchain and auto-register the Lovelace bundle
2026-09-20 10:08:38 -04:00
overseer
a6d9ec927b
Merge pull request 'Release: Features 06, 07, 08 (2026-09-18)' ( #97 ) from release/2026-09-18-f06-f07-f08 into main
...
Reviewed-on: #97
2026-09-18 14:54:48 -04:00
overseer
bcdf03dac7
merge: origin/main into 0.5.0 release (keep 0.5.0 versions and notes)
2026-09-18 14:15:15 -04:00
overseer
52cbf33f33
release: advance version to 0.5.0 and add Features 06/07/08 release notes
2026-09-18 14:14:36 -04:00
overseer
c4fb2fbac5
Merge pull request 'Feature 08: Quest Completion and Event Log -> dev' ( #95 ) from feature/a526b715-1fd2-4688-9696-a7eeb45f1644-quest-completion-event-log into dev
2026-09-18 07:14:05 -04:00
overseer
0820544fce
Completion lifecycle tests (Feature 08, task 7) ( #94 )
2026-09-18 07:12:47 -04:00
overseer
318d77f443
Derive missed for past-due open instances (Feature 08, task 6) ( #93 )
2026-09-18 07:09:21 -04:00
overseer
2ec016ebfe
Compute was_on_time at completion (Feature 08, task 5) ( #92 )
2026-09-18 07:02:29 -04:00
overseer
c3495bb277
uncomplete_instance reversal event (Feature 08, task 4) ( #91 )
2026-09-18 06:52:42 -04:00
overseer
775a9906e7
complete_instance (Feature 08, task 3) ( #90 )
2026-09-18 06:47:45 -04:00
overseer
293efe9705
Derive instance state from latest event (Feature 08, task 2) ( #89 )
2026-09-18 06:35:50 -04:00
overseer
22797cbc7e
Completion business layer wrapping append-only DAO (Feature 08, task 1) ( #88 )
2026-09-18 06:31:01 -04:00
overseer
743703e943
Merge pull request 'Feature 07: Quest Instance Materialization -> dev' ( #85 ) from feature/4a35e972-4c72-405d-8331-ce0776176784-quest-instance-materialization into dev
2026-09-17 17:19:47 -04:00
overseer
6e32761b0c
Guard against stale due_time overwrite (Feature 07 fix) ( #87 )
2026-09-17 17:17:57 -04:00
overseer
3add2d2f48
Thread configured horizon_days (Feature 07 integration fix) ( #86 )
2026-09-17 17:07:10 -04:00
overseer
c001aca62d
End-to-end 28-day generation (Feature 07, task 10) ( #84 )
2026-09-17 16:38:56 -04:00
overseer
353d88e3af
Clamp start to today (no past instances) (Feature 07, task 9) ( #83 )
2026-09-17 16:12:08 -04:00
overseer
f6aad9d20f
HA-local timezone + DST boundary tests (Feature 07, task 8) ( #82 )
2026-09-17 16:06:41 -04:00
overseer
5706d8b7a6
Startup backfill + regenerate service (Feature 07, task 7) ( #81 )
2026-09-17 15:42:10 -04:00
overseer
be6367b600
Schedule the daily generation run at rollover (Feature 07, task 6) ( #80 )
2026-09-17 15:10:57 -04:00
overseer
ca26ced59f
Regenerate future instances on presence change (Feature 07, task 5) ( #79 )
2026-09-17 14:50:50 -04:00
overseer
2146531665
Regenerate future instances on definition change (Feature 07, task 4) ( #78 )
2026-09-17 14:24:22 -04:00
overseer
168bb7b2f1
Skip completed instances during materialization (Feature 07, task 3) ( #77 )
2026-09-17 14:09:42 -04:00
overseer
4544f78390
Three-run idempotency with stable instance ids (Feature 07, task 2) ( #76 )
2026-09-17 14:04:02 -04:00
overseer
9836a6f524
Core generation walk: assignees x windows fan-out with presence (Feature 07, task 1) ( #75 )
2026-09-17 14:01:20 -04:00
overseer
d6823a54bc
Merge pull request 'Feature 06: Quest Definitions and Assignment -> dev' ( #73 ) from feature/b61a578c-2139-486e-af46-77303a185386-quest-definitions-assignment into dev
2026-09-17 12:10:07 -04:00
overseer
fa40e21dc2
Fix feature-integration review findings F06-001 and F06-002 ( #74 )
2026-09-17 12:06:47 -04:00
overseer
e60a9892ff
Tests for the quest definition business layer (Feature 06, task 7) ( #72 )
2026-09-17 09:58:15 -04:00
overseer
1432dba74c
Quest definition query helpers for materialization (Feature 06, task 6) ( #71 )
2026-09-17 09:49:54 -04:00
overseer
1b6973efd3
Deactivate and reactivate a quest definition (Feature 06, task 5) ( #70 )
2026-09-17 09:40:15 -04:00
overseer
4606d7ddd0
Assign and unassign children on a quest definition (Feature 06, task 4) ( #69 )
2026-09-17 09:21:21 -04:00
overseer
802258d431
Edit a quest definition's metadata, schedule rule, and windows (Feature 06, task 3) ( #68 )
2026-09-17 09:06:11 -04:00
overseer
d9cdac87d7
Create a quest definition with rule, assignees, and windows (Feature 06, task 2) ( #67 )
2026-09-17 08:41:56 -04:00
overseer
cbd29f5ab7
Map ScheduleRule models to and from schedule_rules storage (Feature 06, task 1) ( #66 )
2026-09-17 08:11:19 -04:00
overseer
43a7a722b9
Merge pull request 'Release: Features 14, 03, 05 — quest model, children registry, presence engine (2026-09-15)' ( #65 ) from release/2026-09-15-f14-f03-f05 into main
...
Reviewed-on: #65
2026-09-16 08:01:05 -04:00
overseer
cdfb681f46
Merge pull request 'Dev' ( #44 ) from dev into main
...
Reviewed-on: #44
2026-09-14 21:36:40 -04:00
overseer
3ecca2d212
Merge pull request 'Feat/ui design tokens' ( #43 ) from feat/ui-design-tokens into dev
...
Reviewed-on: #43
2026-09-14 21:32:14 -04:00
overseer
30d103aefb
Upload files to "design/tokens"
2026-09-14 21:31:55 -04:00
overseer
658afec491
adding in design files
2026-09-14 21:31:32 -04:00
overseer
0637245d33
Merge pull request 'Release: Feature 04 — Recurrence Rule Engine (2026-09-14)' ( #34 ) from release/2026-09-14-f04-recurrence into main
...
Reviewed-on: #34
2026-09-14 15:14:22 -04:00
overseer
a30bafcb68
Merge pull request 'Release: Feature 02 — SQLite Data Layer (2026-09-14)' ( #24 ) from release/2026-09-14-f02-data-layer into main
...
Reviewed-on: #24
Reviewed-by: The Approver <19+approver_agent@code.cubecraftcreations.com >
Reviewed-by: The Reviewer <18+review_agent@code.cubecraftcreations.com >
2026-09-14 10:22:17 -04:00
overseer
5e65cde078
Merge pull request 'Release: Feature 01 — Integration Scaffold (2026-09-13)' ( #11 ) from release/2026-09-13-f01-scaffold into main
...
Reviewed-on: #11
2026-09-13 19:54:16 -04:00
overseer
ec888b6426
Merge pull request 'docs: add HACS repository metadata and developer setup docs' ( #3 ) from task/b1a42fd5-1911-4ee5-97ba-d4ab9da9d918-hacs-metadata-and-docs into feature/58fafd51-67e5-4691-8b37-cf0bb545207c-integration-scaffold
...
Reviewed-on: #3
2026-09-13 09:32:14 -04:00