Skip to content

Release v0.2.0 (segunda tentativa) - #6

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

Release v0.2.0 (segunda tentativa)#6
blackfoxsoftware merged 2 commits into
mainfrom
dev

Conversation

@blackfoxsoftware

Copy link
Copy Markdown
Owner

Nova tentativa do release da v0.2.0. A primeira parou no job Empacotar, com o teste de fumaça exigindo um motor nativo funcionando — que precisa de WSL, e runner de CI não tem. Nenhuma tag foi criada, então a versão segue livre.

Ao entrar, o workflow Release vai:

  1. validar o patchnotes.json e ler 0.2.0 do package.json;
  2. rodar o CI inteiro no estado que vira tag;
  3. empacotar o instalador NSIS e o portátil, e abrir o .exe na fumaça corrigida;
  4. criar a tag anotada v0.2.0 e publicar a release com os dois binários anexados.

Os .exe não são assinados — o SmartScreen vai avisar "editor desconhecido".


Notas que vão sair na release

O app agora tem instalador, e leva o SDK do WSL consigo.

Adicionado

  • Instalador (NSIS) e versão portátil para Windows x64, publicados como assets da release. Não são assinados: o SmartScreen avisa 'editor desconhecido'.
  • A wslcsdk.dll vai empacotada com o app — duas versões, 2.9.3 e 2.9.9, com a escolha feita em tempo de execução pela versão do WSL instalado.
  • Seletor de wslcsdk.dll na aba Sistema, para apontar uma DLL própria. O arquivo é sondado antes de ser aceito: versão, ABI e SHA-256 são lidos na hora, e o que não serve é recusado ali.
  • A aba Sistema passa a mostrar a origem da DLL em uso (empacotada, escolhida, do WSL ou de variável de ambiente), a ABI detectada e o tamanho do binário.
  • Ícone próprio do app.

Alterado

  • Containers nativos SOBREVIVEM ao fechamento do app quando o SDK é 2.9.9+: eles param e são reabertos por nome na execução seguinte, em vez de serem apagados na saída.
  • O campo que a aba Sistema chamava de 'SDK' virou 'WSL (pelo SDK)': medindo, WslcGetVersion devolve a versão do WSL instalado, não a da DLL — binários diferentes respondem o mesmo número.
  • O app ficou ~100 MB menor: tudo o que só o renderer usa saiu de dependencies, onde viajava duas vezes (embutido no bundle e de novo em node_modules).

Corrigido

  • Login em registry e instalação guiada não corrompem mais a chamada quando a DLL é 2.9.9: as duas funções mudaram de assinatura sem mudar o header de forma detectável, e o app agora identifica a ABI e se adapta.
  • O teste de fumaça do app empacotado passou a separar o que é falha de empacotamento do que é ausência de WSL na máquina — antes ele exigia um motor nativo funcionando, que nenhum runner de CI tem.

O release falhou no job Empacotar, e a proteção funcionou: Publicar foi pulado,
então nenhuma tag foi criada e nenhuma release saiu pela metade.

A causa foi o teste exigir demais. Ele afirmava que o motor nativo estava
disponível, o que exige WSL na máquina — e runner de CI não tem. O log mostra
que o empacotamento estava correto: a DLL foi encontrada dentro de resources/,
a origem era "bundled", e a chamada CHEGOU nela (voltou 0x80070032,
ERROR_NOT_SUPPORTED, não erro de módulo).

Esse HRESULT virou justamente o critério. Um código de erro do SDK prova que o
koffi carregou de fora do asar e que os bindings casaram, que é o que esta
fumaça existe para verificar. Se o motor nativo de fato funciona é outra
pergunta, respondida pelos testes de integração, que só rodam onde o SDK
responde.

É a mesma lição do commit anterior, no guarda dos testes: afirmar sobre o
ambiente o que só vale na máquina de quem desenvolve.
Fumaça do app empacotado: separar empacotamento de ausência de WSL
@blackfoxsoftware
blackfoxsoftware merged commit a00c18d 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