+O store recarrega crews, bots e `system.status` a cada (re)conexão e depois segue as notificações. `system.status` não tem notificação e é relido a cada 15 s, menos com a janela fora de vista (minimizada, escondida perto do relógio ou aberta escondida no login do Windows): aí para, e é relido quando ela volta. Fora de vista, as animações também param onde estão (`paused.css`) e continuam quando a janela volta. O Windows pode não avisar a página quando o próprio app esconde a janela, então o app marca isso ele mesmo (`shell/visibility.ts`), e a janela voltar à frente desmarca. Com a janela à vista mas sem o foco (o dono trabalha em outro app), os mascotes e o traço de "trabalhando" param onde estão, porque o WebView os redesenha na CPU a cada quadro: um Botloft aberto atrás de outras janelas custa quase nada. Spinners, pontos ao vivo e o que chega continuam. Medido no WebView2 com bots parados: cerca de 1 núcleo com os mascotes animando, 0,01 com eles parados. Enquanto alguma animação roda, o WebView produz um quadro por atualização da tela (180 Hz no monitor do dono), então limitar os quadros de cada animação (`steps`) não muda o custo; parar é o que muda.
0 commit comments