From d9976ba8b9bbb6f7aa6f24b4954c226e2f34bbc0 Mon Sep 17 00:00:00 2001 From: dazedanon Date: Sat, 28 Feb 2026 01:51:27 -0600 Subject: [PATCH] Clear Speaker cache upon run --- gui/translation_tab.py | 10 ++++++++-- modules/rpgmakerace.py | 8 ++++++++ modules/rpgmakermvmz.py | 8 ++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/gui/translation_tab.py b/gui/translation_tab.py index f7504c0..c6b5b22 100644 --- a/gui/translation_tab.py +++ b/gui/translation_tab.py @@ -340,15 +340,21 @@ class TranslationWorker(QThread): # Run handlers sequentially in this worker process so globals are shared try: if is_mvmz: - from modules.rpgmakermvmz import handleMVMZ as handler, setSpeakerParseMode, finalizeSpeakerParse, TOKENS, calculateCost, MODEL + from modules.rpgmakermvmz import handleMVMZ as handler, setSpeakerParseMode, finalizeSpeakerParse, resetSpeakerState, TOKENS, calculateCost, MODEL elif is_ace: - from modules.rpgmakerace import handleACE as handler, setSpeakerParseMode, finalizeSpeakerParse, TOKENS, calculateCost, MODEL + from modules.rpgmakerace import handleACE as handler, setSpeakerParseMode, finalizeSpeakerParse, resetSpeakerState, TOKENS, calculateCost, MODEL except Exception as e: engine_name = "rpgmakermvmz" if is_mvmz else "rpgmakerace" self.emit_log(f"❌ Could not import {engine_name} for speaker-parse: {e}") self.finished_signal.emit(False, str(e)) return + # Reset stale speaker data from any previous run + try: + resetSpeakerState() + except Exception: + pass + # Enable speaker parse mode in this process try: setSpeakerParseMode(True) diff --git a/modules/rpgmakerace.py b/modules/rpgmakerace.py index 55502d5..6a486d4 100644 --- a/modules/rpgmakerace.py +++ b/modules/rpgmakerace.py @@ -3731,6 +3731,14 @@ def translateAI(text, history, fullPromptFlag): mismatchList=MISMATCH ) +def resetSpeakerState(): + """Clear all speaker-related globals so a fresh run doesn't carry over stale data.""" + global NAMESLIST, SPEAKER_COLLECTED + NAMESLIST = [] + SPEAKER_COLLECTED = [] + with _speakerCacheLock: + _speakerCache.clear() + def setSpeakerParseMode(flag: bool): """Enable/disable speaker-only parse mode.""" global SPEAKER_PARSE_MODE diff --git a/modules/rpgmakermvmz.py b/modules/rpgmakermvmz.py index 966279f..a1624a6 100644 --- a/modules/rpgmakermvmz.py +++ b/modules/rpgmakermvmz.py @@ -4169,6 +4169,14 @@ def translateAI(text, history, fullPromptFlag): mismatchList=MISMATCH ) +def resetSpeakerState(): + """Clear all speaker-related globals so a fresh run doesn't carry over stale data.""" + global NAMESLIST, SPEAKER_COLLECTED + NAMESLIST = [] + SPEAKER_COLLECTED = [] + with _speakerCacheLock: + _speakerCache.clear() + def setSpeakerParseMode(flag: bool): """Enable/disable speaker-only parse mode.""" global SPEAKER_PARSE_MODE