From 8531fbe2c22ec9a711a9a40178b07d4ae7640a34 Mon Sep 17 00:00:00 2001 From: rtmedical-devops Date: Wed, 10 Jun 2026 09:54:22 +0000 Subject: [PATCH] docs: add auto-update architecture README --- README.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8660bd0..bafec6c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,96 @@ -# updates +# 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) -Auto-update manifests (latest.json) for RT Medical Tauri applications \ No newline at end of file