Skip to content

Releases: Steven-D-Morgan/hass-entity-assistant

1.7.1 - Minor Fixes

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 13 Sep 22:05

Fixes

  • Commits the missing tests/snapshots/test_snapshots.ambr file so the six
    1.7 syrupy snapshot tests actually pass in CI. pytest-homeassistant-custom-component
    overrides syrupy's default snapshot directory to snapshots/ (no
    underscores) — a quirk that landed the 1.7.0 snapshots in the wrong
    directory, silently failing every CI run.

CI

  • Dependabot bumps: actions/checkout 4 → 7, actions/setup-python 5 → 7,
    softprops/action-gh-release 2 → 3.

No integration behavior changes.

Full changelog: https://github.com/Steven-D-Morgan/hass-entity-assistant/blob/main/CHANGELOG.md

1.7.0 - Trust Gate

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 10 Sep 03:53

1.7.0 — Trust gate

This milestone establishes the safety floor before any new registry mutations land in future versions. It retrofits remove_orphaned with dry-run + admin gating, hardens the HTTP download endpoint, and lands a full test suite + CI so the export contract can't silently drift.

⚠️ Breaking change — remove_orphaned now defaults to a preview

If you call entity_assistant.remove_orphaned today with no parameters, it removes orphaned entries immediately. From 1.7.0, a bare call returns a preview instead — you must explicitly pass confirm: true to apply, and the caller must be an admin.

Update any automation or script that calls this service:

# Before (1.6.x) — removed immediately
service: entity_assistant.remove_orphaned

# After (1.7.0+) — must confirm to remove
service: entity_assistant.remove_orphaned
data:
  confirm: true

v1.6.2 - Export failure handling & observability

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 04 Sep 23:32

Reliability

Every export trigger — the two buttons, entity_assistant.export_csv, entity_assistant.get_download_url, and the HTTP endpoint — now wraps the export in explicit error handling. A disk-full, permission, or path error surfaces as an actionable log message instead of a raw traceback, and the last_export sensor no longer silently ignores the failure.

New

  • entity_assistant_export_failed event — fired on any failing export, carrying path, error, error_type, export_type, and triggered_by. Use it to alert on disk-full or permission problems without scraping the log.
  • last_export sensor now records failures — four new attributes appear on the sensor after a failure: last_error (message), last_error_at (ISO timestamp), last_error_type (exception class), and last_error_triggered_by (service / button / http). The sensor state stays pinned to the last successful export timestamp, so a bad run doesn't erase your record of the last good one.
  • HTTP endpoint returns a clean 500 with the exception class name on failure instead of Home Assistant's default error page, and fires the same failure event so the sensor stays consistent across trigger paths.

Compatibility

  • No new options, no new UI strings — nothing to reconfigure.
  • Existing entity_assistant_export_completed payload is unchanged.
  • Failure attributes are restored across restarts via RestoreEntity.

Full changelog

See VERSIONING.md.

1.6.1 - Security hardening

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 02 Sep 00:21

1.6.1 - Security hardening

CSV formula-injection fix

Cell values starting with =, +, -, @, tab, or newline are now automatically prefixed with a tab character so spreadsheet applications (Excel, LibreOffice, Google Sheets) treat them as text instead of executable formulas. This is always on — no opt-in needed.

Registry names, device models, and area aliases are user-controlled free text written into the CSV. Without sanitization, a value like =CMD("calc") would execute as a live formula when opened in a spreadsheet.

UTF-8 BOM option

A new utf8_bom option (default off) on the export_csv and get_download_url services and the HTTP endpoint. When enabled, the CSV starts with a UTF-8 byte order mark (EF BB BF) so Excel on Windows renders non-ASCII characters (accented names, CJK, emoji) correctly instead of garbling them.

action: entity_assistant.export_csv
data:
  utf8_bom: true

1.6.0

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 01 Sep 23:51

1.6.0 — Registry cleanup

