All notable changes to GitVoyant are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Extended temporal analysis to Python, JavaScript/TypeScript, Java, and Go
- Introduced
Analyzerprotocol (ABC) defining the interface for language-specific code analysis - Created
PythonAnalyzerby extracting_extract_metrics()and_cyclomatic_complexity()fromTemporalEvaluator - Created
JavaScriptAnalyzerusing tree-sitter-javascript (handles.js,.jsx,.ts) - Created
JavaAnalyzerusing tree-sitter-java (handles.java) - Created
GoAnalyzerusing tree-sitter-go (handles.go) - Central analyzer registry mapping file extensions to analyzer instances
TemporalEvaluatordelegates to the resolved analyzer instead of callingast.parsedirectly- Automatic language detection by file extension
--languageCLI flag for restricting analysis to a single languageGITVOYANT_SUPPORTED_LANGUAGESconfiguration option for limiting enabled languages- Per-language directory exclusions:
node_modules,dist,.next,target,.gradle,vendor,build - File discovery in
TemporalEvaluatorServiceandlangchain_bindingsnow uses registry lookups instead of hardcoded.pychecks
- Default model updated to
claude-sonnet-4-5-20250929 - Verified support for
claude-opus-4-6andclaude-sonnet-4-6 - Model selection via
CLAUDE_MODELenvironment variable - Agent runtime now consumes the full config contract via
get_claude_config(), wiringmodel,temperature, andmax_tokensthrough toChatAnthropic - Default
max_tokensincreased from 4000 to 8192 to match current model capabilities
anthropicminimum version raised from0.18.0to0.80.0(required for current model IDs andmodels.list()endpoint)langchain-anthropicminimum version raised from0.1.0to1.0.0langchainandlangchain-coreminimum versions raised from0.1.0to0.3.0- Added
tree-sitter>=0.24.0,tree-sitter-javascript>=0.23.0,tree-sitter-java>=0.23.0,tree-sitter-go>=0.23.0
- Added
languagefield toTemporalEvaluationdomain entity - Added
languagefield toEvaluationResponseDTO - Added
languagecolumn to CLI Rich table output - Updated all tool descriptions from "Python file" to "source file"
- CLI indicators changed from emoji to text markers:
[+](improving),[-](declining),[~](stable) - Agent prompt strings rewritten: branded as "GitVoyant" instead of vendor name
max_tokenswas configured in settings but never passed toChatAnthropicin agent runtime; now wired through- Corrected stale model identifiers that were returning HTTP 404 from the Anthropic API
- All markdown documentation (README, USER_GUIDE, CONTRIBUTING, CHANGELOG, COMPLEXITY_REQUIREMENTS, TEMPORAL_ANALYSIS_EXPLAINED) rewritten for declarative register, no speculative roadmaps, no performative language
- CITATION.cff rewritten: updated abstract, keywords, and version to reflect multi-language scope
- All emoji characters across the entire codebase (source, docs, CI, CLI output, banner, agent prompts)
- All vendor attribution from documentation, user-facing strings, and CITATION.cff
docs/index.htmlstatic architecture diagram (stale, duplicative of README)- Speculative roadmap sections from CONTRIBUTING.md and CHANGELOG.md
- Badge wall from README.md
- 63+ tests total
- 13 unit tests for
JavaScriptAnalyzer - 14 unit tests for
JavaAnalyzer - 12 unit tests for
GoAnalyzer - All three supported models verified end-to-end against the live Anthropic API through the full agent runtime
- Complete rewrite using Domain-Driven Design (DDD) principles
- Clean Architecture with separation of presentation, application, domain, and infrastructure layers
- Rich domain entities:
TemporalEvaluation,Repositorywith embedded business logic - Value objects:
ComplexityTrend,ConfidenceRank,TimeTablewith validation and business rules - Use cases:
AnalyzeFileUseCase,AnalyzeRepoUseCaseorchestrating business workflows
- LLM integration via LangChain and Anthropic agent runtime
- Conversational interface for natural language temporal analysis through AI agents
- Specialized tools:
temporal_analysis_tool,repo_evaluation_toolfor agent consumption - LangGraph ReAct agent runtime with GitVoyant tools
- Context management with output suppression and response formatting
- Confidence scoring based on commit history depth (0.4-0.9 scale)
- Progressive disclosure: higher confidence with more temporal data points
- Low confidence warnings as reliability indicators for limited data
- Improved quality decay forecasting with confidence bounds
- Proper handling of insufficient data with graceful degradation
- Rich formatting with color-coded metrics and styled tables
- Command structure:
gitvoyant analyze temporalandgitvoyant analyze agent - Comprehensive error messages and user guidance
- Smart resolution of local paths and remote Git URLs
- Structured rendering with risk-ranked file listings
- 55%+ test coverage with unit, integration, and CLI tests
- Full type annotations throughout codebase
- Robust error recovery and partial result handling
- Structured logging with configurable levels
- Environment-based configuration with
.envsupport
- UV package manager, Ruff linting and formatting
- Makefile with build automation
- Proper CLI installation with
gitvoyantcommand - Google-style docstrings throughout
- Git integration via GitPython for commit history processing
- NumPy/Pandas for linear regression and trend analysis
- Python AST parsing for cyclomatic complexity calculation
- AsyncIO integration for service layer operations
- Immutable value objects and rich domain entities via dataclasses
- Flask-specific research examples and results
- Research-oriented demonstration scripts
- Illustrative graphs and sample data
- REST API (simplified to CLI and agent interfaces)
- Core temporal evaluation algorithm preserved in full
- Research algorithms restructured into production architecture
- Same linear regression and complexity analysis foundation, now with confidence scoring
- IMPROVING/DECLINING/STABLE classification with statistical rigor
- First implementation of Git history-based quality analysis
- Flask repository analysis as discovery case
- 878-line research prototype demonstrating temporal intelligence viability
- Basic IMPROVING/DECLINING/STABLE quality pattern classification
- AST-based cyclomatic complexity measurement across Git commits
- Statistical trend analysis via linear regression for complexity evolution
- Commit-by-commit code analysis and metrics extraction
- Quality pattern detection for positive and negative trends
- Analysis of Flask, Django, and other open-source repositories
- Identification of quality engineering signatures in successful projects
- Demonstrated that temporal analysis provides insights unavailable to static tools
- Established temporal intelligence as a viable analytical approach
- Historical analysis yields information inaccessible to point-in-time evaluation
- Deliberate complexity reduction patterns are observable in mature projects
- Quality decay forecasting is feasible from temporal data
- Approach validated as suitable for production AI agent platform