Commit graph

139 commits

Author SHA1 Message Date
esdrasrenan
c7711dfda5 fix(chat desktop): abrir/minimizar chat ao detectar unread via Convex 2025-12-09 01:20:02 -03:00
esdrasrenan
a7d9803c97 chore(chat): remover WS dedicado e usar apenas Convex 2025-12-09 01:08:59 -03:00
esdrasrenan
f8a472ee46 chore(chat): tipar cliente Convex do desktop sem any 2025-12-09 01:04:53 -03:00
esdrasrenan
a8f5ff9d51 feat(chat): desktop usando Convex WS direto e fallback WS dedicado 2025-12-09 01:01:54 -03:00
Seu Nome
0afdba1635 fix: corrige chat reabrindo sozinho e melhora mensagens
- Remove window.show() que forçava chat reabrir a cada polling
- Chat só abre minimizado quando há NOVAS mensagens (janela não existia)
- Se usuário fechou o chat, não reabre automaticamente
- Corrige acentuação: "Voce" → "Você", "nao" → "não"
- Simplifica toast para "Chat ao vivo iniciado"
- Melhora mensagem de erro quando máquina está offline
- Loga erro técnico no console ao invés de exibir para usuário

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 12:22:44 -03:00
Seu Nome
e66b3cce92 fix: ajustes visuais na janela de chat do desktop
- Remove scrollbars com overflow: hidden no CSS
- Aumenta tamanho da janela minimizada (210x52) para não cortar badge
- Adiciona bordas arredondadas (rounded-2xl) no chat expandido
- Adiciona sombra (shadow-xl) no chat expandido

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 11:31:43 -03:00
Seu Nome
d2b8c27206 feat: melhorias visuais na janela de chat do desktop
- Desabilita sombra da janela para transparência funcionar corretamente
- Adiciona badge de mensagens não lidas no chip minimizado
- Ajusta tamanho da janela minimizada para acomodar badge e texto offline
- Mostra chat minimizado com badge quando há novas mensagens (menos intrusivo)
- Adiciona listener para atualização de unread count em tempo real

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 11:14:15 -03:00
Seu Nome
24dee5d5eb feat: melhorias no sistema de chat ao vivo
- Chat do agente abre expandido automaticamente ao iniciar nova sessao
- Toasts fecham apos tempo fixo independente do foco da janela
- Janela de chat do desktop com transparencia (sem fundo branco)
- Chat reabre quando usuario abre o Raven (duplo clique no tray)
- Chat nao reabre sozinho com novas mensagens (apenas notificacao)
- Mensagem de toast simplificada: "Chat ao vivo iniciado"
- Reduz intervalo de polling SSE de 2s para 1s (mais responsivo)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 11:06:01 -03:00
esdrasrenan
a0edaf8adb fix: redimensiona janela de chat ao minimizar/expandir
- Adiciona funcao set_chat_minimized que redimensiona a janela
- Modo minimizado: 200x56 (tamanho do chip)
- Modo expandido: 380x520 (tamanho completo)
- Janela reposiciona automaticamente no canto inferior direito
- Adiciona comando is_chat_using_sse para verificar modo de conexao

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 17:12:29 -03:00
esdrasrenan
0e0bd9a49c Otimizações de performance e correções no chat ao vivo
- Corrigir acentuações (sessão, sessões, duração)
- Auto-minimizar chat nativo quando sessão termina
- Corrigir race condition em markMachineMessagesRead (Promise.all)
- Adicionar paginação no cron autoEndInactiveSessions (.take(50))
- Otimizar listMachineMessages com limite de 100 mensagens
- Corrigir memory leak no ChatWidget (limite de 200 mensagens)
- Exibir estado offline quando não há sessão ativa

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 15:14:47 -03:00
esdrasrenan
409da8afda Fix duration format and minimized chat layout
- Format duration as hours+minutes when > 60min (e.g., 2h 26min)
- Change minimized chat to compact chip style (matching web)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 14:37:28 -03:00
esdrasrenan
229c9aa1c7 Match desktop chat layout with web version
- Change agent icon from Headphones to MessageCircle
- Adjust avatar size to size-7 and icons to size-3.5
- Reposition attach button next to send button (textarea -> attach -> send)
- Add Online indicator in header with animated green dot
- Implement minimized state (collapsed view like web)
- Hide web chat widget when running in Tauri context (avoid duplicate)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 13:58:36 -03:00
esdrasrenan
7e270bcd3b Update chat layout to match web version
- Client messages on left with white background and border
- Agent messages on right with black background
- Added circular avatars (User icon for client, Headphones for agent)
- Improved spacing and visual consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 13:24:40 -03:00
esdrasrenan
fd0e29514a fix(desktop): restore custom chat window header
Revert to frameless window with custom header containing
minimize/close buttons and drag region.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 13:20:35 -03:00
esdrasrenan
c217a40030 feat(desktop): add file attachments and native chat window
- Add file upload support in chat (PDF, images, txt, docs, xlsx)
  - Limited to 10MB max file size
  - Only allowed extensions for security
