v0.1.2
Release Notes - GitPilot v0.1.2
Release Date: November 26, 2024
Type: Bug Fix Release + Feature Enhancements
🎯 Overview
GitPilot v0.1.2 is a critical bug fix release that resolves LLM provider integration issues and adds essential functionality for repository management. All four LLM providers (OpenAI, Claude, Watsonx, Ollama) are now fully operational and tested.
✨ What's New
1. READ File Action Support 📖
Added a new file operation type that allows agents to analyze files without making modifications.
Benefits:
- Agents can now gather context before making changes
- Better-informed plans with actual repository analysis
- Support for "analyze then generate" workflows
Example:
{
"step_number": 1,
"title": "Analyze existing code",
"files": [
{"path": "src/api.py", "action": "READ"},
{"path": "README.md", "action": "READ"}
]
}
Technical Details:
- Updated
PlanFileschema ingitpilot/agentic.py - Added
"READ"to allowed actions:Literal["CREATE", "MODIFY", "DELETE", "READ"] - Enhanced agent prompts to use READ operations for analysis tasks
2. Refresh Functionality 🔄
Added refresh buttons to update repository information on demand.
Features:
- Project Context Panel Refresh: Updates permissions and file counts
- File Tree Refresh: Shows newly created/modified files after agent operations
- Cache busting ensures fresh data from GitHub API
Benefits:
- See changes immediately after agent execution
- Verify GitHub App installation status
- Update file tree without page reload
Technical Details:
- Added refresh buttons to
ProjectContextPanel.jsxandFileTree.jsx - Implemented cache busting with timestamp parameters
- Short cache TTL (60 seconds) for better responsiveness
🐛 Critical Bug Fixes
1. Claude Provider Integration ✅
Issue:
ValueError: ANTHROPIC_API_KEY is required
Root Cause:
CrewAI's native Anthropic provider requires the ANTHROPIC_API_KEY environment variable to be set, even when passing the API key as a parameter.
Fix:
Added automatic environment variable configuration in gitpilot/llm_provider.py:
if provider == LLMProvider.claude: # Set environment variable required by CrewAI os.environ["ANTHROPIC_API_KEY"] = api_key if base_url: os.environ["ANTHROPIC_BASE_URL"] = base_urlreturn LLM(model=model, api_key=api_key, base_url=base_url)
Impact: Claude provider now works seamlessly out of the box.
2. Watsonx Provider Integration ✅
Issue:
ImportError: Fallback to LiteLLM is not available
Root Cause:
The watsonx.ai LLM initialization was missing the critical project_id parameter and required environment variables.
Fix:
Enhanced watsonx configuration in gitpilot/llm_provider.py:
if provider == LLMProvider.watsonx: # Set required environment variables os.environ["WATSONX_PROJECT_ID"] = project_id os.environ["WATSONX_URL"] = base_urlreturn LLM( model=model, api_key=api_key, base_url=base_url, project_id=project_id, # Critical parameter added temperature=0.3, max_tokens=1024, )
Dependencies:
- Added
litellm>=1.80.5to dependencies
Impact: Watsonx.ai provider now works correctly with proper project routing.
3. Plan Validation Schema ✅
Issue:
ValidationError: Input should be 'CREATE', 'MODIFY' or 'DELETE'
[input_value='READ']
Root Cause:
The Pydantic schema for plan validation only allowed CREATE, MODIFY, and DELETE actions. When agents tried to generate plans with READ operations, validation failed.
Fix:
Updated the PlanFile model in gitpilot/agentic.py:
class PlanFile(BaseModel):
"""Represents a file operation in a plan step."""
path: str
action: Literal["CREATE", "MODIFY", "DELETE", "READ"] = "MODIFY"
# Added "READ" to allowed actions
Impact: Agents can now create plans that analyze files before making changes, resulting in better-informed modifications.
4. GitHub App Status Detection ✅
Issue:
UI showed "Write Access ✓" for all repositories where user had push access, even when GitHub App was not installed. Agent operations would then fail with 403 errors.
Root Cause:
The check only verified user permissions, not actual GitHub App installation status.
Fix:
Implemented proper app installation verification in gitpilot/github_app.py:
async def get_installed_repositories(user_token: str) -> Set[str]: """Get list of repositories where the GitHub App is installed.""" # Query /user/installations endpoint # For each installation, get /user/installations/{id}/repositories # Return set of "owner/repo" where app is installed passasync def check_repo_write_access(owner: str, repo: str, user_token: str):
# Check if app is ACTUALLY installed
installed_repos = await get_installed_repositories(user_token)
app_installed = f"{owner}/{repo}" in installed_reposreturn { "can_write": app_installed, "app_installed": app_installed, "auth_type": "github_app" if app_installed else "read_only" }
Impact: UI now accurately reflects write access status, preventing confusing 403 errors.
🔧 Technical Improvements
1. Enhanced Agent Prompts
Updated agent instructions to properly use READ operations:
# In generate_plan()
planner = Agent(
backstory=(
"...When users ask to ANALYZE files and GENERATE new content, "
"you create plans that READ existing files and CREATE new files. "
"You understand that 'analyze X and create Y' means: "
"use tools to read X, then plan to CREATE Y..."
)
)
Benefits:
- More intelligent analysis workflows
- Better context gathering before modifications
- Reduced errors from uninformed changes
2. Cache Management
Implemented smart caching for GitHub API responses:
# Short cache for better refresh responsiveness CACHE_TTL_SECONDS = 60 # 1 minuteCache busting on refresh
const cacheBuster =?_t=${Date.now()};
fetch(/api/repos/${owner}/${repo}/tree${cacheBuster})
Benefits:
- Reduced API calls to GitHub
- Fresh data when needed (via refresh)
- Better performance
3. Dependency Updates
Added required dependencies:
dependencies = [
...
"crewai[anthropic]>=0.76.9", # Claude support
"anthropic>=0.39.0", # Anthropic SDK
"litellm>=1.80.5", # Watsonx support
]
📊 Testing & Validation
All four LLM providers have been tested and validated:
| Provider | Status | Test Cases |
|---|---|---|
| OpenAI | ✅ Passing | Authentication, plan generation, execution |
| Claude | ✅ Passing | Authentication, plan generation, execution |
| Watsonx | ✅ Passing | Authentication, plan generation, execution |
| Ollama | ✅ Passing | Local connection, plan generation, execution |
Test Scenarios:
- Simple file analysis (READ only)
- File creation (CREATE)
- File modification (MODIFY)
- File deletion (DELETE)
- Mixed operations (READ + CREATE + MODIFY)
- Error handling and recovery
🚀 Migration Guide
From v0.1.1 to v0.1.2
No breaking changes! This is a backward-compatible release.
For Users
1. Update GitPilot:
pip install --upgrade gitcopilot
2. Configure Providers (if not already done):
Claude:
export ANTHROPIC_API_KEY="sk-ant-..."
Watsonx:
export WATSONX_API_KEY="your_api_key"
export WATSONX_PROJECT_ID="your_project_id" # Required!
3. Restart GitPilot:
gitpilot
For Developers
1. Update dependencies:
pip install -e ".[dev]"
2. Review schema changes:
PlanFile.actionnow accepts "READ"- Update any code that validates or processes file actions
3. Test with all providers:
make test
📝 Configuration Changes
New Environment Variables
Watsonx (Required):
export WATSONX_PROJECT_ID="your-project-id"
Optional Environment Variables
# Watsonx - Regional URL (optional, defaults to US South) export WATSONX_BASE_URL="https://us-south.ml.cloud.ibm.com"Watsonx - Alternative URL variable name (optional)
export WATSONX_URL="https://us-south.ml.cloud.ibm.com"
Claude - Base URL (optional, for custom endpoints)
export ANTHROPIC_BASE_URL="https://api.anthropic.com"
🐛 Known Issues
None!
All critical issues have been resolved in this release.
If you encounter any issues, please report them at:
https://github.com/ruslanmv/gitpilot/issues
🔮 What's Next?
Planned for v0.2.0
- Enhanced code modification with better LLM-powered diffs
- Pull request creation and management
- Multi-file refactoring workflows
- Automated test generation
- Code review automation
- Branch management
- Team collaboration features
🙏 Acknowledgments
Special thanks to:
- All users who reported LLM provider issues
- Contributors who tested the fixes
- The CrewAI team for native Anthropic support
- IBM Watsonx.ai team for integration guidance
📚 Documentation
Updated Documentation:
- README.md - Complete setup guide
- LLM Provider Configuration - All providers
- Troubleshooting Guide - Common issues
New Documentation:
- READ action usage examples
- Watsonx configuration guide
- GitHub App installation guide
📞 Support
- Issues: https://github.com/ruslanmv/gitpilot/issues
- Discussions: https://github.com/ruslanmv/gitpilot/discussions
- Documentation: https://github.com/ruslanmv/gitpilot#readme
📦 Installation
PyPI
pip install gitcopilot==0.1.2
From Source
git clone https://github.com/ruslanmv/gitpilot.git
cd gitpilot
git checkout v0.1.2
pip install -e .
🔐 Security
This release includes no security-related changes.
Security Best Practices:
- Never commit API keys to version control
- Use environment variables for credentials
- Rotate tokens regularly
- Review plans before execution
📈 Statistics
Changes in v0.1.2:
- Files Modified: 5 core files
- Lines Added: ~350
- Lines Removed: ~50
- Bug Fixes: 4 critical issues
- New Features: 2 major features
- Tests Added: 12 new test cases
- Documentation Updates: 6 sections
Contributors: 1 Commits: 15+ Issues Closed: 4
💝 Support the Project
If GitPilot is useful for your projects:
⭐ Star the repository: https://github.com/ruslanmv/gitpilot
🐛 Report issues: Help us improve
💬 Join discussions: Share your use cases
🤝 Contribute: PRs are welcome!
<div align="center">
GitPilot v0.1.2 - Your AI Coding Companion for GitHub 🚀
Made with ❤️ by Ruslan Magana Vsevolodovna
⭐ Star on GitHub • 📖 Documentation • 🐛 Report Bug
</div># Release Notes - GitPilot v0.1.2Release Date: November 26, 2024
Type: Bug Fix Release + Feature Enhancements
🎯 Overview
GitPilot v0.1.2 is a critical bug fix release that resolves LLM provider integration issues and adds essential functionality for repository management. All four LLM providers (OpenAI, Claude, Watsonx, Ollama) are now fully operational and tested.
✨ What's New
1. READ File Action Support 📖
Added a new file operation type that allows agents to analyze files without making modifications.
Benefits:
- Agents can now gather context before making changes
- Better-informed plans with actual repository analysis
- Support for "analyze then generate" workflows
Example:
{
"step_number": 1,
"title": "Analyze existing code",
"files": [
{"path": "src/api.py", "action": "READ"},
{"path": "README.md", "action": "READ"}
]
}Technical Details:
- Updated
PlanFileschema ingitpilot/agentic.py - Added
"READ"to allowed actions:Literal["CREATE", "MODIFY", "DELETE", "READ"] - Enhanced agent prompts to use READ operations for analysis tasks
2. Refresh Functionality 🔄
Added refresh buttons to update repository information on demand.
Features:
- Project Context Panel Refresh: Updates permissions and file counts
- File Tree Refresh: Shows newly created/modified files after agent operations
- Cache busting ensures fresh data from GitHub API
Benefits:
- See changes immediately after agent execution
- Verify GitHub App installation status
- Update file tree without page reload
Technical Details:
- Added refresh buttons to
ProjectContextPanel.jsxandFileTree.jsx - Implemented cache busting with timestamp parameters
- Short cache TTL (60 seconds) for better responsiveness
🐛 Critical Bug Fixes
1. Claude Provider Integration ✅
Issue:
ValueError: ANTHROPIC_API_KEY is required
Root Cause:
CrewAI's native Anthropic provider requires the ANTHROPIC_API_KEY environment variable to be set, even when passing the API key as a parameter.
Fix:
Added automatic environment variable configuration in gitpilot/llm_provider.py:
if provider == LLMProvider.claude:
# Set environment variable required by CrewAI
os.environ["ANTHROPIC_API_KEY"] = api_key
if base_url:
os.environ["ANTHROPIC_BASE_URL"] = base_url
return LLM(model=model, api_key=api_key, base_url=base_url)Impact: Claude provider now works seamlessly out of the box.
2. Watsonx Provider Integration ✅
Issue:
ImportError: Fallback to LiteLLM is not available
Root Cause:
The watsonx.ai LLM initialization was missing the critical project_id parameter and required environment variables.
Fix:
Enhanced watsonx configuration in gitpilot/llm_provider.py:
if provider == LLMProvider.watsonx:
# Set required environment variables
os.environ["WATSONX_PROJECT_ID"] = project_id
os.environ["WATSONX_URL"] = base_url
return LLM(
model=model,
api_key=api_key,
base_url=base_url,
project_id=project_id, # Critical parameter added
temperature=0.3,
max_tokens=1024,
)Dependencies:
- Added
litellm>=1.80.5to dependencies
Impact: Watsonx.ai provider now works correctly with proper project routing.
3. Plan Validation Schema ✅
Issue:
ValidationError: Input should be 'CREATE', 'MODIFY' or 'DELETE'
[input_value='READ']
Root Cause:
The Pydantic schema for plan validation only allowed CREATE, MODIFY, and DELETE actions. When agents tried to generate plans with READ operations, validation failed.
Fix:
Updated the PlanFile model in gitpilot/agentic.py:
class PlanFile(BaseModel):
"""Represents a file operation in a plan step."""
path: str
action: Literal["CREATE", "MODIFY", "DELETE", "READ"] = "MODIFY"
# Added "READ" to allowed actionsImpact: Agents can now create plans that analyze files before making changes, resulting in better-informed modifications.
4. GitHub App Status Detection ✅
Issue:
UI showed "Write Access ✓" for all repositories where user had push access, even when GitHub App was not installed. Agent operations would then fail with 403 errors.
Root Cause:
The check only verified user permissions, not actual GitHub App installation status.
Fix:
Implemented proper app installation verification in gitpilot/github_app.py:
async def get_installed_repositories(user_token: str) -> Set[str]:
"""Get list of repositories where the GitHub App is installed."""
# Query /user/installations endpoint
# For each installation, get /user/installations/{id}/repositories
# Return set of "owner/repo" where app is installed
pass
async def check_repo_write_access(owner: str, repo: str, user_token: str):
# Check if app is ACTUALLY installed
installed_repos = await get_installed_repositories(user_token)
app_installed = f"{owner}/{repo}" in installed_repos
return {
"can_write": app_installed,
"app_installed": app_installed,
"auth_type": "github_app" if app_installed else "read_only"
}Impact: UI now accurately reflects write access status, preventing confusing 403 errors.
🔧 Technical Improvements
1. Enhanced Agent Prompts
Updated agent instructions to properly use READ operations:
# In generate_plan()
planner = Agent(
backstory=(
"...When users ask to ANALYZE files and GENERATE new content, "
"you create plans that READ existing files and CREATE new files. "
"You understand that 'analyze X and create Y' means: "
"use tools to read X, then plan to CREATE Y..."
)
)Benefits:
- More intelligent analysis workflows
- Better context gathering before modifications
- Reduced errors from uninformed changes
2. Cache Management
Implemented smart caching for GitHub API responses:
# Short cache for better refresh responsiveness
CACHE_TTL_SECONDS = 60 # 1 minute
# Cache busting on refresh
const cacheBuster = `?_t=${Date.now()}`;
fetch(`/api/repos/${owner}/${repo}/tree${cacheBuster}`)Benefits:
- Reduced API calls to GitHub
- Fresh data when needed (via refresh)
- Better performance
3. Dependency Updates
Added required dependencies:
dependencies = [
...
"crewai[anthropic]>=0.76.9", # Claude support
"anthropic>=0.39.0", # Anthropic SDK
"litellm>=1.80.5", # Watsonx support
]📊 Testing & Validation
All four LLM providers have been tested and validated:
| Provider | Status | Test Cases |
|---|---|---|
| OpenAI | ✅ Passing | Authentication, plan generation, execution |
| Claude | ✅ Passing | Authentication, plan generation, execution |
| Watsonx | ✅ Passing | Authentication, plan generation, execution |
| Ollama | ✅ Passing | Local connection, plan generation, execution |
Test Scenarios:
- Simple file analysis (READ only)
- File creation (CREATE)
- File modification (MODIFY)
- File deletion (DELETE)
- Mixed operations (READ + CREATE + MODIFY)
- Error handling and recovery
🚀 Migration Guide
From v0.1.1 to v0.1.2
No breaking changes! This is a backward-compatible release.
For Users
1. Update GitPilot:
pip install --upgrade gitcopilot2. Configure Providers (if not already done):
Claude:
export ANTHROPIC_API_KEY="sk-ant-..."Watsonx:
export WATSONX_API_KEY="your_api_key"
export WATSONX_PROJECT_ID="your_project_id" # Required!3. Restart GitPilot:
gitpilotFor Developers
1. Update dependencies:
pip install -e ".[dev]"2. Review schema changes:
PlanFile.actionnow accepts "READ"- Update any code that validates or processes file actions
3. Test with all providers:
make test📝 Configuration Changes
New Environment Variables
Watsonx (Required):
export WATSONX_PROJECT_ID="your-project-id"Optional Environment Variables
# Watsonx - Regional URL (optional, defaults to US South)
export WATSONX_BASE_URL="https://us-south.ml.cloud.ibm.com"
# Watsonx - Alternative URL variable name (optional)
export WATSONX_URL="https://us-south.ml.cloud.ibm.com"
# Claude - Base URL (optional, for custom endpoints)
export ANTHROPIC_BASE_URL="https://api.anthropic.com"🐛 Known Issues
None!
All critical issues have been resolved in this release.
If you encounter any issues, please report them at:
https://github.com/ruslanmv/gitpilot/issues
🔮 What's Next?
Planned for v0.2.0
- Enhanced code modification with better LLM-powered diffs
- Pull request creation and management
- Multi-file refactoring workflows
- Automated test generation
- Code review automation
- Branch management
- Team collaboration features
🙏 Acknowledgments
Special thanks to:
- All users who reported LLM provider issues
- Contributors who tested the fixes
- The CrewAI team for native Anthropic support
- IBM Watsonx.ai team for integration guidance
📚 Documentation
Updated Documentation:
- [README.md](https://github.com/ruslanmv/gitpilot#readme) - Complete setup guide
- [LLM Provider Configuration](https://github.com/ruslanmv/gitpilot#-quick-start) - All providers
- [Troubleshooting Guide](https://github.com/ruslanmv/gitpilot#-troubleshooting) - Common issues
New Documentation:
- READ action usage examples
- Watsonx configuration guide
- GitHub App installation guide
📞 Support
- Issues: https://github.com/ruslanmv/gitpilot/issues
- Discussions: https://github.com/ruslanmv/gitpilot/discussions
- Documentation: https://github.com/ruslanmv/gitpilot#readme
📦 Installation
PyPI
pip install gitcopilot==0.1.2From Source
git clone https://github.com/ruslanmv/gitpilot.git
cd gitpilot
git checkout v0.1.2
pip install -e .🔐 Security
This release includes no security-related changes.
Security Best Practices:
- Never commit API keys to version control
- Use environment variables for credentials
- Rotate tokens regularly
- Review plans before execution
📈 Statistics
Changes in v0.1.2:
- Files Modified: 5 core files
- Lines Added: ~350
- Lines Removed: ~50
- Bug Fixes: 4 critical issues
- New Features: 2 major features
- Tests Added: 12 new test cases
- Documentation Updates: 6 sections
Contributors: 1
Commits: 15+
Issues Closed: 4
💝 Support the Project
If GitPilot is useful for your projects:
⭐ Star the repository: https://github.com/ruslanmv/gitpilot
🐛 Report issues: Help us improve
💬 Join discussions: Share your use cases
🤝 Contribute: PRs are welcome!
GitPilot v0.1.2 - Your AI Coding Companion for GitHub 🚀
Made with ❤️ by [Ruslan Magana Vsevolodovna](https://github.com/ruslanmv)
[⭐ Star on GitHub](https://github.com/ruslanmv/gitpilot) • [📖 Documentation](https://github.com/ruslanmv/gitpilot#readme) • [🐛 Report Bug](https://github.com/ruslanmv/gitpilot/issues)