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). Проверка стоит на шаге 1 doLoginRequest — до первого fetch, поэтому сетевых вызовов и session-cleanup не требуется. Тесты (vitest): негативные — при замоканном crypto без subtle generateCodeChallenge реджектится с сообщением, содержащим «Web Crypto API»/«localhost»/«HTTPS», а loginRequest падает тем же сообщением без единого вызова fetch; позитивный — RFC 7636 test vector по-прежнему проходит (поведение в secure context не изменилось).