- Use native Windows decorations for chat window
- Remove ChatFloatingWidget (replaced by native window)
- Simplify chat event listeners (window managed by Rust)
- Fix typo "sessao" -> "sessão"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 13:09:55 -03:00
esdrasrenan
2f89fa33fe fix(desktop): use correct store path in chat widgets
ChatWidget and ChatFloatingWidget were using relative path
"machine-agent.json" instead of the full path with appLocalDataDir().
This caused "Maquina nao registrada" error in chat window.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 12:46:32 -03:00
esdrasrenan
faa6e28765 Add visual debug indicator to chat widget
Shows unread count and sessions count next to the chat button
for debugging purposes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 12:18:46 -03:00
esdrasrenan
b10548157e Add debug logs for chat and red border to end chat button
- Add detailed debug logs in Rust (chat.rs) to trace polling flow
- Add console.log in frontend (main.tsx) to trace event reception
- Add red border to "Encerrar" button in chat panels for better visibility

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 12:03:40 -03:00
esdrasrenan
88a3b37f2f Fix chat session management and add floating widget
- Fix session sync: events now send complete ChatSession data instead of
  partial ChatSessionSummary, ensuring proper ticket/agent info display
- Add session-ended event detection to remove closed sessions from client
- Add ChatFloatingWidget component for in-app chat experience
- Restrict endSession to ADMIN/MANAGER/AGENT roles only
- Improve polling logic to detect new and ended sessions properly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 11:16:56 -03:00
esdrasrenan
ba91c1e0f5 Implementa sistema de chat em tempo real entre agente e cliente
- Adiciona tabela liveChatSessions no schema Convex
- Cria convex/liveChat.ts com mutations e queries para chat
- Adiciona API routes para maquinas (sessions, messages, poll)
- Cria modulo chat.rs no Tauri com ChatRuntime e polling
- Adiciona comandos de chat no lib.rs (start/stop polling, open/close window)
- Cria componentes React do chat widget (ChatWidget, types)
- Adiciona botao "Iniciar Chat" no dashboard (ticket-chat-panel)
- Implementa menu de chat no system tray
- Polling de 2 segundos para maior responsividade
- Janela de chat flutuante, frameless, always-on-top

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 01:00:27 -03:00
esdrasrenan
23e7cf58ae Redesenho da UI de dispositivos e correcao de VRAM
- Reorganiza layout da tela de dispositivos admin
- Renomeia secao "Controles do dispositivo" para "Atalhos"
- Adiciona botao de Tickets com badge de quantidade
- Simplifica textos de botoes (Acesso, Resetar)
- Remove email da maquina do cabecalho
- Move empresa e status para mesma linha
- Remove chip de Build do resumo
- Corrige deteccao de VRAM para GPUs >4GB usando nvidia-smi
- Adiciona prefixo "VRAM" na exibicao de memoria da GPU
- Documenta sincronizacao RustDesk

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 17:01:40 -03:00
rever-tecnologia
c5150fee8f Fix useCallback missing dependency warning
Add config.machineId to openSystem dependency array

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 17:25:41 -03:00
rever-tecnologia
cf31e78edb Add requester filter and improve error messages
- Add requester filter to device tickets history page
- Create listMachineRequesters query to list unique requesters
- Add friendly API error formatting in desktop agent
- Translate validation errors to user-friendly Portuguese messages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 17:22:44 -03:00
rever-tecnologia
376e81c9c7 Fix RustDesk remote access sync after agent install
- Reload config/token directly from store before syncing
- Avoid race condition when register() calls ensureRustdesk before React state updates
- Ensures machineId and token are always fresh from disk

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 16:52:05 -03:00
rever-tecnologia
90d2221240 Fix RustDesk sync before auto-launch redirect
The RustDesk data saved by Rust directly to file was not being
synced to the backend because the app redirected to the web platform
before the sync could complete.

