Releases: Yumash/BabelChat
BabelChat v3.1.1
Changed / Изменено / Cambiado
- Code cleanup: removed 235 lines of dead pointer-chasing code from memory reader
- Extracted
DeduplicationBufferinto standalone class with safety cap (10k entries) - Replaced 40+ magic numbers with named constants across pipeline, overlay, memory reader
- Unified 5 duplicate scan-accept blocks into
_accept_marker()helper - Named regex groups in parser (
m.group('text')instead ofm.group(4)) - Fixed race condition:
itertools.count()for thread-safe message IDs - Narrowed exception handlers (
RuntimeError | OSErrorinstead of bareException) - Removed dead
dict_textparameter, duplicate regex, unused variables - Made
RE_WOW_LINKpublic (was private_RE_WOW_LINKimported cross-module withnoqa)
— Чистка кода: удалено 235 строк мёртвого pointer-chasing кода из memory reader
— Дедупликация вынесена в отдельный класс с лимитом 10k записей
— 40+ магических чисел заменены именованными константами
— 5 дублей scan-accept объединены в _accept_marker()
— Именованные группы в regex парсера
— Потокобезопасные ID через itertools.count()
— Сужены обработчики исключений, удалены мёртвые параметры и дубли
— Limpieza de código: eliminadas 235 líneas de código muerto de pointer-chasing
— Deduplicación extraída en clase independiente con límite de 10k entradas
— 40+ números mágicos reemplazados con constantes nombradas
— 5 bloques duplicados scan-accept unificados en _accept_marker()
— Grupos regex nombrados en el parser
— IDs thread-safe via itertools.count()
— Manejadores de excepciones restringidos, parámetros y duplicados eliminados
BabelChat v3.1.0
Fixed / Исправлено / Corregido
- CRITICAL: Race condition in dedup —
_recent_messagesaccessed from multiple threads without lock, now protected bythreading.Lock - CRITICAL: Overlay memory leak —
_messageslist and QTextEdit grew without bound over long sessions, now capped at 500/1500 - Config torn reads — pipeline thread could see mix of old and new config values, now uses snapshot
- Translator crash on network errors — only
DeepLExceptionwas caught, addedexcept Exceptionfallback - SQLite cache never cleaned up —
cleanup()called on pipeline start to remove expired entries - Config load silently reset to defaults — now logs warning on corrupt/missing config
- Dedup timestamps used
time.time()(affected by NTP) — switched totime.monotonic() - Empty payload from addon buffer caused wasted work — now skipped early
— КРИТИЧНО: Гонка в дедупликации — _recent_messages без блокировки из нескольких потоков, добавлен threading.Lock
— КРИТИЧНО: Утечка памяти в оверлее — список сообщений и QTextEdit росли бесконечно, ограничены 500/1500
— Разрыв чтения конфига — pipeline мог видеть смесь старых и новых значений, теперь snapshot
— Краш переводчика при сетевых ошибках — ловился только DeepLException, добавлен общий обработчик
— Кэш SQLite никогда не чистился — cleanup() вызывается при старте
— Config молча сбрасывался при повреждении — теперь логирует предупреждение
— Dedup использовал time.time() (чувствителен к NTP) — заменён на time.monotonic()
— Пустой payload из буфера создавал лишнюю работу — пропускается
— CRÍTICO: Condición de carrera en dedup — _recent_messages sin bloqueo desde múltiples hilos, protegido con threading.Lock
— CRÍTICO: Fuga de memoria en overlay — lista de mensajes y QTextEdit crecían sin límite, limitados a 500/1500
— Lecturas rotas de config — pipeline podía ver mezcla de valores viejos y nuevos, ahora usa snapshot
— Crash del traductor por errores de red — solo se capturaba DeepLException, añadido fallback general
— Caché SQLite nunca se limpiaba — cleanup() se ejecuta al iniciar
— Config se reiniciaba silenciosamente — ahora registra advertencia
— Dedup usaba time.time() (afectado por NTP) — cambiado a time.monotonic()
— Payload vacío del buffer causaba trabajo innecesario — ahora se omite
Added / Добавлено / Añadido
- Renamed project: ChatTranslatorHelper → BabelChat (new identity, no CurseForge conflict)
- Slang dictionary category — 33 new terms: ez, copium, bricked, pumping, carry, wipe, lust, pug, soak, kite, gank, glad...
- Slash command
/babel(replaces/wt) - CurseForge packaging:
.pkgmeta, addon README, BBCode description, separateBabelChat-Addon.zipin releases - DB migration from old ChatTranslatorHelper (automatic on first load)
- Technical documentation (
docs/tech/) and user guide (docs/user/)
— Переименование: ChatTranslatorHelper → BabelChat (новая идентичность, нет конфликта на CurseForge)
— Категория сленга — 33 новых термина: ez, copium, bricked, pumping, carry, wipe, lust, pug, soak, kite, gank, glad...
— Слеш-команда /babel (вместо /wt)
— Пакетирование CurseForge: .pkgmeta, README аддона, BBCode описание, отдельный BabelChat-Addon.zip
— Миграция БД из ChatTranslatorHelper (автоматически при первом запуске)
— Техническая документация (docs/tech/) и руководство пользователя (docs/user/)
— Renombrado: ChatTranslatorHelper → BabelChat (nueva identidad, sin conflicto en CurseForge)
— Categoría de jerga — 33 nuevos términos: ez, copium, bricked, pumping, carry, wipe, lust, pug, soak, kite, gank, glad...
— Comando /babel (reemplaza /wt)
— Empaquetado CurseForge: .pkgmeta, README del addon, descripción BBCode, BabelChat-Addon.zip separado
— Migración de BD desde ChatTranslatorHelper (automática al primer inicio)
— Documentación técnica (docs/tech/) y guía de usuario (docs/user/)
BabelChat v3.0.1-beta.1
Fixed / Исправлено / Corregido
- CRITICAL: Race condition in dedup —
_recent_messagesaccessed from multiple threads without lock, now protected bythreading.Lock - CRITICAL: Overlay memory leak —
_messageslist and QTextEdit grew without bound over long sessions, now capped at 500/1500 - Config torn reads — pipeline thread could see mix of old and new config values, now uses snapshot
- Translator crash on network errors — only
DeepLExceptionwas caught, addedexcept Exceptionfallback - SQLite cache never cleaned up —
cleanup()called on pipeline start to remove expired entries - Config load silently reset to defaults — now logs warning on corrupt/missing config
- Dedup timestamps used
time.time()(affected by NTP) — switched totime.monotonic() - Empty payload from addon buffer caused wasted work — now skipped early
— КРИТИЧНО: Гонка в дедупликации — _recent_messages без блокировки из нескольких потоков, добавлен threading.Lock
— КРИТИЧНО: Утечка памяти в оверлее — список сообщений и QTextEdit росли бесконечно, ограничены 500/1500
— Разрыв чтения конфига — pipeline мог видеть смесь старых и новых значений, теперь snapshot
— Краш переводчика при сетевых ошибках — ловился только DeepLException, добавлен общий обработчик
— Кэш SQLite никогда не чистился — cleanup() вызывается при старте
— Config молча сбрасывался при повреждении — теперь логирует предупреждение
— Dedup использовал time.time() (чувствителен к NTP) — заменён на time.monotonic()
— Пустой payload из буфера создавал лишнюю работу — пропускается
— CRÍTICO: Condición de carrera en dedup — _recent_messages sin bloqueo desde múltiples hilos, protegido con threading.Lock
— CRÍTICO: Fuga de memoria en overlay — lista de mensajes y QTextEdit crecían sin límite, limitados a 500/1500
— Lecturas rotas de config — pipeline podía ver mezcla de valores viejos y nuevos, ahora usa snapshot
— Crash del traductor por errores de red — solo se capturaba DeepLException, añadido fallback general
— Caché SQLite nunca se limpiaba — cleanup() se ejecuta al iniciar
— Config se reiniciaba silenciosamente — ahora registra advertencia
— Dedup usaba time.time() (afectado por NTP) — cambiado a time.monotonic()
— Payload vacío del buffer causaba trabajo innecesario — ahora se omite
Added / Добавлено / Añadido
- Renamed project: ChatTranslatorHelper → BabelChat (new identity, no CurseForge conflict)
- Slang dictionary category — 33 new terms: ez, copium, bricked, pumping, carry, wipe, lust, pug, soak, kite, gank, glad...
- Slash command
/babel(replaces/wt) - CurseForge packaging:
.pkgmeta, addon README, BBCode description, separateBabelChat-Addon.zipin releases - DB migration from old ChatTranslatorHelper (automatic on first load)
- Technical documentation (
docs/tech/) and user guide (docs/user/)
— Переименование: ChatTranslatorHelper → BabelChat (новая идентичность, нет конфликта на CurseForge)
— Категория сленга — 33 новых термина: ez, copium, bricked, pumping, carry, wipe, lust, pug, soak, kite, gank, glad...
— Слеш-команда /babel (вместо /wt)
— Пакетирование CurseForge: .pkgmeta, README аддона, BBCode описание, отдельный BabelChat-Addon.zip
— Миграция БД из ChatTranslatorHelper (автоматически при первом запуске)
— Техническая документация (docs/tech/) и руководство пользователя (docs/user/)
— Renombrado: ChatTranslatorHelper → BabelChat (nueva identidad, sin conflicto en CurseForge)
— Categoría de jerga — 33 nuevos términos: ez, copium, bricked, pumping, carry, wipe, lust, pug, soak, kite, gank, glad...
— Comando /babel (reemplaza /wt)
— Empaquetado CurseForge: .pkgmeta, README del addon, descripción BBCode, BabelChat-Addon.zip separado
— Migración de BD desde ChatTranslatorHelper (automática al primer inicio)
— Documentación técnica (docs/tech/) y guía de usuario (docs/user/)
WoWTranslator v1.0.8
Fixed / Исправлено
- Short phrases "hi", "sup", "go" now translated via phrasebook (were silently skipped due to MIN_TEXT_LENGTH and _SKIP_PHRASES filters)
- Removed "go" from detector skip list — now handled as abbreviation before detection
- Added "hi" → "привет", "sup" → "привет", "go" → "вперёд" as pre-detection abbreviations