Pular para o conteúdo
supastack
Explorar a documentação

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 /pt/docs/desktop/updates.md (or send Accept: text/markdown).

Auto-updates e canais de release

Feeds de update assinados, o canal stable/beta e o workflow de release incluído.

Gera o keypair do updater uma vez

O updater verifica assinaturas minisign nos artefactos descarregados. Gera um keypair com o signer do Tauri e guarda a chave privada como TAURI_SIGNING_PRIVATE_KEY com a sua palavra-passe em TAURI_SIGNING_PRIVATE_KEY_PASSWORD, ambas no teu secret store — nunca no repo. Builds que criam artefactos de updater emitem um sidecar .sig ao lado de cada instalador; a chave pública vai para os clientes, a privada fica no CI.

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

Configura o updater em build-time

tauri.conf.json inclui um bloco de updater sentinela com endpoints e pubkey vazios — mantém-no, porque o plugin do updater não consegue inicializar sem as chaves presentes. Os valores reais são fundidos em profundidade em build-time através de um overlay JSON --config ou da variável de ambiente TAURI_CONFIG; check:release-config imprime o overlay exato a colar quando SUPASTACK_UPDATER_ENDPOINT e SUPASTACK_UPDATER_PUBKEY estão definidos.

Define os dois ou nenhum: um overlay só de endpoints deixa a pubkey vazia, por isso os checks parecem funcionar enquanto cada instalação falha a verificação de assinatura. O URL de endpoint traz os placeholders {{target}}, {{arch}} e {{current_version}} — o slot de versão é obrigatório — mais um segmento de caminho {{channel}} opcional que ativa os canais de release.

# 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=

Publica o feed latest.json

Cada endpoint responde um manifesto latest.json — version, notes, pub_date e um mapa platforms cobrindo darwin-aarch64, darwin-x86_64, windows-x86_64, windows-aarch64, linux-x86_64 e linux-aarch64 — onde cada entrada emparelha o URL do instalador com a sua assinatura.

Constrói-o com o script release:manifest: ele varre uma diretoria de bundle à procura de artefactos .app.tar.gz, -setup.exe (preferido a .msi) e .AppImage — cada um tem de ter o seu vizinho .sig — e escreve ou funde o manifesto. Os flags cobrem --version, --base-url, --bundle-dir com --platform, --merge para acumular plataformas entre execuções, --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

Canais stable e beta

Quando um endpoint contém o placeholder {{channel}}, o menu da app ativa uma checkbox Beta Updates que muda o feed entre stable e beta. A escolha persiste num ficheiro update-channel ao lado da configuração da app; SUPASTACK_UPDATE_CHANNEL sobrepõe-na por execução — qualquer coisa não reconhecida é ignorada com um aviso — e stable é a predefinição. Sem o placeholder o toggle fica desativado e só o feed stable é consultado.

Quando os updates são verificados

Um check silencioso em segundo plano corre no arranque e só mostra um diálogo quando existe um update; o item de menu Check for Updates… reporta todos os resultados. Os checks serializam — um segundo pedido concorrente é descartado. Um update disponível oferece Install and Restart, que descarrega, instala e reinicia a app; builds não configurados respondem que os updates não estão configurados, e as falhas aparecem como diálogos em vez de novas tentativas.

O workflow de release incluído

.github/workflows/desktop-release.yml constrói a matriz — macOS nas duas arquiteturas, Windows e Ubuntu — em tags desktop-v* ou num dispatch manual com versão e canal. Carimba a versão do manifesto a partir da tag (uma release que salte isto oferece-se como update para sempre), funde os manifestos por plataforma e cria uma GitHub release em rascunho com latest.json mais cada instalador e assinatura — marcada como prerelease para canais beta.

Precisa de SUPASTACK_APP_URL e SUPASTACK_UPDATER_ENDPOINT como variáveis do repositório e de SUPASTACK_UPDATER_PUBKEY mais a chave privada de assinatura e a sua palavra-passe como segredos; as credenciais de assinatura Apple são extras opcionais. O runbook completo vive em docs/desktop-updates.md no repositório.

