Skip to content

[Windows] Toggle Pausar/Retomar downloads nao persiste — usuario preso na versao atual sem conseguir baixar o update #69

Description

@csrodrigos-create

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

  1. Windows, Cockpit instalado via Velopack, com downloads_paused: true em ~/.aiox/updater-state.json e uma release mais nova disponível no canal.
  2. Abrir a tela de update; ela mostra "vX.Y.Z disponível — downloads pausados".
  3. Clicar o toggle "Pausar downloads" para retomar.
  4. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions