Salta al contenuto
supastack
Sfoglia la documentazione

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /it/docs/desktop/updates.md (or send Accept: text/markdown).

Aggiornamenti automatici e canali di rilascio

Feed di aggiornamento firmati, il canale stable/beta e il workflow di rilascio incluso.

Genera la coppia di chiavi dell'updater una sola volta

L'updater verifica le firme minisign sugli artefatti scaricati. Genera una coppia di chiavi con il signer di Tauri e conserva la chiave privata come TAURI_SIGNING_PRIVATE_KEY con la sua password in TAURI_SIGNING_PRIVATE_KEY_PASSWORD, entrambe nel tuo archivio dei segreti — mai nel repository. Le build che creano gli artefatti dell'updater emettono un sidecar .sig accanto a ogni installer; la chiave pubblica va ai client, quella privata resta in CI.

corepack pnpm --filter @supastack/desktop exec tauri signer generate -w ~/.tauri/product.key

Configura l'updater al momento della build

tauri.conf.json include un blocco updater sentinella con endpoints e pubkey vuoti — mantienilo, perché il plugin updater non può inizializzarsi senza le chiavi presenti. I valori reali vengono uniti in profondità al momento della build tramite un overlay JSON --config o la variabile d'ambiente TAURI_CONFIG; check:release-config stampa l'overlay esatto da incollare quando SUPASTACK_UPDATER_ENDPOINT e SUPASTACK_UPDATER_PUBKEY sono impostati.

Imposta entrambe o nessuna delle due: un overlay con soli endpoints lascia il pubkey vuoto, così i controlli sembrano funzionare mentre ogni installazione fallisce la verifica della firma. L'URL dell'endpoint porta i placeholder {{target}}, {{arch}} e {{current_version}} — lo slot di versione è obbligatorio — più un segmento di percorso opzionale {{channel}} che abilita i canali di rilascio.

# check:release-config prints this overlay for tauri build --config:
# {"plugins":{"updater":{"endpoints":["https://releases.example.com/{{channel}}/{{target}}/{{arch}}/{{current_version}}"],"pubkey":"<base64 public key>"}}}
# SUPASTACK_UPDATER_ENDPOINT=
# SUPASTACK_UPDATER_PUBKEY=

Pubblica il feed latest.json

Ogni endpoint risponde con un manifesto latest.json — version, notes, pub_date e una mappa platforms che copre darwin-aarch64, darwin-x86_64, windows-x86_64, windows-aarch64, linux-x86_64 e linux-aarch64 — dove ogni voce accoppia l'URL dell'installer alla sua signature.

Costruiscilo con lo script release:manifest: analizza una directory di bundle alla ricerca di artefatti .app.tar.gz, -setup.exe (preferito rispetto a .msi) e .AppImage — ognuno deve avere il suo .sig vicino — e scrive o fonde il manifesto. I flag coprono --version, --base-url, --bundle-dir con --platform, --merge per accumulare piattaforme tra esecuzioni, --notes, --pub-date e --out.

corepack pnpm --filter @supastack/desktop release:manifest -- \
  --version 1.2.0 \
  --base-url https://releases.example.com/stable \
  --bundle-dir src-tauri/target/release/bundle \
  --platform windows-x86_64 \
  --merge latest.json

Canali stable e beta

Quando un endpoint contiene il placeholder {{channel}}, il menu dell'app abilita una casella Beta Updates che alterna il feed tra stable e beta. La scelta persiste in un file update-channel accanto alla configurazione dell'app; SUPASTACK_UPDATE_CHANNEL la sovrascrive per singola esecuzione — i valori non riconosciuti vengono ignorati con un avviso — e stable è il default. Senza il placeholder il toggle resta disattivato e viene consultato solo il feed stable.

Quando vengono controllati gli aggiornamenti

Un controllo silenzioso in background gira all'avvio e mostra una finestra di dialogo solo quando esiste un aggiornamento; la voce di menu Check for Updates… riporta ogni esito. I controlli si serializzano — una seconda richiesta concorrente viene scartata. Un aggiornamento disponibile offre Install and Restart, che scarica, installa e riavvia l'app; le build non configurate rispondono che gli aggiornamenti non sono configurati, e i fallimenti emergono come finestre di dialogo anziché come nuovi tentativi.

Il workflow di rilascio incluso

