# apps/updates — Auto-update manifests Este repositório serve os manifestos `latest.json` para o auto-update Tauri das aplicações RT Medical. ## Como funciona O Tauri verifica atualizações consultando uma URL fixa ao iniciar o app. Essa URL aponta para o `latest.json` deste repo. Se a versão no manifesto for maior que a instalada, o app baixa e instala silenciosamente (estilo VS Code). ``` App inicia └─► GET https://pkg.rtmedical.ai/apps/updates/raw/branch/main/{app}/latest.json └─► versão nova? → baixa binário do Generic Package Registry → instala ``` ## Estrutura ``` updates/ ├── autoseg-desktop/ │ └── latest.json ← consultado pelo AutoSeg Desktop (Tauri) └── voxelview/ └── latest.json ← consultado pelo VoxelView (Tauri) ``` ## URL do endpoint (tauri.conf.json) ```json "plugins": { "updater": { "endpoints": [ "https://pkg.rtmedical.ai/apps/updates/raw/branch/main/autoseg-desktop/latest.json" ], "pubkey": "" } } ``` ## Formato do latest.json ```json { "version": "1.2.3", "notes": "Descrição do que mudou nesta versão.", "pub_date": "2026-06-10T00:00:00Z", "platforms": { "windows-x86_64": { "url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_x64.msi.zip", "signature": "" }, "linux-x86_64": { "url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_amd64.AppImage.tar.gz", "signature": "" }, "darwin-aarch64": { "url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_aarch64.dmg.tar.gz", "signature": "" }, "darwin-x86_64": { "url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_x86_64.dmg.tar.gz", "signature": "" } } } ``` ## Como o CI atualiza este arquivo ```bash SHA=$(curl -s https://pkg.rtmedical.ai/api/v1/repos/apps/updates/contents/{app}/latest.json \ -H "Authorization: token $GITEA_TOKEN" | jq -r .sha) curl -X PUT https://pkg.rtmedical.ai/api/v1/repos/apps/updates/contents/{app}/latest.json \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"message\": \"release: v1.2.3\", \"content\": \"$(base64 -w0 latest.json)\", \"sha\": \"$SHA\"}" ``` ## Binários (Generic Package Registry) Os binários ficam em `https://pkg.rtmedical.ai/apps/-/packages/generic/{app}/{version}/` Upload via CI: ```bash curl -X PUT https://pkg.rtmedical.ai/api/packages/apps/generic/{app}/{version}/{file} \ -H "Authorization: token $GITEA_TOKEN" \ --data-binary @arquivo ``` ## Adicionando um novo app Tauri 1. Criar pasta `{novo-app}/` com `latest.json` placeholder 2. Configurar endpoint em `tauri.conf.json` 3. Gerar Ed25519: `cargo tauri signer generate` 4. Adicionar secrets no GitHub: `TAURI_SIGNING_PRIVATE_KEY`, `GITEA_TOKEN` 5. Adicionar Formula em `apps/homebrew-tap` (macOS)