Skip to content

hsalmirante/autorefreshmaster

Repository files navigation

autorefreshmaster

Auto Refresh Master D7

Extensão Chrome (Manifest V3) para realizar auto-refresh na aba ativa com intervalo configurável.

Changelog

1.03

  • Renomeado para Auto Refresh Master D7

1.0.2

  • Presets padronizados no Popup e na Options Page (30 seg, 1/2/5/10/20/30/60 min)
  • Manter sessão (Keep-Alive) (repurpose do antigo "Soft Reload")
    • Agora pode ser alternado no popup e na options page
    • Padrão para novos usuários: ativado
    • Implementação: fetch(window.location.href) via chrome.scripting.executeScript (fallback para reload em páginas restritas)
  • Ícones do toolbar via PNG (definidos no manifest.json), removendo lógica de geração dinâmica por canvas

O controle principal fica no popup (UI estilo “Auto Refresh Page”):

  • [Intervalo] Campo grande em segundos
  • [Play/Pause] Inicia/para o auto-refresh na aba atual
  • [Presets]
    • 30 seg
    • 1 min
    • 2 min
    • 5 min
    • 10 min
    • 20 min
    • 30 min
    • 60 min
  • [Manter sessão] "Manter sessão (sem recarregar)" (keep-alive) — envia um fetch silencioso para manter a sessão ativa sem perder dados do formulário
  • [Atualizar agora] Força um refresh imediato

Arquitetura (técnica)

  • Manifest: V3
  • Service Worker: agenda e executa recarregamentos via chrome.alarms.
    • Com Manter sessão ativo: injeta um fetch(window.location.href) via chrome.scripting.executeScript (fallback para reload quando não permitido)
    • Caso contrário: executa reload padrão via chrome.tabs.reload
  • Persistência: chrome.storage.local (config por aba + opções globais)

Fluxo de funcionamento

  • O popup envia mensagens para o service worker (chrome.runtime.sendMessage).
  • O service worker salva a configuração por aba e cria/atualiza um alarm.
  • Quando o alarm dispara, o service worker recarrega a aba (ou todas as abas da janela, dependendo das opções).
  • Ao fechar uma aba, a configuração associada é removida.

Estrutura de arquivos

Dentro de autorefreshmaster/:

  • manifest.json
    • Define Manifest V3, permissões, action/popup, options page e service worker.
  • service-worker.js
    • Lógica de agendamento (chrome.alarms) e execução do reload.
    • Handlers de mensagens do popup/options.
  • popup.html / popup.css / popup.js
    • UI e lógica do controle do auto-refresh da aba ativa.
  • options.html / options.css / options.js
    • Página de opções com layout avançado (toggles persistidos).
  • assets/icons/
    • icon16.png, icon48.png, icon128.png (ícone Font Awesome arrows-rotate / f021)

Permissões (manifest)

  • storage: salvar configurações por aba e opções globais
  • alarms: agendamento do auto-refresh
  • tabs: identificar/recarregar abas, obter título/URL e recarregar em lote quando necessário
  • scripting: injetar o keep-alive (fetch(window.location.href)) quando Manter sessão estiver ativo
  • browsingData: limpar cache (opção avançada)
  • notifications: mostrar notificação (opção avançada)

Instalação no Chrome (Load unpacked)

  1. Abra chrome://extensions
  2. Ative Developer mode
  3. Clique em Load unpacked
  4. Selecione a pasta:
    • c:\Temps\Minhas Extensoes Chrome\Auto Refresh Master D7\autorefreshmaster

Para aplicar mudanças no código:

  • Volte em chrome://extensions e clique em Reload na extensão.

Uso

  1. Abra qualquer site comum (http:///https://).
  2. Clique no ícone da extensão para abrir o popup.
  3. Selecione um preset ou digite o intervalo.
  4. Clique em Play para iniciar.
  5. Clique em Pause para parar.

O popup também exibe:

  • Status (Ativo/Parado)
  • Próxima atualização (horário estimado)

Options Page (avançado)

A options page existe para controlar e persistir opções globais (com UI recolhível).

Abrir:

  • chrome://extensionsDetailsExtension options

Opções avançadas com comportamento implementado

  • Manter sessão (sem recarregar a página): mantém a sessão ativa sem recarregar a página (evita perda de dados em formulários).
    • Padrão: ativado para novos usuários.
    • Também pode ser alternado direto no popup.
  • Intervalos de tempo aleatórios: aplica jitter ao agendamento (± ~30% do intervalo)
  • Limpar cache: executa chrome.browsingData.removeCache({ since: 0 }) antes do reload
  • Mostrar notificação: dispara uma notificação a cada reload
  • Atualizar todas as guias: recarrega todas as abas da mesma janela do tab alvo

Opções ainda somente persistidas (sem efeito no reload)

  • Todas as páginas
  • Exibir contador longo
  • Mostrar notificação (qualquer alteração)

Limitações conhecidas

  • O Chrome não permite controlar/recarregar páginas internas como chrome://... e a Chrome Web Store.
  • O comportamento de reload pode falhar em algumas páginas especiais/restritas; nesses casos o auto-refresh é desativado para aquela aba.

Desenvolvimento

  • Projeto “vanilla” (sem bundler): basta editar os arquivos.
  • Recarregue a extensão em chrome://extensions após mudanças.

About

Versão funcional, segura, extensível e resiliente** de uma extensão de auto-refresh de abas no navegador Chrome.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors