fix find new messages, becaus eids changes at every restart from bridge

This commit is contained in:
duffyduck 2025-12-27 20:40:11 +01:00
parent 3984db1e49
commit e81f1873f7
1 changed files with 21 additions and 1 deletions

View File

@ -523,6 +523,24 @@ class ClaudeChatInterface:
elif msg.id == since_id: elif msg.id == since_id:
found_marker = True 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 return new_messages
def _get_all_messages(self) -> List[ChatMessage]: def _get_all_messages(self) -> List[ChatMessage]:
@ -805,7 +823,9 @@ class ClaudeChatInterface:
msg_id = elem.get_attribute("data-message-id") msg_id = elem.get_attribute("data-message-id")
if not msg_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( messages.append(ChatMessage(
id=msg_id, id=msg_id,