HOTFIX 1.1.8 (2026-07-15) — зависание на Windows в первом диалоге
Симптом
На Windows (все ПК, не зависит от железа/драйвера) игра зависала намертво в первом диалоге с Кручининым — сразу после SSH-хендшейка («обмен ключами → отпечаток хоста → randomart»). Windows закрывала процесс как «перестал отвечать» (журнал событий: Event 1002, Application Hang — это не краш, поэтому не было ни faulting module, ни дампа). macOS не затронут.
Причина
ASCII-скроллбар чата рисовал «палец» глифом █ (U+2588). Этого глифа нет в Handjet.ttf — как и всех блочных/геометрических (█ ▌ ■ ▓ ░ ▒ ● ○, проверено по cmap шрифта). Godot молча подставляет глиф из системного фоллбэк-шрифта, а он на Windows имеет другую ширину, чем на маке.
Цепочка зависания (срабатывала при первом переполнении лога чата — ровно после высокого randomart-блока):
в треке впервые появляется █ → Label трека меняет ширину;
HBox пересчитывает ширину ScrollContainer с чатом;
все пузыри (RichTextLabel, fit_content, autowrap) переукладываются → меняется высота контента → max_value скроллбара;
трек перерисовывается под новые max/page → ширина снова другая → п.2.
Движок гоняет этот лейаут-цикл, не выходя из кадра → главный поток заморожен. На маке фоллбэк-глиф случайно совпал по ширине — цикл не запускался.
Как нашли
GDScript-ошибки исключили (release их не роняет), анти-пиратку выключили целиком (A/B), декод-эффект переписали на безопасный visible_characters — не помогло. Тогда вшили [DLG]-трассировку фаз чата + flush_stdout_on_print и сняли лог на живой машине (Commutator.exe --verbose > log.txt 2>&1): лог встал между show idx=7 (первая строка после randomart) и её done — дальше по коду окна нашли петлю и отсутствующий глиф.
