Skip to content

Release v0.3.0 - #8

Merged
blackfoxsoftware merged 2 commits into
mainfrom
dev
Sep 2, 2026
Merged

Release v0.3.0#8
blackfoxsoftware merged 2 commits into
mainfrom
dev

Conversation

@blackfoxsoftware

Copy link
Copy Markdown
Owner

Promove a dev para a main e 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 do patchnotes.json, roda o CI inteiro no estado que vai virar tag, empacota, abre o .exe na fumaça e só então cria a tag anotada v0.3.0 e publica a release com o instalador, o portátil, o .blockmap e o latest.yml.

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
@blackfoxsoftware
blackfoxsoftware merged commit 25a37c7 into main Sep 2, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant