Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>My Time Trace VSCodeNew to Visual Studio Code? Get it now.
My Time Trace VSCode

My Time Trace VSCode

Belicio Batista Cardoso

|
36 installs
| (1) | Free
Monitore seu tempo gasto em arquivos e projetos no VS Code com interface moderna e filtros avançados.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

My Time Trace VSCode (v0.6.0)

My Time Trace Logo

Status Tests TypeScript Version

Uma extensão para o Visual Studio Code que monitora automaticamente o tempo gasto em cada arquivo e projeto, permitindo que você acompanhe suas atividades de desenvolvimento com um dashboard moderno, filtros avançados e envio em nuvem. A versão publicada no Marketplace já está disponível para instalação direta.

✅ Disponível no VS Code Marketplace: https://marketplace.visualstudio.com/items?itemName=BelicioBCardoso.my-time-trace-vscode

✨ Funcionalidades

🕐 Monitoramento Inteligente

  • Rastreamento Automático: Registra tempo por arquivo em tempo real
  • Detecção de Inatividade: Pausa automática após 5 minutos de idle
  • Organização por Projeto: Agrupa dados por workspace/projeto
  • Persistência Local: Armazena dados em SQLite seguro
  • Identificação de Dispositivo: Registra nome do computador para cada rastreamento
  • Detecção de IDE: Identifica automaticamente qual IDE está em uso (VS Code, Cursor, Windsurf, etc.) e exibe na status bar
  • Sistema de Exclusão com Histórico: Soft delete, hard delete automático (>30 dias), e restauração

🗄️ Backup Automático Local (NOVO v0.6.0)

  • Cópia Segura via VACUUM INTO: backup com verificação de integridade dupla (origem e destino)
  • Arquivo Temporário com Rename Atômico: .sqlite.tmp → .sqlite sem risco de arquivo corrompido
  • Verificação de Espaço em Disco: impede backup se não houver espaço suficiente
  • Wizard de Configuração Interativo: 4 passos guiados (pasta de destino, intervalo, retenção, confirmação)
  • Agendamento Automático: configurável de 1h a 24h, com verificação de backup perdido ao retomar o VS Code
  • Painel WebView de Gerenciamento: tabela com badge ● atual, exclusão individual e em lote, restauração com 1 clique
  • FileSystemWatcher: painel atualiza automaticamente ao adicionar/remover backups externamente
  • Política de Retenção: remove os mais antigos automaticamente mantendo mínimo de 3
  • 7 novos comandos e 6 novas settings myTimeTraceVSCode.backup.* com scope: machineu

☁️ Sincronização em Nuvem (NOVO v0.5.3)

  • Sync Unidirecional: Push automático da extensão para a cloud
  • Configuração Dinâmica: Backend controla batchLimit, syncTimes, maxRetries e retryDelayMs
  • Loop Automático: Processa TODAS entries pendentes em um único comando
  • Retry Inteligente: Até 5 tentativas com delay configurável (padrão: 10s)
  • Persistência de Config: Configs salvas localmente para uso offline
  • Auto-Sync: Sincronização automática em horários configuráveis
  • Status Visual: Ícone animado na status bar durante sincronização
  • Multi-Dispositivo: Cada device envia seu próprio histórico para a cloud

A partir da versão 0.5.2, o sync da extensão é unidirecional (ext -> cloud).

📊 Dashboard Moderno Unificado

  • Interface Responsiva: Layout grid 40/60 otimizado
  • Filtros Integrados: Por data (inicial/final) e múltiplos projetos
  • Gráfico Donut Interativo: Visualização com tooltips e atualização dinâmica
  • Tabela Expansível: Projetos com detalhes expansíveis e ordenação por coluna
  • Cards de Estatísticas: Total, Hoje, Arquivos, Esta Semana em tempo real
  • Paleta de 50 Cores: Distinção visual clara entre projetos

🎨 Interface Integrada

  • Status Bar Interativa: Feedback visual constante
  • Formatação Inteligente: Caminhos de arquivo legíveis
  • Tema Adaptativo: Suporte a dark/light mode
  • Performance Otimizada: Redução de ~600 linhas de código desnecessárias
  • Cores Consistentes: Mesma cor para cada projeto independente de filtros

Como Funciona

  1. A extensão começa a monitorar automaticamente quando o VS Code é iniciado
  2. Detecta automaticamente qual IDE está em uso (VS Code, Cursor, Windsurf, Code - Insiders, Google Antigravity) e exibe na status bar
  3. Registra o tempo que você passa em cada arquivo
  4. Detecta quando você muda de arquivos ou projetos
  5. Registra períodos de inatividade para melhorar a precisão dos dados
  6. Armazena todos os dados localmente (incluindo qual IDE gerou cada registro)
  7. Oferece visualização unificada com filtros interativos para análise detalhada
  8. Permite exclusão segura de projetos com histórico completo de restauração

🖥️ IDEs Suportadas

A detecção de IDE usa três camadas de fallback:

IDE Detecção Primária Versão Capturada
VS Code globalStorageUri.fsPath vscode.version (API nativa)
Code - Insiders globalStorageUri.fsPath vscode.version (API nativa)
Cursor globalStorageUri.fsPath package.json da instalação
Windsurf globalStorageUri.fsPath package.json da instalação
Google Antigravity globalStorageUri.fsPath package.json da instalação

Se a detecção via path falhar, a extensão tenta variáveis de ambiente e process info antes de registrar "unknown" — sem travar a extensão em nenhum caso.

🔬 Fisiologia da Extensão

Arquitetura Interna

A extensão utiliza uma arquitetura modular enterprise com separação clara de responsabilidades:

  • Timer Heartbeat: Pulso de 1 segundo para contagem precisa em tempo real
  • Event Listeners: Monitora mudanças de arquivos, janelas e atividade do usuário
  • Database Layer: Camada de persistência com SQLite para armazenamento local
  • UI Components: Webviews com HTML/CSS/JS para dashboards interativos
  • Sync Manager: Sistema de sincronização com retry inteligente e auto-sync

💾 Armazenamento de Dados

Os dados são persistidos localmente em um banco SQLite seguro e ficam sob o armazenamento global do VS Code, o que facilita backup, inspeção e limpeza quando necessário:

Linux:

~/.config/Code/User/globalStorage/<your-username>.my-time-trace-vscode/time_tracker.sqlite

macOS:

~/Library/Application Support/Code/User/globalStorage/<your-username>.my-time-trace-vscode/time_tracker.sqlite

Windows:

%APPDATA%\Code\User\globalStorage\<your-username>.my-time-trace-vscode\time_tracker.sqlite

VS Code Insiders: Substitua Code por Code - Insiders nos caminhos acima.

📊 Estrutura do Banco de Dados

Tabela time_entries - Registros de rastreamento de tempo:

Campo Tipo Descrição
id INTEGER Chave primária auto-incremento
timestamp TEXT Data/hora ISO 8601 do registro
project TEXT Nome do projeto/workspace
file TEXT Caminho completo do arquivo
duration_seconds INTEGER Duração em segundos
is_idle INTEGER 1 = período inativo, 0 = ativo
synced INTEGER 1 = sincronizado na nuvem, 0 = local
deleted_at TEXT Timestamp do soft delete (NULL = ativo)
device_name TEXT Nome do dispositivo/computador
ide_name TEXT IDE detectada (VS Code, Cursor, Windsurf…)

Tabela deletion_history - Histórico de exclusões e restaurações:

  • Registro completo de soft/hard deletes
  • Permite restauração de projetos excluídos
  • Auditoria de operações de exclusão

Índices otimizados: Queries rápidas para filtros por projeto, data e dispositivo

🔄 Ciclo de Vida

  1. Ativação: Inicializa DB, cria listeners, inicia heartbeat
  2. Monitoramento: Timer incrementa 1s, detecta idle após 5min
  3. Salvamento: Persiste dados a cada mudança de arquivo ou idle
  4. Sincronização: Auto-sync em horários configuráveis (se habilitado)
  5. Desativação: Cleanup de recursos, fecha DB, cancela timers

Requisitos

  • Visual Studio Code 1.100.0 ou superior (ou qualquer fork compatível: Cursor, Windsurf, Google Antigravity 2.x+)

📖 Documentação

Para documentação detalhada, consulte a pasta docs/:

  • 🎨 Identidade Visual - Logo, cores e design system
  • 📊 Dashboard Moderno - Interface responsiva e funcionalidades
  • 🧩 Componentes UI - Documentação dos componentes de interface
  • ✅ Relatório de Cobertura - Métricas de qualidade e testes
  • 🚀 Guia de Desenvolvimento - Setup e desenvolvimento
  • 📦 Publicação no Open VSX - Como publicar para Antigravity e forks

📦 Instalação

Você pode instalar de duas formas: via Marketplace (recomendado) ou via VSIX local para desenvolvimento.

Opção 1 (Recomendado): Instalar pelo Marketplace

ext install BelicioBCardoso.my-time-trace-vscode

Ou acesse diretamente:

https://marketplace.visualstudio.com/items?itemName=BelicioBCardoso.my-time-trace-vscode

Opção 2 (Desenvolvimento): Instalação local via VSIX

Passo 1: Preparar o Ambiente

# Clone o repositório
git clone https://github.com/beliciobcardoso/MyTimeTraceVSCode.git
cd MyTimeTraceVSCode

# Instale as dependências
npm install

# Compile o TypeScript
npm run compile

Passo 2: Instalar a Ferramenta de Empacotamento

# Instale o vsce globalmente
npm install -g @vscode/vsce

Passo 3: Empacotar a Extensão

# Gera o arquivo .vsix
vsce package

Este comando irá gerar um arquivo como my-time-trace-vscode-X.X.X.vsix.

Passo 4: Instalar no VS Code

Após gerar o pacote, você pode instalá-lo de três maneiras:

Opção 1: Pela Interface do VS Code (Recomendado)

  1. Abra o VS Code (ou VS Code Insiders)
  2. Vá para a visualização de Extensões (Ctrl+Shift+X ou Cmd+Shift+X)
  3. Clique nos três pontos (...) no canto superior da visualização
  4. Selecione Instalar do VSIX...
  5. Navegue e selecione o arquivo .vsix gerado

Opção 2: Pelo Terminal (VS Code)

# Para o VS Code normal
code --install-extension my-time-trace-vscode-0.6.0.vsix

Opção 3: Pelo Terminal (VS Code Insiders)

# Para o VS Code Insiders
code-insiders --install-extension my-time-trace-vscode-0.6.0.vsix

Nota para VS Code Insiders no Linux: Se o comando code-insiders não for encontrado, use a Opção 1 (instalação pela interface).

Passo 5: Ativar a Extensão

Depois de instalar, o VS Code solicitará que você recarregue a janela para ativar a extensão. Você também pode:

  • Pressionar Ctrl+Shift+P (ou Cmd+Shift+P) e executar Developer: Reload Window
  • Fechar e reabrir o VS Code

✅ Verificar Instalação

Após recarregar, você deve ver:

  • Ícone do relógio na barra de status inferior
  • Comando disponível: My Time Trace: Show Statistics

Configurações da Extensão

As seguintes configurações já estão disponíveis:

  • myTimeTraceVSCode.idleTimeout: Define o tempo, em minutos, para considerar o usuário como inativo. Padrão: 5 minutos.
  • myTimeTraceVSCode.autoStart: Ativa ou desativa o início automático do monitoramento quando o VS Code é iniciado. Padrão: ativado.
  • myTimeTraceVSCode.showInStatusBar: Controla a exibição do tempo atual na barra de status. Padrão: ativado.
  • myTimeTraceVSCode.syncEnabled: Ativa ou desativa a sincronização automática em nuvem. Requer API Key. Padrão: ativado.
  • myTimeTraceVSCode.syncInterval: Intervalo de verificação do auto-sync, em minutos. Padrão: 60, com mínimo de 5 e máximo de 1440.

