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:
|
elif msg.id == since_id:
|
||||||
found_marker = True
|
found_marker = True
|
||||||
|
|
||||||
# WICHTIG: Wenn since_id nicht gefunden wurde, könnte es sein dass:
|
# WICHTIG: Wenn since_id nicht gefunden wurde, versuche eine Fallback-Logik
|
||||||
# 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.
|
|
||||||
if not found_marker and all_messages:
|
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_"):
|
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)")
|
logger.debug(f"since_id '{since_id[:30]}...' hat altes Format oder nicht gefunden - überspringe alle (Neustart-Schutz)")
|
||||||
# Aktualisiere intern auf die letzte bekannte Nachricht
|
|
||||||
# damit zukünftige NEUE Nachrichten erkannt werden
|
|
||||||
return []
|
return []
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
@ -821,9 +832,12 @@ 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:
|
||||||
# WICHTIG: ID nur aus Text-Hash generieren, NICHT aus Index!
|
# WICHTIG: Nutze einen ZÄHLER statt Hash!
|
||||||
# So bleibt die ID stabil auch wenn sich die Reihenfolge ändert
|
# Der Zähler ist die Anzahl der bisherigen Claude-Nachrichten.
|
||||||
msg_id = f"claude_{hash(text[:200])}"
|
# 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(
|
messages.append(ChatMessage(
|
||||||
id=msg_id,
|
id=msg_id,
|
||||||
|
|
@ -831,7 +845,7 @@ class ClaudeChatInterface:
|
||||||
is_from_assistant=True,
|
is_from_assistant=True,
|
||||||
timestamp=time.time()
|
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:
|
except Exception as e:
|
||||||
logger.debug(f"Fehler bei Claude-Nachricht {i}: {e}")
|
logger.debug(f"Fehler bei Claude-Nachricht {i}: {e}")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue