Distribución de instaladores de escritorio
Los instaladores de la app de escritorio se hostean en Convex file storage — sin GitHub Releases público ni S3/R2, y sin el problema de los repos privados.
1. BUILD CI (build-desktop.yml) en tag v* → .dmg / .msi / .exe (o local: bun run build:desktop)2. UPLOAD super_admin sube en /super/releases → Convex storage → fila en la tabla desktop_releases3. SERVE landing → query getDesktopDownloads (pública) → storage.getUrl() → enlaces; detecta el SOSubir un instalador nuevo se refleja en el landing sin redeploy (query reactiva).
Subir un instalador (super_admin)
Sección titulada «Subir un instalador (super_admin)»- Ingresá como super_admin a
/super/releases. - Elegí plataforma, versión (ej.
0.5.0) y archivo. - “Subir instalador” → va a Convex storage y se registra.
La “última” por plataforma es la que sirve el landing.
Publicar desde la CLI (build + upload en un comando)
Sección titulada «Publicar desde la CLI (build + upload en un comando)»# en el backend, una vez:npx convex env set RELEASE_UPLOAD_SECRET '<secreto-fuerte>'
# en cada plataforma (o en CI):CONVEX_URL='https://<deployment>.convex.cloud' \RELEASE_UPLOAD_SECRET='<secreto-fuerte>' \ npx tsx scripts/publish-desktop-release.ts --build --version 0.5.0scripts/publish-desktop-release.ts buildea (con --build), busca los bundles
en src-tauri/target/release/bundle/ y los sube vía las mutations CLI
(generateUploadUrlCli / recordReleaseCli, autorizadas por
RELEASE_UPLOAD_SECRET). Una máquina solo buildea su propio SO → correr en cada
plataforma o en una matriz de CI.
Cómo lo sirve el landing
Sección titulada «Cómo lo sirve el landing»La tarjeta “App de Escritorio” usa una query pública que devuelve la última descarga por plataforma con su URL de Convex storage, detecta el SO del visitante y lista las otras plataformas. Si no hay instaladores → “Próximamente”.
- Bundles Tauri son chicos (~10–40 MB), cómodos para Convex storage. A gran escala de descargas, un CDN/R2 sería más barato en bandwidth.
- On-prem no es un instalador descargable: es self-host. Su CTA es “Solicitar acceso”.