Repository navigation
Nova identidade: o projeto passa a se chamar GiftPilot. As configurações salvas são mantidas.
Adicionado
- Nome, logotipo, ícones e paleta próprios (
assets/brand/,assets/icons/). - Painel flutuante em shadow root fechado com pontos, nível, botão do piloto automático, status, avisos e notificações (
js/content/panel.js). - Piloto automático com fila sequencial e cancelável (o botão vira "Parar"), retomada após o recarregamento do modo "repetir a cada N horas" e espera com recuo em erros de rede.
- Tratamento de sorteios com descrição obrigatória: o site trava o botão de entrada (
is-locked) até a descrição ser aberta. O piloto abre a descrição nativa, espera um tempo de leitura proporcional ao texto e só depois entra; o segundo plano faz o mesmo comdo=giveaway_description. - Ponte de requisições: com uma aba do SteamGifts aberta, o service worker executa as requisições dentro dela e espelha pontos e linhas na aba.
- Tema escuro gerado a partir do CSS oficial do site (
scripts/build-site-dark.mjs→css/site/dark.css, ajustes emcss/site/dark.overrides.css). - Clique no ícone da extensão abre as configurações.
- Campos de configuração que existiam sem controle na tela: ignorar whitelist em segundo plano, tempo máximo restante (em horas) e prioridade por nível.
- Links do site, de issues e do changelog na página de configurações.
- Testes de seleção do piloto automático (
tests/autojoin-plan.test.js) e novas verificações anti-detecção. - Site no GitHub Pages,
FUNDING.yml, rotulagem automática de PRs, formulários de issue eAGENTS.mdpara agentes de IA.
Alterado
- Estrutura de pastas:
js/{background,content,core,offscreen,options},css/{site,options,vendor},assets/; documentos da comunidade em.github/. - Parser de sorteios reescrito para o HTML atual (links relativos sem barra final,
?utm_source, cópias e custo por expressão regular, nível pelotitledecimal) e compartilhado entre página e documento offscreen. - Uma única rolagem infinita (
js/content/infinite-scroll.js); as páginas carregadas recebem botões, filtros e chance de vitória. - Entradas seguem o formato do bundle ativo do site:
FormDatamultipart nobundle-v18e jQuery urlencoded nobundle-v19. - Tema escuro e barra fixa aplicados pelo service worker com
chrome.scripting.insertCSS, sem classe no<body>e sem flash branco. - Cache de dados da Steam com validade; DLC e cartas via
appdetails; comentários enviados como formulário comum. - Globais internos renomeados de
AutoJoin*paraGiftPilot*. As chaves de configuração não mudaram. - README, guia de contribuição, política de segurança,
TO-DO.mde este changelog reescritos e padronizados. - Workflows do GitHub revisados: CI sem a branch inexistente
develop, release com o nome novo, Dependabot com grupos e rótulos coerentes.
Removido
web_accessible_resources(permitiam sondar a extensão a partir da página).- Script do aviso de suspensão, escritas no
localStorageda página e alteração de<html lang>. - Módulo legado
js/core/giveaway.js,css/general.css,IMPROVEMENTS.mde links para a extensão original na página de configurações.
Corrigido
- Resgate automático de chaves:
res.json()semawait,winner_idenviado como o texto literal'winnerId'e sessão da Steam ausente. - Busca de
/giveaways/wonsem cookies; vitórias agora detectadas também pelo contador de ganhos. PointsToPreserve,MaxTimeLeftBGeMinLevelBGignorados em segundo plano; service worker mantido ativo durante a rotina.- Configurações: listener de restauração duplicado, comparação
this.value === 0que nunca era verdadeira e campo "repetir a cada" gravado na chave errada (hoursFieldem vez deRepeatHours). - Notificações da página de configurações, que não carregava o módulo de avisos.
Segurança
- Canário do
bundle-v19.jsneutralizado: o site reporta a conta (ajax.php,do=jh8Dn) ao encontrar qualquer um deinput#btnAutoJoin,#btnSettingscom o texto "AutoJoin Settings",#ajFooter,#navbarPinou#ajFooterArrow. Nenhum desses marcadores existe mais na página.
Instalação: baixe o .zip, extraia, abra chrome://extensions, ative o modo do desenvolvedor e use Carregar sem compactação.