Skip to content

Conversation

@xenonwellz
Copy link

Summary

This PR implements comprehensive project support through a provider-based architecture, enabling users to work with projects from multiple sources. The initial implementation focuses on GitHub integration while establishing the foundation for additional providers. Fixes #10104

Key Features Added

🏗️ Provider-Based Architecture

  • Provider abstraction system: Unified interface for different project sources
  • Extensible provider registry: Easy to add new project providers
  • Provider-specific UI components: Custom interfaces for different provider types

🔐 GitHub Provider (Primary Implementation)

  • Repository browsing: Direct access to GitHub repositories with search and pagination
  • Secure authentication: Support for both classic and fine-grained GitHub tokens
  • Branch management: Select branches with protection status indicators
  • Automatic cloning: Streamlined repository setup with working branch creation
  • Project metadata tracking: Store GitHub-specific project information and PR data

📁 Enhanced Local Project Support

  • Unified project selection: Consolidated directory and provider selection
  • Improved file operations: Enhanced file search and directory listing APIs
  • Better navigation: Enhanced directory browsing with search capabilities

🎨 User Interface Enhancements

  • Redesigned project opening flow: Provider selection before project browsing
  • GitHub-specific dialogs: Repository selection, branch choosing, and authentication setup
  • Comprehensive internationalization: Support for all new features across languages
  • Git actions integration: Repository operations available in the prompt interface

Technical Implementation

Backend Changes:

  • Provider routes: New /github/* routes for GitHub operations
  • GitHub key management: Secure token storage with Zod validation
  • Enhanced file routes: Improved /search/file and /find/file endpoints
  • Git operations: GitHub API integration with Octokit

Frontend Changes:

  • Provider context system: GitHubProjectsProvider for project metadata management
  • Unified project dialogs: DialogSelectProject replacing DialogSelectDirectory
  • Provider-specific components: GitHub repository and branch selection UIs
  • Updated application structure: Provider providers integrated into app context

Security Implementation:

  • Encrypted token storage with restricted file permissions (0o600)
  • Token validation with proper error handling
  • Secure API communication with GitHub

Breaking Changes

  • DialogSelectDirectory component removed in favor of provider-based DialogSelectProject
  • File search API endpoint changed from find.files to search.files for consistency
  • Project opening flow now includes mandatory provider selection step

Future Extensibility

This implementation establishes the foundation for additional project providers:

  • GitLab integration: Similar API-based repository access
  • Bitbucket support: Atlassian repository integration
  • Cloud storage providers: AWS S3, Google Drive, etc.
  • Enterprise Git solutions: Self-hosted GitLab, Gitea, etc.
  • Archive/project imports: Support for ZIP files, exported projects

The provider architecture makes it straightforward to add new project sources while maintaining a consistent user experience.

Testing

Comprehensive error handling covers:

  • Authentication failures: Invalid or expired tokens
  • Network issues: Connectivity problems and API rate limits
  • Repository access: Permission and visibility restrictions
  • Git operations: Clone failures and branch conflicts
  • File system operations: Permission and disk space issues

All new UI components include full internationalization support and responsive design.

…and GitHub integration

feat: Add extensive project support with provider-based architecture and GitHub integration

- Implement provider-based project system enabling multi-source project opening
- Add GitHub integration with secure token management and repository cloning
- Create unified DialogSelectProject component replacing DialogSelectDirectory
- Add GitHub key management with encrypted storage (0o600 permissions)
- Implement GitHub API integration with Octokit for repo/branch browsing
- Add GitHub project metadata tracking and context management
- Update file search APIs from find.files to search.files for consistency
- Add comprehensive internationalization for all new project features
- Include Git actions integration in prompt interface
- Establish foundation for future providers (GitLab, Bitbucket, cloud storage)
@github-actions
Copy link
Contributor

Hey! Your PR title PR Description: Add Extensive Project Support with GitHub Integration doesn't follow conventional commit format.

Please update it to start with one of:

  • feat: or feat(scope): new feature
  • fix: or fix(scope): bug fix
  • docs: or docs(scope): documentation changes
  • chore: or chore(scope): maintenance tasks
  • refactor: or refactor(scope): code refactoring
  • test: or test(scope): adding or updating tests

Where scope is the package name (e.g., app, desktop, opencode).

See CONTRIBUTING.md for details.

@github-actions
Copy link
Contributor

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found

@xenonwellz xenonwellz changed the title PR Description: Add Extensive Project Support with GitHub Integration Feat: Add Extensive Project Support with GitHub Integration Jan 22, 2026
@xenonwellz xenonwellz changed the title Feat: Add Extensive Project Support with GitHub Integration feat (app): Add Extensive Project Support with GitHub Integration Jan 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]: Add Extensive Project Support

1 participant