@@ -8,14 +8,98 @@ This project follows a practical changelog format for Home Assistant and HACS us
88
99## Unreleased
1010
11+ No unreleased changes.
12+
13+ ## 2.0.9 - 2026-07-28
14+
1115- Added the optional HI Support Bundle Inspector to the Pages artifact as a
12- separate, noindex preflight at ` /humidity-intelligence/inspector/ ` . Diagnostic
13- parsing and handoff generation remain browser-local with zero automatic or
14- network diagnostic-content egress; the only export is user-triggered copying of
15- the allowlisted handoff. Native Home Assistant diagnostics remain the preferred
16+ separate, noindex preflight at ` /humidity-intelligence/inspector/ ` . Diagnostic parsing and
17+ handoff generation remain browser-local with zero automatic or network
18+ diagnostic-content egress; the only export is user-triggered copying of the
19+ allowlisted handoff. Native Home Assistant diagnostics remain the preferred
1620 support attachment and the repository/Wiki remain support truth. Wiki update
17- status: ` no-op ` because existing diagnostics guidance remains authoritative.
21+ status: ` updated ` ; existing diagnostics guidance remains authoritative, and the
22+ Services Reference now documents the final external service permission boundaries.
1823 Release-documentation status: ` updated ` by this entry.
24+ - Set integration metadata to stable ` 2.0.9 ` , aligned the release documentation, and
25+ extended the backward-compatible ` v205_release_check ` manifest contract through
26+ the v2.0.9 beta/rc/stable line. GitHub Releases and HACS remain the authoritative
27+ publication and installed-package records.
28+ - Removed the HACS ` country ` metadata so Humidity Intelligence can be listed
29+ globally instead of being limited to the GB store scope.
30+ - Restricted custom filenames for ` dump_diagnostics ` and ` v205_release_check ` to
31+ the exact lowercase ` humidity_intelligence_*.json ` namespace so those report
32+ writers cannot overwrite unrelated basename files in the Home Assistant config
33+ folder. Defaults are unchanged. Automations or scripts using another custom
34+ report filename must be updated, and Home Assistant must be fully restarted after
35+ installing the package update; a config-entry reload alone is insufficient.
36+ - Moved caller-selectable diagnostics and release-check reports into the owned
37+ ` <config>/humidity_intelligence/exports/ ` directory with descriptor-relative
38+ no-follow directory creation, same-directory atomic replacement, and no config-root
39+ fallback. Existing config-root reports are retained without automatic migration.
40+ Report consumers must update their full path. Concurrent writes are serialized and
41+ the last atomic replacement wins. Entry-scoped purge does not delete export reports;
42+ only unscoped all-entry purge may remove the exact default diagnostics export,
43+ while release-check and custom reports remain retained.
44+ - Completed the runtime-owned artifact namespace: the fixed entity-bearing
45+ ` self_check ` report now uses the secure report writer at
46+ ` <config>/humidity_intelligence/exports/humidity_intelligence_self_check.json ` ,
47+ while generated ` dump_cards ` , ` view_cards ` , setup/options, and release-test card
48+ YAML now writes under ` <config>/humidity_intelligence/ui/ ` . Startup refresh remains
49+ cache-only. Existing root
50+ JSON/YAML is retained without copy, dual-write, symlink, move, or automatic
51+ deletion; consumers must update paths after verifying fresh owned-directory output.
52+ - Clarified the setup/options UI and service/support guidance for existing users:
53+ first-run and options notifications point to exact owned UI paths, ` dump_cards `
54+ versus ` view_cards ` notification behavior is explicit, legacy root cards are marked
55+ stale, and retained-file manual cleanup is documented without wildcard or
56+ registered-dashboard deletion.
57+ - Added descriptor-relative, no-follow, same-directory atomic YAML replacement with
58+ directory/file identity revalidation and no config-root fallback. External
59+ ` self_check ` , ` dump_cards ` , and ` view_cards ` calls now require authenticated admin
60+ context before work begins; trusted integration-owned UI regeneration calls the
61+ internal exporter directly. Adding a second entry re-exports all loaded entries
62+ with qualified card names; removing back to one re-exports the remaining entry
63+ with unqualified names while retaining the remaining entry's superseded qualified
64+ files for exact purge.
65+ - Narrowed cleanup to exact owned artifacts. Entry-scoped purge may remove the
66+ selected entry's default and release-test card exports plus its registered
67+ dashboard, but no reports. Unscoped all-entry purge may also remove the fixed
68+ default diagnostics and self-check reports. Config-entry removal separately owns
69+ only the removed entry's exact default/release-test card exports and registered
70+ dashboard. Custom card/report names, release-check reports, remaining-entry
71+ superseded qualified files, and legacy root artifacts remain retained.
72+ - Required authenticated admin user context for every ` dump_diagnostics ` and
73+ ` v205_release_check ` call. Non-admin, unknown-user, and contextless background
74+ callers are rejected before report lookup, cache work, path resolution, writes, or
75+ notifications. Direct authenticated admin UI/API calls remain supported.
76+ - Required admin user context for targeted and all-entry ` pause_control ` /
77+ ` resume_control ` calls, explicit ` create_dashboard ` , and ` purge_files ` . Existing
78+ background automations/scripts whose action context has no ` user_id ` can no longer
79+ invoke those mutation services, even when configured by an admin. Use an
80+ authenticated admin UI or API session; any future automated trusted route requires
81+ separate design approval. First-run dashboard creation remains available through
82+ the trusted config-entry setup path.
83+ - Required authenticated admin user context for every external ` flash_lights ` ,
84+ ` create_local_backup ` , and ` list_saved_versions ` call. Non-admin, unknown-user,
85+ and contextless callers are rejected before light, snapshot, or inventory work.
86+ ` list_saved_versions ` remains read-only but is gated because its persistent
87+ notification exposes package-local snapshot metadata. Engine-owned visual alerts
88+ use a separate trusted internal helper after deterministic lane selection, so
89+ alert continuity, entity semantics, and lane ordering are unchanged.
90+ - Made ` purge_files ` validate its complete fixed set of direct HI-generated file and
91+ configured-dashboard targets before mutation, publish the exact existing target
92+ preview with a blocking notification, reject unsafe/non-regular filesystem
93+ candidates, and report file or dashboard deletion failures as an incomplete purge.
94+ - Escaped dynamic room, target-profile, condensation, and mould text in the V1 Mobile
95+ source and gallery templates. V1 Mobile remains exportable through v2.0.9 but is
96+ deprecated for new dashboards in favor of V2 Mobile; removal is deferred to a
97+ separate v2.1 migration proposal. Existing pasted V1 cards must be re-exported and
98+ re-copied to receive the escaping fix.
99+ - Redacted private Home Assistant URLs and hosts, local network addresses, bearer
100+ credentials and tokens, device IDs, local user paths, and Home Assistant entity IDs from
101+ locally generated issue-triage body summaries before Markdown/HTML escaping.
102+ Public issue links remain available for maintainer triage.
19103
20104## 2.0.8 - 2026-07-05
21105
0 commit comments