Release v0.3.0 - #8
Merged
Merged
Conversation
O app instalado passa a checar ao abrir e a cada 6 h, baixar em segundo plano e aplicar a versão nova quando o app fecha. O portátil só avisa e leva para a release, porque não há instalação para atualizar por cima. Rodando do código-fonte o updater fica desligado. O estado mora no processo main e chega à UI por evento: um download leva minutos, e perguntar de tempos em tempos daria uma tela sempre atrasada. As transições ficam em services/updater/state.ts, sem Electron e sem rede, com as três regras que sustentam o resto: sem updater, evento nenhum mexe no estado; erro DEPOIS de uma versão baixada não apaga a versão baixada, que continua no disco e vai ser instalada ao fechar; e falha no download preserva a versão encontrada, que é o que permite oferecer o caminho manual. O updater virou a quinta fronteira injetável do processo main, com dublê de demonstração. O ciclo inteiro — achar, baixar, instalar — roda em milissegundos, nos três modos e com falha injetável por canal. Sem isso a tela só existiria de verdade numa release já publicada, tarde demais para descobrir que está errada. Instalar pela aba Sistema encerra a sessão nativa ANTES de entregar o processo ao instalador: o NSIS fecha quem demora, e um processo morto assim deixa a sessão "WslcUi" órfã no WSL. Fechar a janela e instalar uma atualização passam agora pelo mesmo desligamento ordenado, memoizado para rodar uma vez só. O empacotamento passou a gerar o latest.yml, que é o índice que o updater lê, e a embutir o app-update.yml, que é como o app sabe onde procurar. Sem o primeiro a release fica completa para quem baixa à mão e invisível para quem já tem o app instalado — falha silenciosa que só apareceria uma versão depois. Por isso o job de empacotamento falha se ele não existir, e a fumaça confere o segundo.
Atualização automática a partir das releases do GitHub
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promove a
devpara amaine lança a v0.3.0.O que sai nesta versão
Atualização automática a partir das releases do GitHub. O app instalado checa ao abrir e a cada 6 h, baixa em segundo plano e aplica quando você fecha o app. O portátil avisa e leva para a release; rodando do código-fonte o updater fica desligado. Só versões estáveis contam.
A seção Atualizações na aba Sistema mostra versão instalada, última checagem, progresso, as notas da versão nova e os botões de procurar e instalar. O painel de logs ganhou a categoria "Atualização".
O encerramento do app virou um caminho único: fechar a janela e instalar uma atualização passam pelo mesmo desligamento ordenado, que solta a sessão nativa antes de sair.
O empacotamento passou a gerar e publicar o
latest.yml— sem ele a release fica visível para quem baixa à mão e invisível para quem já tem o app instalado. O job de empacotamento falha se o arquivo não existir.Importante
A 0.3.0 é a primeira versão com o updater, então ela mesma precisa ser instalada à mão por quem está na 0.2.0. Da 0.3.0 em diante a atualização é automática.
O que o merge dispara
O workflow de release lê a versão do
package.json(0.3.0) e as notas dopatchnotes.json, roda o CI inteiro no estado que vai virar tag, empacota, abre o.exena fumaça e só então cria a tag anotadav0.3.0e publica a release com o instalador, o portátil, o.blockmape olatest.yml.