O avatar da instância na ThinSidebar caía no fallback
activeInstance.avatar/profilePictureUrl — URL do CDN pps.whatsapp.net que
expira e responde 403 (hotlink) no navegador. Agora usa só o proxy do
backend (/proxy-avatar → /api/inbox/avatar, que baixa server-side); sem
proxy resolvível, mostra o ícone em vez da URL crua.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Adiciona @@index nas FKs que sofrem cascade/SET NULL ao deletar instância:
messages.replyToId (self-ref, evitava O(n²) no SET NULL), chats.instanceId,
chats.contactId, contacts.instanceId, broadcasts.instanceId.
- InstanceRepository.delete agora apaga 'messages' em lotes (5k) antes do
cascade, evitando transação/locks gigantes em instâncias com dezenas de
milhares de mensagens. O restante (chats/contacts/...) sai pelo cascade,
agora rápido com os índices.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Aponta scoreodonto.com, mercado.clube67.com, instrucoes_gerais e
newwhats.local.wiki para os commits de renomeação staging->dev.
Inclui os 2 docs locais restantes (arquitetura_vlan_proposta.md,
clube67/newwhats.local/arquitetura.md).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>