message index are now numbers no hash values
This commit is contained in:
parent
18dc24e86b
commit
c34eb1c740
|
|
@ -523,19 +523,30 @@ 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 (Hashes sind nicht 100% stabil)
|
||||
#
|
||||
# LÖSUNG: Gib KEINE Nachrichten zurück um Wiederholungen zu vermeiden!
|
||||
# Bei Neustart würden sonst alle alten Nachrichten nochmal vorgelesen.
|
||||
# Der TTS-State sollte bei echtem Chat-Wechsel manuell gelöscht werden.
|
||||
# WICHTIG: Wenn since_id nicht gefunden wurde, versuche eine Fallback-Logik
|
||||
if not found_marker and all_messages:
|
||||
# Neue IDs haben Format "claude_msg_X" wobei X ein Zähler ist
|
||||
# Alte IDs haben Format "claude_HASH" - diese sind nicht mehr gültig
|
||||
if since_id and since_id.startswith("claude_msg_"):
|
||||
# Extrahiere den Zähler und gib alle Nachrichten NACH diesem Index zurück
|
||||
try:
|
||||
last_index = int(since_id.split("_")[-1])
|
||||
# Zähle Claude-Nachrichten und gib nur die nach dem Index zurück
|
||||
claude_msgs = [m for m in all_messages if m.is_from_assistant]
|
||||
if last_index < len(claude_msgs):
|
||||
# Es gibt neue Nachrichten!
|
||||
new_claude_msgs = claude_msgs[last_index + 1:]
|
||||
logger.debug(f"Fallback: {len(new_claude_msgs)} neue Claude-Nachrichten ab Index {last_index + 1}")
|
||||
return new_claude_msgs
|
||||
else:
|
||||
# Keine neuen Nachrichten
|
||||
return []
|
||||
except (ValueError, IndexError):
|
||||
pass
|
||||
|
||||
# Alte Hash-basierte IDs oder ungültiges Format
|
||||
if since_id and since_id.startswith("claude_"):
|
||||
logger.debug(f"since_id '{since_id[:30]}...' nicht gefunden in {len(all_messages)} Nachrichten - überspringe alle (Neustart-Schutz)")
|
||||
# Aktualisiere intern auf die letzte bekannte Nachricht
|
||||
# damit zukünftige NEUE Nachrichten erkannt werden
|
||||
logger.debug(f"since_id '{since_id[:30]}...' hat altes Format oder nicht gefunden - überspringe alle (Neustart-Schutz)")
|
||||
return []
|
||||
return []
|
||||
|
||||
|
|
@ -821,9 +832,12 @@ class ClaudeChatInterface:
|
|||
|
||||
msg_id = elem.get_attribute("data-message-id")
|
||||
if not msg_id:
|
||||
# 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])}"
|
||||
# WICHTIG: Nutze einen ZÄHLER statt Hash!
|
||||
# Der Zähler ist die Anzahl der bisherigen Claude-Nachrichten.
|
||||
# Das ist stabil weil neue Nachrichten nur HINZUGEFÜGT werden.
|
||||
# Der Hash war instabil weil der Text sich leicht ändern kann.
|
||||
claude_msg_count = sum(1 for m in messages if m.is_from_assistant)
|
||||
msg_id = f"claude_msg_{claude_msg_count}"
|
||||
|
||||
messages.append(ChatMessage(
|
||||
id=msg_id,
|
||||
|
|
@ -831,7 +845,7 @@ class ClaudeChatInterface:
|
|||
is_from_assistant=True,
|
||||
timestamp=time.time()
|
||||
))
|
||||
logger.debug(f"Claude-Nachricht {i}: '{text[:80]}...' ({len(text)} Zeichen)")
|
||||
logger.debug(f"Claude-Nachricht {claude_msg_count if 'claude_msg_count' in dir() else i}: '{text[:80]}...' ({len(text)} Zeichen)")
|
||||
except Exception as e:
|
||||
logger.debug(f"Fehler bei Claude-Nachricht {i}: {e}")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue