Extensão privada para Chrome e Edge que cronometra o tempo dedicado a uma tarefa.
- integração OAuth com GitLab.com, GitLab Self-Managed e GitHub Projects;
- fluxo conta/projeto → board → coluna → tarefa;
- iniciar, pausar, continuar, reiniciar e finalizar;
- estado persistido em
chrome.storage.local; - contagem correta mesmo quando o popup está fechado;
- movimentação de tarefas entre colunas;
- arquitetura de provedores preparada para novas integrações.
cd extension
npm install
npm run buildDepois, abra chrome://extensions ou edge://extensions, habilite o modo de desenvolvedor e use Carregar sem compactação apontando para a pasta extension/dist.
Após alterações, execute novamente npm run build e recarregue a extensão na página de extensões do navegador.
Cadastre uma aplicação OAuth não confidencial no GitLab com escopo api. A URL de callback exata é exibida na tela de conexão da extensão e tem o formato:
https://<extension-id>.chromiumapp.org/gitlab
Copie extension/.env.example para extension/.env.local e informe o Application ID público. Nunca inclua o Client Secret no projeto ou na extensão. Durante o desenvolvimento, o Application ID também pode ser informado diretamente na tela de conexão.
Depois do login, a extensão lista os projetos dos quais o usuário participa, os boards do projeto escolhido e todas as issues da coluna selecionada. Para manter o login após reloads, os tokens OAuth ficam no armazenamento local da extensão com acesso limitado a contextos confiáveis, além de uma cópia ativa em chrome.storage.session. O armazenamento local do navegador não é um cofre criptográfico; use logout em computadores compartilhados.
Crie um GitHub OAuth App e configure a callback exibida pela extensão:
https://<extension-id>.chromiumapp.org/github
Informe o Client ID público em VITE_GITHUB_CLIENT_ID. A extensão usa OAuth Authorization Code com PKCE e acessa Projects V2 pela API GraphQL. Ela lista a conta pessoal e as organizações acessíveis, os Projects, as opções do campo Status e todos os itens da coluna escolhida.
O GitHub Projects não oferece um campo universal de tempo gasto equivalente ao time tracking do GitLab. Por isso, para tarefas do GitHub, o cronômetro é salvo no Dev Timer, mas não é enviado ao GitHub. A movimentação entre opções de Status é sincronizada normalmente.
O popup conversa apenas com comandos work:* e com o contrato WorkProvider. Cada integração fica em um adaptador próprio sob extension/src/services/providers. Para adicionar outro provedor, implemente o contrato, registre o adaptador em extension/src/services/work.ts e declare suas capacidades.
A documentação usa Next.js e Fumadocs em uma aplicação independente:
cd docs
npm install
npm run devAbra http://localhost:3000. Além do site navegável, a aplicação oferece llms.txt, llms-full.txt e uma representação Markdown de cada página para agentes de IA.