# rx.scoreodonto.com-client — Plano de deploy (delta do client.exe) > Delta específico deste projeto. O modelo universal está em `../../deploy/`. Aqui só o que **difere**: é um **app desktop Electron** (não um serviço web), distribuído por **auto-update (electron-updater)**. ## O que torna este projeto diferente - **Electron + electron-builder** (target NSIS, Windows x64), **cross-compile no Linux** (VPS4). - **Auto-update** via `electron-updater` (provider `generic`) → o `.exe` instalado puxa de `https://rx.scoreodonto.com/updates/latest.yml`. **Esse mecanismo é mantido** (clients em campo dependem dele). - Não é "imagem Docker promovida" como os serviços web — o artefato é o **`.exe` + `latest.yml`** publicados em `dental-server/updates/`. - **Versão é BUILD-TIME** (embutida no `.exe`; o `electron-updater` compara versões): **não há "build once" puro**. A **release é buildada na TAG** (com a versão da tag); o **push só valida** que compila. (É o oposto dos serviços web, onde a versão é injetada em runtime.) ## Estado atual (analisado em 17/jun/2026) - Versão vem do **`package.json`** (manual; hoje `1.3.8`). - Build/publish via **`deploy-client.sh`**, disparado pelo **webhook porta 9004** no push (push → build + publica em produção) ou manual: `electron-builder --win --x64 --publish never` → `rsync` do `.exe`+`latest.yml` para a VPS1 `updates/`. - **Sem CI**, sem build-once/promote, sem rastreabilidade commit→artefato. ## Plano (Build Once → Promote → Deploy, adaptado) | Fase | O que | Status | |---|---|---| | 1 | Exibir a versão na UI (menu do tray, `app.getVersion()`) | ✅ (dev, sem push) | | 2 | **CI**: push na main → **build de validação** (cross-compile, **NÃO publica**) | 🧪 (`.gitea/workflows/build.yml` criado, dev) | | 3 | **Tag → release**: builda COM a versão da tag (`npm version`) + publica `.exe`/`latest.yml` em `updates/` (rsync VPS1) | 🎯 | | 4 | **Corte**: desligar `webhook-rx-client.service` (9004); validar o auto-update dos clients em campo | 🎯 | | 5 | Manter este documento atualizado | — | ## Riscos a tratar - **Cross-compile Windows no Linux** (electron-builder/wine) no CI. - **Code signing** do `.exe` (SmartScreen) — pendência antiga do RX. - **NÃO quebrar o `latest.yml`** dos clients instalados nas clínicas — um arquivo errado afeta o update de todos. Testar antes do corte. - O `electron-updater`/`latest.yml` **não muda** — só a *origem da versão* (tag) e o *pipeline*.