Dois bugs reais reportados pelo usuário testando um ramal de verdade
(teste@teste.com.br / ramal 1501):
1. widgetStorage.mergeConfig fazia `{...externalConfig, ...stored}` —
um sip_config salvo de sessão/ramal anterior no mesmo navegador
sempre vencia sobre as credenciais que o backend acabou de injetar
via data-sip-* pro agente logado agora, então o widget tentava
registrar com o ramal errado (ou senha vazia) pra sempre, sem erro
visível. Invertido: externalConfig (sempre fresco, vindo do agente
logado) vence; stored só preenche o que faltar.
2. crypto.subtle é undefined em contexto inseguro (HTTP puro, mesma
classe de bug do botão de copiar da PHASE 71) — salvar a senha na
aba Configurações do widget quebrava com "Cannot read properties of
undefined (reading 'importKey')". Agora cai pra um fallback base64
reversível quando SubtleCrypto não está disponível.
Testado com Playwright: config "errado" salvo no localStorage não sobrevive
mais a um reload — o próximo connect() usa o ramal real do agente.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFaBaBSQGhyXGEgtTYZGV8