Sintoma
Na tela de update do Cockpit, com 0.11.1 disponível e o toggle "Pausar downloads" ativo, o usuário clica o toggle para retomar os downloads — e nada acontece. O toggle não persiste: a UI segue mostrando "0.11.1 disponível — downloads pausados" e o download nunca começa. Clicar repetidamente não muda nada (loop). O app está em 0.10.0 e assim permanece.
Ambiente
- OS: Windows 11 Home 10.0.26200 (AMD64) · Cockpit: v0.10.0 (Velopack, canal
win) · Antivírus: apenas Windows Defender (nenhum de terceiros)
- Rede: host de release alcançável;
Root directory ... writable: true no log do Velopack
O que o diagnóstico encontrou
1. O updater está saudável e vê a versão nova — só não baixa. velopack.log (hoje) chega até a decisão de download e para:
INFO velopack::manager: Chosen channel for updates: "win" (explicit=Some("win"), memorized="win")
INFO velopack::manager: Found newer remote release available (0.10.0 -> 0.11.1).
INFO velopack::manager: No matching delta update found for release 0.11.1, so deltas will be disabled.
INFO velopack::locator: Root directory 'C:\Users\<user>\AppData\Local\com.aiox.cockpit' writable: true
Nenhuma linha de "Downloading" depois disso. packages\ só contém com.aiox.cockpit-0.10.0-full.nupkg — o pacote da 0.11.1 nunca foi buscado.
2. A única coisa bloqueando o download é o flag de pausa em disco. ~/.aiox/updater-state.json:
{ ...
"downloads_paused": true,
... }
update-events.jsonl reflete isso: dezenas de check_succeeded com version_available: "0.11.1" desde 18/08, e zero evento de download (download_started/_succeeded/_failed). O updater re-checa em loop e nunca tenta baixar, porque está pausado.
3. O toggle da UI não grava o flag — comprovado por teste ao vivo. ~/.aiox/updater-state.json está com mtime congelado em 15/08 18:29:39. Com o app aberto, o usuário clicou o toggle "Pausar downloads" (para desativar/retomar) e, logo em seguida:
mtime: 08/15/2026 18:29:39 (inalterado, 4 dias atrás)
downloads_paused: true (inalterado)
Ou seja: o clique no toggle não persiste downloads_paused: false em disco. O comando da UI é inerte. Como o updater lê paused:true, o download é sempre pulado — e o usuário fica preso no loop "versão disponível / pausado / clico / nada".
Passos para reproduzir
- Windows, Cockpit instalado via Velopack, com
downloads_paused: true em ~/.aiox/updater-state.json e uma release mais nova disponível no canal.
- Abrir a tela de update; ela mostra "vX.Y.Z disponível — downloads pausados".
- Clicar o toggle "Pausar downloads" para retomar.
- Observar
~/.aiox/updater-state.json: downloads_paused continua true e o mtime não muda. O download nunca inicia.
Classificação [Confiança: ALTA]
Bug — o toggle "Pausar/Retomar downloads" não escreve downloads_paused de volta em updater-state.json (write silenciosamente ausente ou perdido). Efeito: um usuário que tenha os downloads pausados não consegue retomá-los pela UI, ficando permanentemente travado na versão atual sem nenhuma mensagem de erro.
Sugestões:
- Ao acionar o toggle, persistir
downloads_paused em ~/.aiox/updater-state.json e confirmar a escrita (verificar path/lock/erro e logar em caso de falha).
- Conferir se a UI e o backend do updater apontam para o mesmo
updater-state.json (o telemetry ativo vive em <install>\current\.aiox\telemetry\, enquanto o updater-state.json vive em ~/.aiox\ — um descasamento de root explicaria a escrita se perder).
- Fail-safe: se
downloads_paused não puder ser gravado, avisar na UI em vez de aceitar o clique silenciosamente.
Relacionadas (mesma família updater no Windows, mecanismos distintos): #34 (apply nunca aplica por lock do daemon em current\), #63 (~/.aiox/bin/aiox-core.exe não refrescado no update), #65 (leak/crash de memória na 0.11.1).
Sintoma
Na tela de update do Cockpit, com 0.11.1 disponível e o toggle "Pausar downloads" ativo, o usuário clica o toggle para retomar os downloads — e nada acontece. O toggle não persiste: a UI segue mostrando "0.11.1 disponível — downloads pausados" e o download nunca começa. Clicar repetidamente não muda nada (loop). O app está em 0.10.0 e assim permanece.
Ambiente
win) · Antivírus: apenas Windows Defender (nenhum de terceiros)Root directory ... writable: trueno log do VelopackO que o diagnóstico encontrou
1. O updater está saudável e vê a versão nova — só não baixa.
velopack.log(hoje) chega até a decisão de download e para:Nenhuma linha de "Downloading" depois disso.
packages\só contémcom.aiox.cockpit-0.10.0-full.nupkg— o pacote da 0.11.1 nunca foi buscado.2. A única coisa bloqueando o download é o flag de pausa em disco.
~/.aiox/updater-state.json:{ ... "downloads_paused": true, ... }update-events.jsonlreflete isso: dezenas decheck_succeededcomversion_available: "0.11.1"desde 18/08, e zero evento de download (download_started/_succeeded/_failed). O updater re-checa em loop e nunca tenta baixar, porque está pausado.3. O toggle da UI não grava o flag — comprovado por teste ao vivo.
~/.aiox/updater-state.jsonestá com mtime congelado em 15/08 18:29:39. Com o app aberto, o usuário clicou o toggle "Pausar downloads" (para desativar/retomar) e, logo em seguida:Ou seja: o clique no toggle não persiste
downloads_paused: falseem disco. O comando da UI é inerte. Como o updater lêpaused:true, o download é sempre pulado — e o usuário fica preso no loop "versão disponível / pausado / clico / nada".Passos para reproduzir
downloads_paused: trueem~/.aiox/updater-state.jsone uma release mais nova disponível no canal.~/.aiox/updater-state.json:downloads_pausedcontinuatruee o mtime não muda. O download nunca inicia.Classificação [Confiança: ALTA]
Bug — o toggle "Pausar/Retomar downloads" não escreve
downloads_pausedde volta emupdater-state.json(write silenciosamente ausente ou perdido). Efeito: um usuário que tenha os downloads pausados não consegue retomá-los pela UI, ficando permanentemente travado na versão atual sem nenhuma mensagem de erro.Sugestões:
downloads_pausedem~/.aiox/updater-state.jsone confirmar a escrita (verificar path/lock/erro e logar em caso de falha).updater-state.json(o telemetry ativo vive em<install>\current\.aiox\telemetry\, enquanto oupdater-state.jsonvive em~/.aiox\— um descasamento de root explicaria a escrita se perder).downloads_pausednão puder ser gravado, avisar na UI em vez de aceitar o clique silenciosamente.Relacionadas (mesma família updater no Windows, mecanismos distintos): #34 (apply nunca aplica por lock do daemon em
current\), #63 (~/.aiox/bin/aiox-core.exenão refrescado no update), #65 (leak/crash de memória na 0.11.1).