Backup Automático (scope: machine — não sincronizam entre dispositivos):

  • myTimeTraceVSCode.backup.enabled: Ativa ou desativa o backup automático local. Padrão: desativado.
  • myTimeTraceVSCode.backup.destinationPath: Caminho absoluto da pasta de destino dos backups. Deve ser local (evite pastas de nuvem).
  • myTimeTraceVSCode.backup.intervalHours: Intervalo entre backups automáticos, em horas. Padrão: 24, mínimo: 1.
  • myTimeTraceVSCode.backup.maxBackups: Quantidade máxima de arquivos de backup mantidos. Padrão: 7, mínimo: 3.
  • myTimeTraceVSCode.backup.notifyOnSuccess: Exibe notificação ao concluir um backup com sucesso. Padrão: desativado.
  • myTimeTraceVSCode.backup.showInStatusBar: Exibe indicador de backup na barra de status. Padrão: desativado.

🔑 Passo a passo: API Key e Sync Manual

Use este fluxo para configurar a chave e sincronizar na hora.

1) Configurar a API Key

  1. Abra a Command Palette (Ctrl+Shift+P no Linux/Windows ou Cmd+Shift+P no macOS).
  2. Busque por My Time Trace: Set Api Key.
  3. Se sua interface estiver em pt-BR, o nome pode aparecer como My Time Trace: Configurar Chave API.
  4. Cole sua API Key e confirme.

2) Sincronizar agora

  1. Abra novamente a Command Palette.
  2. Busque por My Time Trace: Sync Now.
  3. Se sua interface estiver em pt-BR, o nome pode aparecer como My Time Trace: Sincronizar Agora.
  4. Execute o comando para enviar as entries pendentes para a nuvem.

3) Validar se funcionou

  1. Execute My Time Trace: View Sync Status (ou My Time Trace: Ver Status de Sincronização).
  2. Confira no status se as entries foram sincronizadas.

Problemas comuns

  • API Key inválida ou ausente: revise a chave com Set Api Key.
  • Nada para sincronizar: significa que não há entries pendentes no momento.

Recursos e Próximos Passos

✅ Recursos já entregues

  • Status Bar Item: Mostra o tempo atual do arquivo e o estado do monitoramento na barra de status do VS Code.
  • Heartbeat: Timer de 1 segundo para contagem precisa e atualização em tempo real.
  • Interface de Visualização: Painéis e gráficos para analisar os dados de tempo coletados.
  • Separação de responsabilidades: Arquitetura modular com módulos especializados.
  • Tratamento de erros: Fluxos com async/await e registro seguro de comandos.
  • Visualização de dados: Dashboard unificado com filtros e gráficos interativos.
  • Status Bar interativa: Feedback visual constante com atualização em tempo real.
  • Sincronização em Nuvem: push-only com retry inteligente e auto-sync.
  • Backup Automático Local: cópia segura via VACUUM INTO, wizard de configuração, painel WebView de gerenciamento, agendamento automático e restauração com 1 clique.

⏭️ Próximos passos considerados

  • Exportação de Dados: Exportar os dados em formatos como CSV, JSON e Excel.
  • Relatórios Personalizados: Criar relatórios customizáveis por período e projeto.
  • Integração Git: Correlacionar tempo de desenvolvimento com commits.

Desenvolvimento

Se você quiser contribuir, esta é a trilha recomendada para trabalhar no projeto localmente com segurança e sem perder o contexto da base atual.

Ambiente de Desenvolvimento

# Instalar dependências
npm install

# Compilar a extensão em modo de desenvolvimento
npm run compile

# Compilar e observar mudanças durante o desenvolvimento
npm run watch

🌐 Configuração de Ambiente (.env)

A URL da API é controlada pela variável API_BASE_URL. O repositório inclui um .env.example como ponto de partida:

cp .env.example .env
Situação API_BASE_URL usada Como
Sem .env (clone limpo) http://localhost:3000/api Fallback em constants.ts
.env presente (desenvolvimento) Valor definido no .env Carregado por env-loader.ts via dotenv
VSIX publicado URL de produção .env bundled no pacote

