sistema-de-chamados/docs/desktop/build.md

2.1 KiB
Raw Blame History

Build do App Desktop (Tauri)

Guia rápido para gerar instaladores do app desktop em cada sistema operacional.

Prérequisitos

  • Node.js 20+ e pnpm (Corepack habilitado):
    • corepack enable && corepack prepare pnpm@10.20.0 --activate
  • Rust toolchain (stable) instalado.
  • Dependências nativas por SO:
    • Linux (Debian/Ubuntu):
      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):
    pnpm -C apps/desktop tauri build
    
  • Apenas frontend (Vite):
    pnpm -C 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:
    RUSTFLAGS="-Clink-arg=-fuse-ld=lld" pnpm -C apps/desktop tauri build
    
  • Para logs detalhados em dev, rode pnpm -C 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.