# 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 link‑editor 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 top‑level via `/machines/handshake` para maximizar a aceitação de cookies.