Nota: o arquivo .env está no .gitignore — nunca é enviado ao GitHub. Isso é intencional para projetos open source: a URL de produção fica apenas na máquina do publicador.

Para publicar com a URL de produção, crie um .env local antes de empacotar:

# Criar .env com a URL de produção (não vai para o git)
echo "API_BASE_URL=https://sua-api.com/api" > .env

# Empacotar
npm run package

Execução e Validação Local

  1. Pressione F5 no VS Code para abrir uma nova janela com a extensão carregada.
  2. A extensão deve iniciar automaticamente e começar a monitorar seu tempo.
  3. Para testar manualmente, use os comandos da paleta do VS Code e valide o fluxo de tracking, dashboard e sync.
  4. Para verificação de qualidade, rode os testes com npm test.

Empacotamento para Teste Local

# Gera o arquivo .vsix
vsce package

Esse comando gera um arquivo como my-time-trace-vscode-X.X.X.vsix, que pode ser instalado localmente em outra máquina ou ambiente de teste.

Como Contribuir

  1. Faça um fork deste repositório.
  2. Crie uma branch para sua alteração: git checkout -b minha-feature.
  3. Faça os commits da sua mudança com mensagens objetivas.
  4. Execute npm run compile e npm test antes de abrir o PR.
  5. Envie a branch e abra um Pull Request.

Observações para Contribuição

  • O código está organizado em módulos; prefira alterar a responsabilidade correta em vez de concentrar lógica em extension.ts.
  • Toda persistência deve continuar passando por DatabaseManager.
  • Se a mudança afetar UI, revise também os documentos de docs/DASHBOARD_MODERNO.md e docs/UI_COMPONENTS.md.

Notas de Lançamento

0.6.0 (21/05/2026)

  • Sistema de Backup Automático Local: cópia segura via VACUUM INTO com verificação de integridade dupla, arquivo temporário .tmp com rename atômico e verificação de espaço em disco
  • Wizard de Configuração Interativo: 4 passos guiados (pasta de destino, intervalo, retenção, confirmação) com detecção de pastas de nuvem/rede e abort total no Esc
  • Painel WebView BackupPanel: tabela de backups ordenada por data, exclusão individual e em lote, badge ● atual, FileSystemWatcher para atualização em tempo real e botão de restauração
  • Agendamento Automático: setTimeout + setInterval com verificação de backup perdido no startup e ao recuperar foco, reagendamento com debounce ao alterar configurações
  • 7 novos comandos: Fazer Backup Agora, Configurar Backup, Gerenciar Backups, Abrir Pasta de Backup, Editar Configurações de Backup, Pausar e Retomar Backup Automático
  • 6 novas settings myTimeTraceVSCode.backup.* com scope: machine (não sincronizam entre dispositivos)
  • Output Channel: todas as operações registradas em View → Output → MyTimeTrace
  • i18n completo: localize() em todo o código TypeScript e chaves %key% em package.nls.json / package.nls.pt-br.json

0.5.5 (20/05/2026)

  • Detecção automática de IDE: identifica VS Code, Code - Insiders, Cursor, Windsurf e Google Antigravity com três camadas de fallback (path → env → process)
  • Indicador de IDE na status bar: novo item $(code) <nome> (v<versão>) exibido ao lado do contador de tempo
  • Campo ide_name no banco e no sync: cada registro de tempo agora armazena e envia a IDE de origem
  • Compatibilidade com Antigravity 2.x: engine atualizada para >=1.100.0
  • Correções de testes: timeouts do SyncRetryManager resolvidos; categorias dos comandos de sync corrigidas

0.2.0 - Beta (28/06/2025)

Terceira versão com refatoração completa e interface avançada:

