From dfb4718e091266887639f38a46c5ea89155acc5b Mon Sep 17 00:00:00 2001 From: techartdev Date: Sat, 21 Feb 2026 00:40:47 +0200 Subject: [PATCH] Update version to 0.1.43 and enhance conversation continuity with stable fallback session IDs --- .gitignore | 18 ++++++++++++++++++ CHANGELOG.md | 6 ++++++ custom_components/openclaw/__init__.py | 2 +- .../__pycache__/__init__.cpython-312.pyc | Bin 33783 -> 0 bytes .../__pycache__/conversation.cpython-312.pyc | Bin 8125 -> 0 bytes custom_components/openclaw/conversation.py | 18 +++++++++++++++++- custom_components/openclaw/manifest.json | 2 +- www/openclaw-chat-card.js | 2 +- 8 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 .gitignore delete mode 100644 custom_components/openclaw/__pycache__/__init__.cpython-312.pyc delete mode 100644 custom_components/openclaw/__pycache__/conversation.cpython-312.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4e299d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Python bytecode and cache +__pycache__/ +*.py[cod] +*$py.class + +# Common virtual environments +.venv/ +venv/ +env/ + +# Tool caches +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ + +# OS/editor noise +.DS_Store +Thumbs.db diff --git a/CHANGELOG.md b/CHANGELOG.md index 5658a6d..0871bfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to the OpenClaw Home Assistant Integration will be documented in this file. +## [0.1.43] - 2026-02-21 + +### Fixed +- Improved Home Assistant Assist conversation continuity by using stable fallback session IDs when `conversation_id` is missing. +- Assist now falls back to per-user (`assist_user_*`) or per-device (`assist_device_*`) session keys instead of a single generic default. + ## [0.1.42] - 2026-02-21 ### Added diff --git a/custom_components/openclaw/__init__.py b/custom_components/openclaw/__init__.py index b207b15..a215c1d 100644 --- a/custom_components/openclaw/__init__.py +++ b/custom_components/openclaw/__init__.py @@ -92,7 +92,7 @@ _CARD_PATH = Path(__file__).parent / "www" / _CARD_FILENAME # URL at which the card JS is served (registered via register_static_path) _CARD_STATIC_URL = f"/openclaw/{_CARD_FILENAME}" # Versioned URL used for Lovelace resource registration to avoid stale browser cache -_CARD_URL = f"{_CARD_STATIC_URL}?v=0.1.42" +_CARD_URL = f"{_CARD_STATIC_URL}?v=0.1.43" OpenClawConfigEntry = ConfigEntry diff --git a/custom_components/openclaw/__pycache__/__init__.cpython-312.pyc b/custom_components/openclaw/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index a531c0850a42c8125541c4e6b7d2d30cd0710f00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33783 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 RbAPkn*sat4T+74#{{eaJD$f7_ diff --git a/custom_components/openclaw/__pycache__/conversation.cpython-312.pyc b/custom_components/openclaw/__pycache__/conversation.cpython-312.pyc deleted file mode 100644 index b15cf4ac13a258cc13d38b8015e8b89708c07466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8125 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 str: + """Return conversation id from HA or a stable Assist fallback session key.""" + if user_input.conversation_id: + return user_input.conversation_id + + context = getattr(user_input, "context", None) + user_id = getattr(context, "user_id", None) + if user_id: + return f"assist_user_{user_id}" + + device_id = getattr(user_input, "device_id", None) + if device_id: + return f"assist_device_{device_id}" + + return "assist_default" + async def _get_response( self, client: OpenClawApiClient, diff --git a/custom_components/openclaw/manifest.json b/custom_components/openclaw/manifest.json index 442652a..1119b4b 100644 --- a/custom_components/openclaw/manifest.json +++ b/custom_components/openclaw/manifest.json @@ -8,7 +8,7 @@ "iot_class": "local_polling", "issue_tracker": "https://github.com/techartdev/OpenClawHomeAssistant/issues", "requirements": [], - "version": "0.1.42", + "version": "0.1.43", "dependencies": ["conversation"], "after_dependencies": ["hassio", "lovelace"] } diff --git a/www/openclaw-chat-card.js b/www/openclaw-chat-card.js index 3685489..3b26fe1 100644 --- a/www/openclaw-chat-card.js +++ b/www/openclaw-chat-card.js @@ -1,7 +1,7 @@ (async () => { try { if (!customElements.get("openclaw-chat-card")) { - const src = "/openclaw/openclaw-chat-card.js?v=0.1.42"; + const src = "/openclaw/openclaw-chat-card.js?v=0.1.43"; console.info("OpenClaw loader importing", src); await import(src); }