Verificação e resolução de problemas

Instala um build, publica um manifesto mais recente num feed de teste e confirma que o diálogo de update chega no check seguinte e que a app reinicia na nova versão. Depois muda para beta e confirma que a resposta do feed do canal muda.

Perguntas frequentes

14 perguntas

O que é o supastack?

O supastack é uma base modular para construir produtos SaaS com IA. Reúne a infraestrutura comum para que possas concentrar-te nas funcionalidades próprias do teu produto.

Suporta web e mobile?

Sim. O supastack inclui apps Next.js e Expo como pontos de partida para experiências web e mobile.

Que autenticação está incluída?

O Better Auth cobre email/palavra-passe, OTP e login social. Os workspaces pessoais são aprovisionados com a conta para que os registos fiquem delimitados desde o primeiro dia.

Como é suportada a IA?

O supastack inclui IA multi-fornecedor configurável, registo de utilização, orçamentos e suporte encriptado de chaves próprias (BYOK).

Como são geridas as subscrições?

Para produtos construídos sobre o kit, a faturação Stripe, as subscrições e as permissões formam a base do acesso pago. Os segredos de fornecedor ficam no servidor.

Onde vive o código próprio do meu produto?

As funcionalidades próprias do produto ficam num codebase separado, enquanto o produto configura e integra os módulos base do supastack.

Como funciona o preço do supastack?

O kit é uma compra única com atualizações vitalícias: Stack único por 249 $ — à escolha entre os repositórios Next.js (web), Expo (iOS e Android) ou Tauri (macOS e Windows) —, Stack duplo por 398 $ com dois repositórios à escolha, ou Pacote completo por 399 $ com os três repositórios e o monorepo completo, mais 75 $ por lugar de programador adicional. Sem subscrição do kit. O checkout neste site entrega a tua chave de licença por email, com acesso ao repo por convite GitHub.

Como é que os workspaces delimitam os meus dados?

Os registos do utilizador são delimitados por workspaceId. Identidade, permissões, utilização de IA, eventos de faturação e entradas de auditoria ficam dentro do limite do workspace pessoal.

Como funcionam os jobs em segundo plano?

O Trigger.dev é o runtime de jobs explícito. O contrato JobRunner só promete enqueue, status e cancel — a semântica de workflow permanece específica e explícita do Trigger.dev.

Como difere o email da divulgação?

O email transacional cobre fluxos de produto como avisos de conclusão de tarefas. A divulgação fria e as campanhas pertencem ao próprio produto, fora do módulo de email deste kit.

Como funcionam as compras no aplicativo móvel?

O aplicativo móvel inclui compras nativas e restauração via RevenueCat, com acesso verificado pelo servidor. Configure as contas das lojas e conclua os testes em dispositivos antes de publicar. A cobrança web permanece separada.

Onde residem as chaves dos fornecedores de IA?

As credenciais BYOK são encriptadas e ficam no servidor. As chaves são higienizadas nos logs; a utilização e os orçamentos ficam visíveis ao nível do workspace.

Quais métodos de pagamento o checkout aceita?

O checkout hospedado na Stripe aceita cartões e também pode oferecer Alipay e WeChat Pay quando essas carteiras estiverem ativadas na conta Stripe — útil para compradores na China. As autorizações de carteira são confirmadas de forma assíncrona, então a página da licença é atualizada assim que o pagamento é liquidado.

Posso solicitar um reembolso?

Depois de obter acesso ao repositório, o supastack é seu para sempre, portanto não pode ser reembolsado. Mas fique tranquilo: você recebe o código-fonte completo com atualizações vitalícias para criar e lançar produtos ilimitados para você ou seus clientes. Você apenas não pode revender o código nem redistribuir o repositório como starter kit ou modelo.

PT
Tema