From e81f1873f745c14683184b38790c77f8390463ca Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sat, 27 Dec 2025 20:40:11 +0100 Subject: [PATCH] fix find new messages, becaus eids changes at every restart from bridge --- python_bridge/chat_web_interface.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/python_bridge/chat_web_interface.py b/python_bridge/chat_web_interface.py index fe31b9b..bb739ea 100644 --- a/python_bridge/chat_web_interface.py +++ b/python_bridge/chat_web_interface.py @@ -523,6 +523,24 @@ class ClaudeChatInterface: elif msg.id == since_id: found_marker = True + # WICHTIG: Wenn since_id nicht gefunden wurde, könnte es sein dass: + # 1. Der Chat gewechselt wurde + # 2. Die Seite neu geladen wurde + # 3. Die ID-Generierung sich geändert hat + # In diesem Fall: Gib die LETZTE Nachricht zurück (nicht alle!) + # So wird nur die neueste vorgelesen statt alles nochmal + if not found_marker and all_messages: + # Prüfe ob since_id ein altes Format hat (mit Index) + # z.B. "claude_0_123456" vs neues Format "claude_123456" + if since_id and since_id.startswith("claude_"): + logger.debug(f"since_id '{since_id[:30]}...' nicht gefunden, gebe nur letzte Nachricht zurück") + # Nur die letzte Assistant-Nachricht zurückgeben + for msg in reversed(all_messages): + if msg.is_from_assistant: + return [msg] + # Wenn keine Assistant-Nachricht, gib leere Liste zurück + return [] + return new_messages def _get_all_messages(self) -> List[ChatMessage]: @@ -805,7 +823,9 @@ class ClaudeChatInterface: msg_id = elem.get_attribute("data-message-id") if not msg_id: - msg_id = f"claude_{i}_{hash(text[:100])}" + # WICHTIG: ID nur aus Text-Hash generieren, NICHT aus Index! + # So bleibt die ID stabil auch wenn sich die Reihenfolge ändert + msg_id = f"claude_{hash(text[:200])}" messages.append(ChatMessage( id=msg_id,