sistema-de-chamados/docs/desktop/build.md
2025-11-05 20:49:19 -03:00

52 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Build do App Desktop (Tauri)
Guia rápido para gerar instaladores do app desktop em cada sistema operacional.
## Prérequisitos
- Bun >= 1.3 instalado e disponível no `PATH`.
- Node.js 20+ (recomendado) caso precise executar scripts auxiliares em Node.
- Rust toolchain (stable) instalado.
- Dependências nativas por SO:
- Linux (Debian/Ubuntu):
```bash
sudo apt update && sudo apt install -y \
libwebkit2gtk-4.1-dev build-essential curl wget file \
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
```
- Windows: Visual Studio Build Tools + WebView2 Runtime.
- macOS: Xcode Command Line Tools.
## Configuração de URLs
- Produção: por padrão o app usa `https://tickets.esdrasrenan.com.br`.
- Desenvolvimento: crie `apps/desktop/.env` a partir de `apps/desktop/.env.example` e ajuste:
```
VITE_APP_URL=http://localhost:3000
VITE_API_BASE_URL=
```
## Comandos de build
- Linux/macOS/Windows (rodar no próprio sistema):
```bash
bun run --cwd apps/desktop tauri build
```
- Apenas frontend (Vite):
```bash
bun run --cwd apps/desktop build
```
Saída de artefatos: `apps/desktop/src-tauri/target/release/bundle/`.
## Dicas
- Primeira compilação do Rust pode demorar (download de crates e linkedição).
- Se o linkeditor for lento no Linux, considere instalar `lld` e usar:
```bash
RUSTFLAGS="-Clink-arg=-fuse-ld=lld" bun run --cwd apps/desktop tauri build
```
- Para logs detalhados em dev, rode `bun run --cwd apps/desktop tauri dev`.
## Diagnóstico de sessão (Desktop → Portal)
- Durante testes, navegue até `/portal/debug` (o desktop pode redirecionar automaticamente) para ver:
- `/api/auth/get-session` — pode ser `null` na WebView; não é bloqueante.
- `/api/machines/session` — precisa retornar `200` com `assignedUserId/email`.
- Produção: as rotas de sessão/handshake enviam `Access-Control-Allow-Credentials: true` e aplicam cookies com `NextResponse.cookies.set(...)` para confiabilidade em navegadores/embeds.
- O desktop mantém a navegação toplevel via `/machines/handshake` para maximizar a aceitação de cookies.