Skip to content

LINE Bot v1.0.4

Latest

Choose a tag to compare

@sfox38 sfox38 released this 05 Jul 05:31
a1e673d

v1.0.4

  • Correct minimum Home Assistant version: hacs.json declared 2024.11, but the code now uses APIs introduced in HA 2025.3 (AddConfigEntryEntitiesCallback). The minimum is now 2025.3, so HACS will no longer offer the integration to instances that cannot load it.
  • Quota outage no longer blocks messaging: The quota coordinator is now created during entry setup with a plain first refresh. If LINE's quota API is unreachable at startup, the diagnostic sensors report unavailable and the notify entities load normally, instead of the whole integration going into setup-retry.
  • Webhook signature verified first: When the integration is configured, the X-Line-Signature check now happens before the request body is parsed, so forged requests are rejected with one constant-time HMAC compare. This also means the Verify button now fails when the Channel Secret is wrong, surfacing the misconfiguration immediately (see Troubleshooting). Repeated signature failures log at debug level after the first warning to prevent log flooding.
  • "Clear all pending" is now translated: The dropdown sentinel uses a selector translation key, so it appears in the UI language (previously it was always English and did not match the label the step description referred to).
  • Concurrent sends: line_ha_bot.send_message with multiple targets now sends to all recipients concurrently instead of one after another. Reply-token handling is unchanged: the token is spent on the first resolvable target, with push fallback on failure.
  • One reload per options session: Adding several recipients with "Add another" now writes the config entry once at the end of the flow instead of once per recipient, triggering a single reload. Abandoning the flow midway no longer discards captured senders - they stay in the pending list.
  • Module split: The webhook view moved to webhook.py, the send service and message builder to services.py, and the quota coordinator to coordinator.py. __init__.py now contains only setup, teardown, and runtime data. Shared device info lives in entity.py.
  • Emoji name suggestions: Emoji followed by a variation selector (how most keyboards emit them) no longer produce suggestions like nerd_variation; the selector is dropped and the suggestion is just nerd.
  • Cleanup: Removed an unreachable try/except in the name sanitizer and an unused logger in notify.py; single LineBot class-name prefix throughout; from __future__ import annotations and typed user_input parameters everywhere; @callback on the send-failed event helper; fixed the quota sensor entity IDs documented in the README.