Skip to content

v0.1.2

Choose a tag to compare

@ruslanmv ruslanmv released this 26 Nov 22:48

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 PlanFile schema in gitpilot/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.jsx and FileTree.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.5 to 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
    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 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.action now 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:

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.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 PlanFile schema in gitpilot/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.jsx and FileTree.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.5 to 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
    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 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.action now 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:

New Documentation:

  • READ action usage examples
  • Watsonx configuration guide
  • GitHub App installation guide

📞 Support


📦 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!