# Checklist de Publicação — Updater do Agente Desktop

Este guia consolida tudo o que precisa ser feito para que o auto-update do Tauri funcione em cada release.

---

## 1. Preparação (uma única vez)

1. **Gerar o par de chaves** (Linux ou WSL)  
   ```bash
   pnpm -C apps/desktop tauri signer generate -w ~/.tauri/raven.key
   ```
   - Privada: `~/.tauri/raven.key` (nunca compartilhar)  
   - Pública: `~/.tauri/raven.key.pub` (cole em `tauri.conf.json > plugins.updater.pubkey`)
   - Se for buildar em outra máquina (ex.: Windows), copie os dois arquivos para `C:\Users\<usuario>\.tauri\raven.key(.pub)`.

2. **Verificar o `tauri.conf.json`**
   ```json
   {
     "bundle": { "createUpdaterArtifacts": true },
     "plugins": {
       "updater": {
         "active": true,
         "endpoints": ["https://.../latest.json"],
         "pubkey": "<conteúdo da raven.key.pub>"
       }
     }
   }
   ```

---

## 2. Antes de cada release

1. **Sincronizar versão** (mesmo número nos três arquivos):
   - `apps/desktop/package.json`
   - `apps/desktop/src-tauri/tauri.conf.json`
   - `apps/desktop/src-tauri/Cargo.toml`

2. **Build do front (gera `dist/` para o Tauri)**  
   ```bash
   pnpm -C apps/desktop build
   ```

3. **Exportar variáveis do assinador** (no mesmo shell em que vai buildar):
   ```bash
   export TAURI_SIGNING_PRIVATE_KEY="$(cat ~/.tauri/raven.key)"
   export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="<senha-da-chave>"
   ```
   > No PowerShell, use `setx` para persistir ou execute `set`/`$env:` no terminal atual.

4. **Gerar os instaladores + `.sig`**  
   ```bash
   pnpm -C apps/desktop tauri build
   ```
   Os artefatos ficam em `apps/desktop/src-tauri/target/release/bundle/`:

   | SO       | Bundle principal                            | Assinatura gerada                       |
   |----------|----------------------------------------------|-----------------------------------------|
   | Windows  | `nsis/Raven_0.X.Y_x64-setup.exe`             | `nsis/Raven_0.X.Y_x64-setup.exe.sig`    |
   | Linux    | `appimage/Raven_0.X.Y_amd64.AppImage`        | `appimage/Raven_0.X.Y_amd64.AppImage.sig` |
   | macOS    | `macos/Raven.app.tar.gz`                     | `macos/Raven.app.tar.gz.sig`            |

---

## 3. Publicar no GitHub

1. **Criar/atualizar release** (ex.: `v0.1.7`) anexando todos os instaladores e seus `.sig`.
2. **Atualizar `latest.json`** (no próprio repo ou em um gist público) com algo como:
   ```json
   {
     "version": "0.1.7",
     "notes": "Novidades do release",
     "pub_date": "2025-10-12T08:00:00Z",
     "platforms": {
       "windows-x86_64": {
         "signature": "<conteúdo de Raven_0.1.7_x64-setup.exe.sig>",
         "url": "https://github.com/esdrasrenan/sistema-de-chamados/releases/download/v0.1.7/Raven_0.1.7_x64-setup.exe"
       },
       "linux-x86_64": {
         "signature": "<conteúdo de Raven_0.1.6_amd64.AppImage.sig>",
         "url": "https://github.com/esdrasrenan/sistema-de-chamados/releases/download/v0.1.6/Raven_0.1.6_amd64.AppImage"
       },
       "darwin-x86_64": {
         "signature": "<conteúdo de Raven.app.tar.gz.sig>",
         "url": "https://github.com/esdrasrenan/sistema-de-chamados/releases/download/v0.1.6/Raven.app.tar.gz"
       }
     }
   }
   ```
   - Pegue o link **Raw** do `latest.json` e mantenha igual ao usado no `tauri.conf.json`.

---

## 4. Validar rapidamente

1. Instale a versão anterior (ex.: 0.1.5) e abra.
2. O agente deve avisar sobre a nova versão e reiniciar automaticamente ao concluir a instalação.
3. Caso queira forçar manualmente, abra a aba **Configurações → Verificar atualizações**.

---

## 5. Resumo rápido

1. `pnpm -C apps/desktop build`
2. `export TAURI_SIGNING_PRIVATE_KEY=...` / `export TAURI_SIGNING_PRIVATE_KEY_PASSWORD=...`
3. `pnpm -C apps/desktop tauri build`
4. Upload dos bundles + `.sig` → atualizar `latest.json`
5. Testar o instalador antigo para garantir que atualiza sozinho

Com isso, os usuários sempre receberão a versão mais recente assim que abrirem o agente desktop.
