Releases: assertlab/bisolhador
Releases · assertlab/bisolhador
Release v3.4.0: Governance & Risk Edition
☢️ v3.4.0 - Governance & Risk Edition ✅
- Análise de Risco Avançada (Bus Factor): Motor matemático baseado em limite de 70% de esforço (Pareto) e novo componente visual BusFactorCard (Barra Horizontal Empilhada) para alertar sobre centralização de conhecimento.
Release v3.3.0: Data Science Edition (CSV Export)
📊 v3.3.0 - Data Science Edition ✅
- Exportação Avançada (CSV): Motor nativo de exportação CSV (sem bibliotecas externas) com escape RFC 4180 e UTF-8 BOM para compatibilidade com Excel. Integrado no Dashboard (13 métricas do repositório) e na Tabela Comparativa do Benchmark (exporta colunas idênticas à tabela visual). Headers traduzidos dinamicamente via i18n (PT-BR/EN-US).
Release v3.2.0: Resilience & Stability
🛡️ v3.2.0 - Resilience & Stability ✅
- Resiliência de Analytics (Exponential Backoff): Implementação de lógica de retentativas com Exponential Backoff no serviço de analytics do Supabase, garantindo que oscilações de rede não percam dados.
- UX de Falhas Parciais (PartialDataAlert): Componente
PartialDataAlertno GitHub Service para tratamento de falhas parciais da API (ex: Rate Limit de commits). O painel renderiza os dados disponíveis e exibe um banner amigável detalhando os dados ausentes.
Release v3.1.2: Dynamic Version Badge Fix
Dynamic Version Badge Fix
fix(ui): exibe versão dinâmica do package.json no header
Release v3.1.1: Refactoring Edition (Performance, Security & Clean Code)
Refactoring Edition — 5 Sprints de Maturidade Técnica
Refatoração completa da codebase baseada no Tech Debt Report v3.1.0, executada em 5 sprints incrementais.
🐛 Sprint 1 — Bug Fixes & Quick Wins
- Fix
useChartTheme: Adicionadas propriedadestooltipBg/tooltipText+useMemono retorno do hook para corrigir tooltips sem cor em dark mode. - Safe localStorage: Criado wrapper
src/utils/storage.jscom try-catch para evitar exceções em navegação privada (Safari/Firefox). - Dead code removido:
sanitizeForJson.jse exportallSuccessnão utilizado emuseBenchmarkRepos.
⚡ Sprint 2 — Performance (useMemo em Charts)
- Memoização de charts:
chartDataechartOptionsenvolvidos emuseMemoemTimeline.jsx,BenchmarkEvolutionChart.jsx,BenchmarkComparisonChart.jsxeCommitActivityChart.jsx. - Padronização: Todos os gráficos seguem o mesmo padrão de memoização para evitar re-criação do canvas Chart.js.
🔄 Sprint 3 — DRY (useTimeFilter Unificado)
useTimeFilterhook: Lógica de filtragem temporal (7d/30d/60d/90d/all) extraída para hook reutilizável, eliminando duplicação entre Timeline e Benchmark.<TimeRangeFilter>component: Componente de UI unificado para seleção de período temporal.
🏗️ Sprint 4 — Architecture (Componentização)
- Dashboard extraído:
Dashboardmovido deApp.jsxparasrc/pages/Dashboard.jsxcomsnapshotAdapter.jsseparado. - Benchmark componentizado: 5 sub-componentes extraídos (
BenchmarkSearchForm,BenchmarkRepoChips,BenchmarkHealthBars,BenchmarkBusFactorRisk,BenchmarkDetailTable).
🛡️ Sprint 5 — Security & Polish
- Proteção XSS:
dangerouslySetInnerHTMLsubstituído por componenteTransdo react-i18next. - i18n completo: Todas as strings hardcoded em português migradas para arquivos de locale.
- Constantes extraídas: Magic numbers movidos para
src/constants.js(API pagination, thresholds, PDF config). - Migração de contexto:
docs/CONTEXT.mdmigrado paraCLAUDE.mdno padrão oficial Claude Code.
Release v3.1.0: Benchmark Edition
🎉 Major Feature: Benchmark Multi-Repo
- Página Benchmark (
/benchmark): Comparação simultânea de até 10 repositórios com seleção via chips coloridos e remoção individual. - Gráficos de Evolução Comparativa: Line charts com eixo temporal (
chartjs-adapter-date-fns) mostrando evolução de Stars por repositório. - Gráficos de Comparação por Categoria: Bar charts agrupados por Popularidade (Stars, Forks), Velocidade (Lead Time, Code Churn) e Qualidade (Health Score, Divergência).
- Tabela Comparativa: Tabela detalhada com Health Score, Lead Time, Divergência, Code Churn e classificação de risco Bus Factor.
- Hook
useBenchmarkRepos: Busca paralela de dados via TanStack Query comuseQueries, parse defull_reporte extração de histórico completo.
⏱️ Filtros Temporais Unificados (Time Range)
- Benchmark Filters: Sistema de filtros (7d, 30d, 60d, 90d, todo histórico) acima dos gráficos do Benchmark. Default: 30d para normalizar visualização inicial de repos com datas de início diferentes.
- Timeline 60d: Novo filtro de 60 dias adicionado à página Timeline, expandindo as opções existentes.
- Filtragem por
created_at: Dados filtrados viauseMemoantes de serem passados aos componentes de chart, mantendo apenas registros dentro da janela temporal selecionada.
🌐 Internacionalização
- Benchmark i18n: Todas as strings do Benchmark traduzidas em PT-BR e EN-US (título, subtítulo, filtros, categorias, tabela, estados vazios/erro).
- Filtro 60d: Labels "60 dias" (PT) / "60 days" (EN) adicionados em
timeline.filtersebenchmark.filters.
🎨 UI/UX
- Segmented Control Filters: Botões de período com estilo consistente dark mode (mesmo padrão da Timeline).
- Repo Chips: Tags de seleção com cor identificadora, nome e botão de remoção.
- Lazy Loading: Charts do Benchmark carregados via
React.lazy+Suspense.
Release v3.0.2: Security Hotfix (Critical updates for PDF generation), Atualização de Documentação e Roadmap
🔒 Security Hotfix
- Dependency Updates: Atualização crítica do
html2pdf.js(v0.14.0) ejspdfpara mitigar vulnerabilidades de XSS e injeção detectadas em CVEs anteriores. - Security Audit: Varredura completa de dependências para garantir segurança da cadeia de suprimentos.
✨ Enhancements
- Filtros Temporais no Timeline: Implementação de controles de período (7d, 30d, 90d, todo histórico) na página Time Machine, permitindo análise focada de intervalos específicos.
- UX Improvements: Interface segmentada com botões de filtro estilizados e suporte completo a dark mode.
Release v3.0.0: Time Machine & Analytics History
🎉 Major Feature: Time Machine (Histórico de Evolução)
- Visualização Temporal de Métricas: Nova página
/timeline/:owner/:repopara visualizar a evolução histórica de repositórios através de gráficos de linha interativos. - Gráficos de Evolução: Gráficos Chart.js mostrando evolução de Stars, Forks e Watchers ao longo do tempo com dados extraídos de snapshots históricos.
- Supabase RPC: Nova função
get_repo_history(p_repo_name)para buscar histórico completo de análises ordenadas cronologicamente. - UI Enhancements: Botão "📈 Ver Evolução" adicionado ao RepoInfoCard para acesso direto à timeline do repositório.
- Cards de Resumo: Visualização de primeira análise, última análise e crescimento total de stars.
- Internacionalização Completa: Todas as strings da nova feature traduzidas em PT-BR e EN-US.
🛠️ Backend
- Nova RPC:
get_repo_historycom segurançaSECURITY DEFINEReSET search_path = public. - Serviço Analytics: Método
getRepoHistory(repoName)adicionado para consumir a nova RPC.
🎨 UX/UI
- Nova Rota:
/timeline/:owner/:repointegrada ao React Router. - Estado de Loading/Error: Tratamento robusto de estados de carregamento e erro com feedback visual claro.
- Dark Mode Support: Tema escuro totalmente suportado nos novos gráficos através do hook
useChartTheme. - Botão de Navegação: Botão "Voltar ao Dashboard" para navegação intuitiva.
📊 Data Visualization
- Line Charts: Gráficos de linha com preenchimento gradiente e tensão suavizada (0.4).
- Tooltips Interativos: Tooltips detalhados mostrando valores de múltiplas métricas por data.
- Cores Semânticas: Dourado (#FFD700) para Stars, Azul (#3B82F6) para Forks, Verde (#10B981) para Watchers.
Release v2.8.3: UI/UX Polish & Bugfixes
Fix (Navigation): Header State Management
- Global Modal State: Refactored settings modal state to App.jsx level, ensuring Header buttons (Settings & Language) work consistently across all routes (Dashboard & Ranking).
- Cross-Route Functionality: Fixed issue where configuration and language buttons were non-responsive in Ranking page due to isolated state management.
Fix (i18n): Complete Internationalization
- Missing Translations: Added complete translations for Help Modal, Settings Modal, Ranking table, and Navigation links.
- Header Navigation: Implemented i18n for "Buscar/Search" and "Ranking" navigation links.
- Modal Content: Fully translated Help Modal (about, token setup, usage steps) and Settings Modal (title, description, labels, buttons).
- Ranking Page: Translated all table headers, loading/error messages, and empty state content.
UX: Universal Access to Settings
- Consistent Experience: Users can now access settings and change language from any page in the application.
- State Persistence: Modal state properly managed globally to prevent navigation issues.
Release v2.8.2: Global Timezone, Auto-Save & Documentation Update
Feat (i18n): Timezone Detection
- Automatic Timezone Detection: Implemented automatic timezone detection using
Intl.DateTimeFormat().resolvedOptions().timeZone. Date searches now respect the user's local timezone (e.g., Japan, Lisbon) instead of being fixed to 'America/Recife'.
Backend: RPC Update
- Dynamic Timezone Parameter: Updated
buscar_snapshot_por_dataRPC to accept dynamicp_timezoneparameter.