Correções implementadas: 1. Adiciona .resizable(false) nas janelas de chat e hub para impedir redimensionamento manual 2. Corrige área clicável invisível quando minimizado (janela agora tem tamanho correto) 3. Corrige clique na lista de sessões para expandir janela quando clicado 4. Diferencia abertura automática (minimizada) de abertura manual (expandida) - Chat agora abre expandido quando clicado na lista do hub - Chat abre minimizado quando nova mensagem chega (menos intrusivo) - Janelas não permitem mais redimensionamento manual - Área clicável agora corresponde ao tamanho visual da janela 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .vscode | ||
| docs | ||
| public | ||
| scripts | ||
| service | ||
| src | ||
| src-tauri | ||
| .env.example | ||
| .gitignore | ||
| index.html | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
Sistema de Chamados — App Desktop (Tauri)
Cliente desktop (Tauri v2 + Vite) que:
- Coleta perfil/métricas da dispositivo via comandos Rust.
- Registra a dispositivo com um código de provisionamento.
- Envia heartbeat periódico ao backend (
/api/machines/heartbeat). - Redireciona para a UI web do sistema após provisionamento.
- Armazena o token da dispositivo com segurança no cofre do SO (Keyring).
- Exibe abas de Resumo, Inventário, Diagnóstico e Configurações; permite “Enviar inventário agora”.
URLs e ambiente
- Em produção, o app usa por padrão
https://tickets.esdrasrenan.com.br. - Em desenvolvimento, use
apps/desktop/.env(copiado do.env.example):
VITE_APP_URL=http://localhost:3000
# Opcional: se vazio, usa o mesmo do APP_URL
VITE_API_BASE_URL=
Comandos
- Dev (abre janela Tauri e Vite em 1420):
bun run --cwd apps/desktop tauri dev
- Build frontend (somente Vite):
bun run --cwd apps/desktop build
- Build executável (bundle):
bun run --cwd apps/desktop tauri build
Saída dos pacotes: apps/desktop/src-tauri/target/release/bundle/.
Windows (NSIS) — instalação e dados
- Instalador NSIS com suporte a “perMachine” (Arquivos de Programas) e diretório customizável (ex.:
C:\Raven). - Atalho é criado na Área de Trabalho apontando para o executável instalado.
- Dados do app (token/config) ficam em AppData local do usuário (via
@tauri-apps/plugin-storecomappLocalDataDir).
NSIS — Idiomas e modo de instalação
- Idioma: o instalador inclui Português do Brasil e exibe seletor de idioma.
- Arquivo:
apps/desktop/src-tauri/tauri.conf.json:54→"displayLanguageSelector": true - Arquivo:
apps/desktop/src-tauri/tauri.conf.json:57→"languages": ["PortugueseBR"] - Comportamento: usa o idioma do SO; sem correspondência, cai no primeiro da lista.
- Referência de idiomas NSIS: NSIS “Language files/PortugueseBR”.
- Arquivo:
- Modo de instalação: Program Files (requer elevação/UAC).
- Arquivo:
apps/desktop/src-tauri/tauri.conf.json:56→"installMode": "perMachine" - Alternativas:
"currentUser"(padrão) ou"both"(usuário escolhe; exige UAC).
- Arquivo:
Build rápido e leve em dev:
bun run --cwd apps/desktop tauri build --bundles nsis
Assinatura do updater (opcional em dev):
$privB64 = '<COLE_SUA_CHAVE_PRIVADA_EM_BASE64>'
$env:TAURI_SIGNING_PRIVATE_KEY = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($privB64))
$env:TAURI_SIGNING_PRIVATE_KEY_PASSWORD = 'SENHA_AQUI'
bun run --cwd apps/desktop tauri build --bundles nsis
Pré‑requisitos Tauri
- Rust toolchain instalado.
- Dependências nativas por SO (webkit2gtk no Linux, WebView2/VS Build Tools no Windows, Xcode CLT no macOS). Consulte https://tauri.app/start/prerequisites/
Fluxo (resumo)
- Ao abrir, o app coleta o perfil da dispositivo e exibe um resumo.
- Informe o “código de provisionamento” (chave definida no servidor) e confirme.
- O servidor retorna um
machineToken; o app salva e inicia o heartbeat. - O app abre
APP_URL/machines/handshake?token=...no WebView para autenticar a sessão na UI. - Pelas abas, é possível revisar inventário local e disparar sincronização manual.
Segurança do token
- O
machineTokené salvo no cofre nativo do SO via plugin Keyring (Linux Secret Service, Windows Credential Manager, macOS Keychain). - O arquivo de preferências (
Store) guarda apenas metadados não sensíveis (IDs, URLs, datas).
Suporte
- Logs do Rust aparecem no console do Tauri (dev) e em stderr (release). Em caso de falha de rede, o app exibe alertas na própria UI.
- Para alterar endpoints/domínios, use as variáveis de ambiente acima.