Entity Assistant can now identify and remove orphaned registry entries — not just report on them.

New buttons on the Entity Assistant device

  • Export orphaned entities — writes only stale rows (orphaned, unavailable, restored, not changed) to entity_export_stale.csv, so you can review what's flagged before taking action.
  • Remove orphaned entries — deletes orphaned entities (config entry removed), orphaned devices (all config entries removed), and empty areas (no devices or entities) from the Home Assistant registries. Area emptiness is recalculated after entity/device removal, so cascading cleanup works in a single press.

New service

  • entity_assistant.remove_orphaned — the same removal logic, callable from automations and scripts. Returns entities_removed, devices_removed, areas_removed, and the corresponding ID lists. No parameters.

New event

  • entity_assistant_orphaned_removed — fired after each removal with counts and ID lists, for automation triggers.

Caution

Removing registry entries is destructive and cannot be fully undone — a Home Assistant backup is the only complete undo. The removal targets only entries whose backing integration has been removed (orphaned) or that are provably empty; live entities are never candidates.

1.5.1 - Translations Updated

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 28 Aug 18:10

A translation and documentation patch. No functional changes.

Translations

The two stale detection service fields shipped English-only in 1.5.0. All 12
supported languages now have localized labels and descriptions for
stale_only and stale_days, on both export_csv and get_download_url:

German, French, Spanish, Italian, Dutch, Portuguese (Brazil), Polish, Russian,
Norwegian Bokmål, Swedish, Czech, and Simplified Chinese.

Documentation

The README's list of HTTP endpoint query flags was missing stale_only and
stale_days, both of which the endpoint has accepted since 1.5.0.

Full changelog: 1.5.0...1.5.1

1.5.0 - Stale detection

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 28 Aug 17:37

Stale detection

Entities, devices, and areas now carry a stale flag plus a categorized
stale_reason column, so you can see why a row was flagged:

  • Entitiesunavailable, orphaned (config entry or integration gone),
    restored (not provided since restart), not_changed_<N>d
  • Devicesorphaned, no_entities, all_unavailable
  • Areasempty (no devices or entities)

New columns

  • Entities: available, last_changed, last_changed_days, stale, stale_reason
  • Devices: available_entity_count, stale, stale_reason
  • Areas: stale, stale_reason

New service options

export_csv and get_download_url both accept:

  • stale_only (default false) — return only flagged rows
  • stale_days (default 30) — age threshold for not_changed_<N>d

Packaging

HACS now installs this integration from the entity_assistant.zip asset
attached to each release rather than fetching files individually. No action
needed on your end — HACS handles it. Versions 1.4.2 and earlier continue to
install the old way.

Known gap

The 12 non-English translations fall back to English for the two new service
fields until they're backfilled.

Full changelog: 1.4.2...1.5.0

1.4.2 — Fix setup crash on load

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 09 Jul 23:05

Fixed

  • Integration failed to set up with ModuleNotFoundError: No module named 'homeassistant.helpers.device_info'. DeviceInfo was imported from the wrong module; it's now imported from homeassistant.helpers.device_registry in the button and sensor platforms.

Impact

This affected 1.3.0–1.4.1 (every version that shipped the button/sensor platforms) — the entry would fail to load with the error above.

Upgrade

Update to 1.4.2 in HACS and restart Home Assistant. No configuration changes needed.

Thanks to everyone who reported it with logs. 🙏

Stable - Production Ready

Choose a tag to compare

@Steven-D-Morgan Steven-D-Morgan released this 07 Jul 20:51
Add UI translations for 12 common languages

Localize the config flow and both services (export_csv, get_download_url),
including all field names and descriptions.

- New translations/: de, fr, es, it, nl, pt-BR, pl, ru, nb, sv, cs, zh-Hans
- Each mirrors en.json's key structure exactly (hassfest translations check)
- Bump to 1.4.1; log in VERSIONING.md