Решили: тумблеры каналов диагностики живут полкой в консоли логов (F2), а не отдельным экраном на новой клавише; выбор каналов хранится между запусками в машинно-локальном файле.
Почему не новая клавиша. Дев-клавиш уже три (F1 команды, F2 лог, F3 бои), и накануне Макс не смог вспомнить, какие из них живые, — четвёртая множила бы ровно эту проблему. Тумблеры нужны там, где на их результат и смотрят: в логе.
Сказано: «может, пока помню, сделаеь на F4 новый экран с включением логов (и отключением?), с кнопкой “показать логи” и т.д.? Твое мнение?» (05.08.2026, сессия 499c4dc5). Предложение было про отдельный экран; полку в существующей консоли Макс выбрал из трёх вариантов.
Грабли, и они не про кооп: докстринг обещал то, чего никто не написал. Diag с самого начала
утверждал, что «включённые каналы переживают перезапуск — их помнит машинно-локальное хранилище». У
события Changed при этом не было ни одного подписчика: каждый запуск начинался с тишины, и на живом
разборе кооп-прогона каналы включали руками на обеих машинах — и переигрывали заход, когда один
забыл.
Урок общий: докстринг — единственная часть кода, которую ничто не проверяет. Он не компилируется, не падает и не расходится с реальностью заметно. Обещание поведения в нём («переживает», «хранится», «гарантируется») стоит либо подтверждать тестом, либо не писать вовсе.
Второе следствие, мелкое, но общее: кнопки каналов строятся по самому перечислению, а не
перечисляются в разметке. Список в UXML разъехался бы с DiagChannel на первом же новом канале —
молча: тумблера просто не было бы, а канал считался бы неработающим.
Владелец правды: Game/Services/DiagChannelStore.cs, Core/Settings/DiagSettings.cs,
UI/DevConsole/DevLogScreen.cs (полка и кнопка папки).