- Reload store from disk in openSystem to get Rust-saved data
- Sync RustDesk before redirecting with 3s timeout
- Fire-and-forget sync to avoid blocking the redirect

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 15:38:35 -03:00
rever-tecnologia
736282a805 Corrigir sincronizacao automatica do RustDesk com o backend
- Corrigir indentacao do useEffect que dispara ensureRustdesk
- Adicionar logs detalhados em handleRustdeskProvision e ensureRustdesk
- Logs ajudam a diagnosticar falhas na sincronizacao do acesso remoto

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 14:42:49 -03:00
rever-tecnologia
38995b95c6 Improve loan page and add company filter to USB bulk control
- Update Next.js to 16.0.7
- Fix accent on menu item "Emprestimos" to "Empréstimos"
- Standardize loan page with project patterns (DateRangeButton, cyan color scheme, ToggleGroup)
- Add company filter to USB bulk policy dialog
- Update CardDescription text in devices overview
- Fix useEffect dependency warning in desktop main.tsx

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 14:52:27 -03:00
Esdras Renan
35de633b6f Delay RustDesk provisioning until machineId is loaded 2025-11-27 08:29:33 -03:00
Esdras Renan
3ee072854f ux: evitar estados intermediarios incorretos no portal e desktop 2025-11-14 11:43:09 -03:00
Esdras Renan
61d3573830 ux(desktop): remover texto de preparacao do RustDesk no onboarding 2025-11-14 11:34:27 -03:00
Esdras Renan
20f80083f2 fix: skip rustdesk sync before registration 2025-11-11 20:41:12 -03:00
Esdras Renan
e0bb6bb80f feat: event-driven rustdesk sync 2025-11-11 20:26:29 -03:00
Esdras Renan
cdf3feaa96 chore(agent): add remote access logging and state 2025-11-11 18:26:37 -03:00
Esdras Renan
07d304b5b1 fix(agent): align machine profile fields 2025-11-11 17:59:25 -03:00
Esdras Renan
115d4a62e8 feat(agent): self-heal rustdesk remote access 2025-11-11 17:50:09 -03:00
Esdras Renan
ef1db284fa Provisiona RustDesk automaticamente 2025-11-11 11:54:46 -03:00
codex-bot
e0ef66555d feat: dispositivos e ajustes de csat e relatórios 2025-11-03 19:29:50 -03:00
Esdras Renan
149d46e7d3 desktop: onboarding – substituir textos ('Agente Desktop' -> 'Sistema de chamados'; 'Portal do Cliente' -> 'Raven' com mesmo espaçamento da sidebar) 2025-10-19 14:59:44 -03:00
Esdras Renan
2a8fb4330c Desktop register: validate email format client-side and disable submit to avoid 400 2025-10-19 02:25:12 -03:00
Esdras Renan
2c7c22d70b Desktop: switch deactivation screen background to solid black 2025-10-19 02:16:35 -03:00
Esdras Renan
77f48652cd Auth: poll machine session to reflect deactivation in real time; Desktop: refresh deactivation screen to match design system 2025-10-19 02:13:39 -03:00
Esdras Renan
1251468b77 Refine machine details layout and improve download feedback 2025-10-19 00:52:42 -03:00
Esdras Renan
5f7efa13e6 Remove unused icon import 2025-10-19 00:09:18 -03:00
Esdras Renan
5f7dccff71 Refine desktop onboarding and NSIS branding 2025-10-19 00:01:27 -03:00
Esdras Renan
78030dbcdb Improve desktop branding and NSIS assets 2025-10-18 23:31:10 -03:00
Esdras Renan
9439890488 chore(desktop): drop unused react import 2025-10-18 23:07:17 -03:00
Esdras Renan
630110bf3a Atualiza portal e admin com bloqueio de máquinas desativadas 2025-10-18 00:02:15 -03:00
Esdras Renan
e5085962e9 Impede acesso ao portal para máquinas desativadas 2025-10-18 00:01:35 -03:00
Esdras Renan
0e97e4c0d6 fix: corrige tipagem do componente de abas 2025-10-17 21:44:58 -03:00
Esdras Renan
68ace0a858 refactor: quality workflow, docs, tests 2025-10-16 19:14:46 -03:00