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)

"plugins": {
  "updater": {
    "endpoints": [
      "https://pkg.rtmedical.ai/apps/updates/raw/branch/main/autoseg-desktop/latest.json"
    ],
    "pubkey": "<Ed25519 public key>"
  }
}

Formato do latest.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": "<Ed25519 sig>"
    },
    "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": "<Ed25519 sig>"
    },
    "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": "<Ed25519 sig>"
    },
    "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": "<Ed25519 sig>"
    }
  }
}

Como o CI atualiza este arquivo

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:

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)
Description
Auto-update manifests (latest.json) for RT Medical Tauri applications
Readme 44 KiB