Arquitetura Modular:

  • Separação de responsabilidades em módulos específicos
  • Módulos especializados: configuração, banco de dados, status bar, estatísticas, rastreamento e comandos
  • Melhor organização do código com classes especializadas
  • Sistema Heartbeat: Timer de 1 segundo para contagem precisa e atualização em tempo real
  • Tratamento de erros robusto: safeRegisterCommand com async/await para operações assíncronas
  • Refatoração completa do arquivo extension.ts para usar arquitetura modular

Interface de Estatísticas Avançada:

  • Layout Responsivo: Design em grid 40/60 com aproveitamento otimizado do espaço
  • Header Fixo: Título sempre visível durante a navegação
  • Filtros Interativos: Controles por data (início/fim) e seleção múltipla de projetos
  • Resumo Dinâmico: Estatísticas em tempo real dos dados filtrados
  • Projetos Expansíveis: Interface colapsível para melhor organização visual
  • CSS Modular: Estilos organizados usando variáveis do tema VS Code
  • JavaScript Robusto: Verificações de segurança e tratamento de erros

Melhorias Técnicas:

  • Melhoria na gestão de recursos e limpeza de memória
  • Melhor isolamento de responsabilidades evitando acoplamento
  • Correção de bug crítico com elemento HTML ausente
  • Verificações de elementos DOM antes do acesso
  • Layout responsivo funcionando em diferentes tamanhos de tela
  • Status Bar com feedback visual constante em tempo real

0.1.0 - Beta (18/06/2025)

Segunda versão com melhorias significativas:

  • Visualização de estatísticas por projeto com detalhes de arquivos
  • Exibição hierárquica de arquivos agrupados por projeto
  • Formatação inteligente de caminhos de arquivos para melhor legibilidade
  • Interface visual aprimorada para visualização dos dados coletados
  • Seções de projetos colapsáveis para melhor organização das estatísticas
  • Correção do problema "command already exists" nos testes
  • Implementação de registro seguro de comandos para evitar conflitos
  • Correção da funcionalidade de toggle para todos os projetos na visualização

0.0.1 - (31/05/2025)

Lançamento inicial com funcionalidades básicas:

  • Monitoramento automático de tempo por arquivo
  • Persistência local usando SQLite
  • Detecção de inatividade após 5 minutos
  • Rastreamento por projeto
  • Status Bar mostrando o arquivo atual e tempo gasto

Tecnologias Utilizadas

  • TypeScript
  • VS Code Extension API
  • SQLite (via sqlite3)

🏗️ Estrutura do Projeto

MyTimeTraceVSCode/
├── 📁 src/                    # Código fonte principal
│   ├── extension.ts           # Ponto de entrada da extensão
│   ├── modules/              # Módulos especializados
│   │   ├── timeTrace.ts      # Engine de rastreamento
│   │   ├── database.ts       # Gerenciamento SQLite
│   │   ├── statusBar.ts      # Interface barra de status
│   │   └── ...
│   ├── ui/                   # Componentes de interface
│   └── test/                 # Testes automatizados
├── 📁 docs/                  # 📖 Documentação completa
├── 📁 images/                # Assets visuais
└── 📁 UI/                    # Demos e protótipos

Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.


Qualidade e Confiabilidade

🧪 Testes Automatizados

A extensão possui 139 testes automatizados que garantem a qualidade e confiabilidade:

  • ✅ 139 testes passando
  • ✅ Testes abrangentes incluindo:
    • Ativação/desativação da extensão
    • Rastreamento de tempo e detecção de idle
    • Persistência de dados no SQLite
    • Detecção de IDE (getIdeName, getIdeVersion, fallbacks)
    • Interface do status bar em tempo real
    • Retry automático de sincronização
    • Backup automático (BackupManager, BackupPanel, BackupRetryManager)
    • Integração entre módulos

🏗️ Arquitetura Modular

  • Separação clara de responsabilidades com módulos especializados
  • Código TypeScript com tipagem forte
  • Tratamento robusto de erros com async/await
  • Cleanup automático de recursos

Para mais detalhes, consulte o Relatório de Cobertura de Testes.

Aproveite o My Time Trace VSCode e monitore seu tempo de desenvolvimento de forma eficiente!

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft