Files
VPS 4 Deploy Agent b97f7f94e4 feat: sistema de figurinhas, emoji PT-BR e preloader inteligente
- Stickers: captura automática por fileSha256 (Baileys) no MessageHandler,
  tabela Prisma 'stickers' com deduplicação por [tenantId, sha256],
  API REST /api/stickers (list + favorite toggle), cache IndexedDB permanente
  (sem TTL — conteúdo imutável), StickerPanel.tsx com abas Recentes/Favoritos
- Emoji picker: migrado de emoji-picker-react para @emoji-mart/react com
  locale="pt" (tradução completa: categorias, busca, mensagem de sem resultado)
- Preloader: aparece apenas em hard reload (F5/URL direta) via
  performance.getEntriesByType('navigation').type + sessionStorage flag,
  navegação client-side Next.js pula o overlay instantaneamente
- Avatar cache: Wasabi como storage persistente + IndexedDB client-side,
  avatar_version via MD5(avatarUrl) sem coluna extra no banco,
  rota /api/storage/view/* para servir arquivos Wasabi ao frontend

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 17:48:36 +02:00

39 lines
933 B
JSON

{
"name": "newwhats-dashboard",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "next dev -p 4004",
"build": "next build",
"start": "next start -p 3003",
"lint": "next lint"
},
"dependencies": {
"@emoji-mart/data": "^1.2.1",
"@emoji-mart/react": "^1.1.1",
"@xyflow/react": "^12.10.2",
"axios": "^1.6.0",
"date-fns": "^4.1.0",
"emoji-picker-react": "^4.18.0",
"framer-motion": "^11.0.0",
"immer": "^10.0.3",
"lucide-react": "^0.360.0",
"next": "^14.2.35",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"reactflow": "^11.11.4",
"recharts": "^3.8.1",
"socket.io-client": "^4.8.3",
"zustand": "^4.5.1"
},
"devDependencies": {
"@types/node": "20.19.40",
"@types/react": "^18",
"@types/react-dom": "^18",
"autoprefixer": "^10.4.19",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.1",
"typescript": "5.9.3"
}
}