.github/workflows/desktop-release.yml compila la matrice — macOS su entrambe le architetture, Windows e Ubuntu — su tag desktop-v* o su dispatch manuale con versione e canale. Imprime la versione del manifesto dal tag (una release che lo salta si offre come aggiornamento per sempre), fonde i manifesti per piattaforma e crea una bozza di release GitHub con latest.json più ogni installer e firma — marcata prerelease per i canali beta.

Richiede SUPASTACK_APP_URL e SUPASTACK_UPDATER_ENDPOINT come variabili del repository e SUPASTACK_UPDATER_PUBKEY più la chiave privata di firma e la sua password come segreti; le credenziali di firma Apple sono aggiunte opzionali. Il runbook completo è in docs/desktop-updates.md nel repository.

Verifica e risoluzione dei problemi

Installa una build, pubblica un manifesto più recente su un feed di prova e conferma che la finestra di aggiornamento arriva al controllo successivo e che l'app si riavvia nella nuova versione. Poi passa a beta e conferma che la risposta del feed di canale cambia.

Domande frequenti

14 domande

Cos'è supastack?

supastack è una base modulare per costruire prodotti SaaS con AI. Riunisce l'infrastruttura comune così puoi concentrarti sulle funzionalità proprie del tuo prodotto.

Supporta web e mobile?

Sì. supastack include app Next.js ed Expo come punti di partenza per esperienze web e mobile.

Quale autenticazione è inclusa?

Better Auth copre email/password, OTP e login social. I workspace personali vengono provisionati con l'account così i record restano delimitati fin dal primo giorno.

Come è supportata l'AI?

supastack include AI multi-provider configurabile, tracciamento dell'uso, budget e supporto cifrato per le proprie chiavi (BYOK).

Come vengono gestiti gli abbonamenti?

Per i prodotti costruiti sul kit, fatturazione Stripe, abbonamenti e permessi formano la base dell'accesso a pagamento. I segreti dei provider restano lato server.

Dove vive il codice specifico del mio prodotto?

Le funzionalità specifiche del prodotto restano in un codebase separato, mentre il prodotto configura e integra i moduli base di supastack.

Come funziona il prezzo di supastack?

Il kit è un acquisto unico con aggiornamenti a vita: Stack singolo a 249 $ — a scelta tra i repo Next.js (web), Expo (iOS e Android) o Tauri (macOS e Windows) —, Doppio stack a 398 $ con due repo a scelta, o Pacchetto completo a 399 $ con tutti e tre i repo e il monorepo completo, più 75 $ per posto sviluppatore aggiuntivo. Nessun abbonamento al kit. Il checkout su questo sito consegna la tua chiave di licenza via email, con accesso al repo tramite invito GitHub.

Come delimitano i workspace i miei dati?

I record utente sono delimitati da workspaceId. Identità, permessi, uso AI, eventi di fatturazione e voci di audit restano dentro il confine del workspace personale.

Come funzionano i job in background?

Trigger.dev è il runtime di job esplicito. Il contratto JobRunner promette solo enqueue, status e cancel — la semantica di workflow resta specifica ed esplicita di Trigger.dev.

In cosa differisce l'email dall'outreach?

L'email transazionale copre i flussi di prodotto come gli avvisi di completamento delle attività. L'outreach a freddo e le campagne appartengono al prodotto, fuori dal modulo email di questo kit.

Come funzionano gli acquisti su mobile?

La versione mobile include acquisti nativi e ripristino tramite RevenueCat, con accesso verificato dal server. Configura gli account degli store e completa i test sui dispositivi prima della pubblicazione. I pagamenti web restano separati.

Dove risiedono le chiavi dei provider AI?

Le credenziali BYOK sono cifrate e restano lato server. Le chiavi vengono sanificate nei log; uso e budget restano visibili a livello di workspace.

Quali metodi di pagamento accetta il checkout?

Il checkout ospitato da Stripe accetta le carte e può offrire anche Alipay e WeChat Pay una volta attivati i wallet sull'account Stripe — utile per gli acquirenti in Cina. Le autorizzazioni dei wallet vengono confermate in modo asincrono, quindi la pagina della licenza si aggiorna non appena il pagamento va a buon fine.

Posso ottenere un rimborso?

Una volta ottenuto l'accesso al repository, supastack è tuo per sempre, quindi non può essere rimborsato. Ma non preoccuparti: ricevi il codice sorgente completo con aggiornamenti a vita per creare e lanciare prodotti illimitati per te o per i tuoi clienti. L'unica condizione è che non puoi rivendere il codice né ridistribuire il repository come starter kit o modello.

IT
Tema