0.167.29
Fixed
- Человекочитаемая ошибка логина по plain HTTP вместо сырого TypeError ( — P2). При открытии WebUI по HTTP с сетевого адреса (например
http://192.168.x.x:14888) браузер не считает контекст безопасным и не предоставляет Web Crypto API —crypto.subtle === undefined, из-за чего первый шаг OAuth-логина (PKCE-хелперgenerateCodeChallenge) падал сTypeError: Cannot read properties of undefined (reading 'digest'), и сырой текст исключения показывался в форме входа. Теперь перед вызовомcrypto.subtle.digestпроверяется доступность API (typeof crypto === 'undefined' || !crypto.subtle) и бросаетсяErrorс объяснением на русском: причина (HTTP без HTTPS → браузер блокирует Web Crypto API в небезопасном контексте) и способы обхода (открыть черезhttp://localhost:<порт>/ SSH-туннель / настроить HTTPS reverse-proxy). Проверка стоит на шаге 1doLoginRequest— до первого fetch, поэтому сетевых вызовов и session-cleanup не требуется. Тесты (vitest): негативные — при замоканномcryptoбезsubtlegenerateCodeChallengeреджектится с сообщением, содержащим «Web Crypto API»/«localhost»/«HTTPS», аloginRequestпадает тем же сообщением без единого вызоваfetch; позитивный — RFC 7636 test vector по-прежнему проходит (поведение в secure context не изменилось).