tasktracker
Extensão VSCode que monitora sua atividade de desenvolvimento e envia os dados para o daemon timeTracker, que os persiste em SQLite para geração de relatórios de apontamento.
Como funciona
A extensão captura automaticamente:
- Arquivo aberto — qual arquivo está em foco no editor
- Tempo total — quanto tempo o arquivo ficou aberto
- Tempo ativo de edição — tempo efetivo com keystrokes (exclui idle)
- Keystrokes — número de teclas pressionadas no arquivo
- Linguagem e workspace — metadados para agrupar nos relatórios
Quando o arquivo é trocado ou fechado, a sessão é enviada via POST http://localhost:7331/session para o daemon Go. Se o daemon não estiver rodando, o evento é descartado silenciosamente.
Detecção de idle
O tracker considera o usuário idle após 2 minutos sem keystrokes ou quando a janela do VSCode perde foco. O tempo idle não conta como tempo ativo de edição.
Status bar
Um item na status bar exibe o arquivo atual e o tempo decorrido na sessão. Clique nele para pausar/retomar o tracking.
$(clock) 0:04:32 - server.go ← ativo
$(clock) 0:04:32 - idle ← idle
$(debug-pause) TaskTracker: Paused ← pausado
Requisitos
O daemon timeTracker precisa estar rodando em localhost:7331. Sem o daemon, a extensão continua funcionando mas as sessões não são persistidas.
Para rodar o daemon:
# Windows (com janela de console)
go build -o timetracker-daemon.exe ./daemon
./timetracker-daemon.exe
# Windows (sem janela de console)
go build -ldflags "-H windowsgui" -o timetracker-daemon.exe ./daemon
./timetracker-daemon.exe
Comandos
| Comando |
Descrição |
TaskTracker: Show Today's Report |
Abre relatório do dia atual |
TaskTracker: Show Report for Date Range |
Abre relatório para um intervalo de datas |
TaskTracker: Toggle Tracking |
Pausa ou retoma o tracking |
Acesse pelos comandos via Ctrl+Shift+P.
Relatórios
Os relatórios são gerados dentro do próprio VSCode em um Webview e mostram:
- Resumo geral — tempo total, tempo ativo e número de arquivos
- Por arquivo — tempo total, tempo ativo, keystrokes e número de sessões
- Por linguagem — tempo total e ativo por linguagem de programação
- Por workspace — tempo total e ativo por projeto/workspace
Arquitetura
src/
├── extension.ts # ponto de entrada, registro de comandos
├── models/types.ts # interfaces: ActivitySession, Report, etc.
├── services/
│ ├── ActivityTracker.ts # captura eventos do editor, gerencia sessões
│ ├── DaemonClient.ts # POST /session para o daemon em :7331
│ ├── StorageService.ts # leitura de logs locais (JSON) para relatórios
│ └── ReportGenerator.ts # agrega sessões em Report por arquivo/linguagem/workspace
└── ui/
├── StatusBarManager.ts # item na status bar com timer em tempo real
└── ReportWebviewProvider.ts # webview HTML com tabelas de relatório
Limitações conhecidas
- Os relatórios leem do armazenamento JSON local, que atualmente não é populado (as sessões vão direto ao daemon). Isso será corrigido quando o daemon expor um endpoint
GET /api/sessions.
- Não há autostart — o daemon precisa ser iniciado manualmente.