Файлы
В development runtime ищет config в текущей директории, рядом с executable и
в
process.resourcesPath. Упакованный launcher игнорирует внешние config и env
overrides: production endpoints и публичные trust roots компилируются в main
process через src/main/core/config/production-config.ts. Release-сборка
останавливается, если ей не передан проверенный публичный registry ключей.
Режимы
auto выбирает development при NODE_ENV=development, иначе production.
Подпись control plane
trustedKeys содержит только Ed25519 public keys. Key id равен первым 24
hex-символам SHA-256 публичного ключа и выводится wraithbound-keyctl.
Launcher проверяет подпись envelope до декодирования manifest/maintenance.
enforceSignedReleases=false нужен только на период миграции: сборка без
записи в control plane продолжит работать через site API. После публикации
всех сборок и закрепления production public key включите strict mode. Тогда
отсутствующий trust root, недоступный control plane и неопубликованный build
блокируют установку и запуск, а не откатываются на неподписанные данные.
Production launcher всегда работает в strict mode. Перед build:win или
release:win укажите путь к публичному registry, созданному keyctl:
WB_HAWK_TOKEN используется только во время сборки и
должен поступать из secret-хранилища CI; если monitoring выключен, переменную
можно не задавать.
Состояние ключа проверяется вместе с validFromUnixMs/validUntilUnixMs на
момент сборки. Future, expired и revoked keys в trust root не попадают. До
завершения retiring-периода выпустите все активные игровые releases новым
ключом и соберите launcher, который уже доверяет ему; иначе старый release
закономерно перестанет проходить проверку после окончания окна.
Env overrides
WB_LAUNCHER_TRUSTED_KEYS_FILE и WB_HAWK_TOKEN не являются runtime
overrides. Это build-time inputs production artifact; launcher не читает их на
компьютере игрока.
Env overrides работают только в неупакованном launcher. Authlib URLs
вычисляются автоматически от apiUrl. Серверные secrets и private signing
keys в config не хранятся.
