Skip to content

Conversation

@MujahidAbbas
Copy link
Owner

Summary

  • Add complete GitHub Issues integration with two-way sync between tasks and issues
  • Implement OAuth flow for connecting repositories to projects
  • Add debounced queue-based sync with rate limiting support
  • Create Integrations tab in project workspace for managing connections
  • Support webhooks for real-time updates from GitHub

Changes

  • Models: Integration, ExternalLink, SyncRun with proper relationships
  • Services: GitHubApiService, GitHubAuthService, GitHubSyncService, TaskToIssueMapper
  • Jobs: SyncTaskToGitHub, DebouncedGitHubSync, CheckSyncRunCompletion
  • UI: Integrations tab with connect/disconnect flow and sync status indicators
  • Tests: Comprehensive test coverage for sync, webhooks, and queue processing

Test plan

  • Verify OAuth flow connects repository successfully
  • Test manual sync exports tasks to GitHub issues
  • Verify webhook updates sync back to tasks
  • Test auto-sync triggers on task changes
  • Run full test suite: php artisan test

gitbutler-client and others added 2 commits January 5, 2026 23:25
This is a merge commit the virtual branches in your workspace.

Due to GitButler managing multiple virtual branches, you cannot switch back and
forth between git branches and virtual branches easily. 

If you switch to another branch, GitButler will need to be reinitialized.
If you commit on this branch, GitButler will throw it away.

Here are the branches that are currently applied:
 - feature/github-issues-export (refs/gitbutler/feature/github-issues-export)
   - database/factories/ExternalLinkFactory.php
   - app/Livewire/Projects/Workspace.php
   - resources/views/integrations/github/select-repo.blade.php
   - database/migrations/2026_01_02_081825_create_sync_runs_table.php
   - app/Enums/SyncRunStatus.php
   - .gitignore
   - app/Jobs/GenerateTasksJob.php
   - composer.lock
   - app/Services/GitHub/GitHubAuthService.php
   - app/Exceptions/GitHubRateLimitException.php
   - app/Services/GitHub/TaskToIssueMapper.php
   - phpunit.xml
   - config/services.php
   - app/Enums/ExternalLinkSyncStatus.php
   - app/Services/GitHub/GitHubSyncService.php
   - app/Enums/IntegrationProvider.php
   - app/Models/Integration.php
   - app/Models/Task.php
   - .env.testing
   - database/factories/SyncRunFactory.php
   - app/Services/GitHub/GitHubRateLimiter.php
   - app/Listeners/QueueGitHubSync.php
   - database/migrations/2026_01_02_081824_create_integrations_table.php
   - app/Models/ExternalLink.php
   - app/Jobs/CheckSyncRunCompletion.php
   - app/Enums/IntegrationStatus.php
   - app/Models/Project.php
   - database/migrations/2026_01_02_081825_create_external_links_table.php
   - tests/Feature/GitHubWebhookTest.php
   - composer.json
   - database/factories/IntegrationFactory.php
   - app/Services/GitHub/GitHubApiService.php
   - resources/views/components/layouts/app.blade.php
   - app/Jobs/DebouncedGitHubSync.php
   - app/Models/SyncRun.php
   - app/Exceptions/GitHubAuthException.php
   - resources/views/livewire/projects/tabs/integrations.blade.php
   - app/Jobs/SyncTaskToGitHub.php
   - app/Events/TasksChanged.php
   - app/Providers/AppServiceProvider.php
   - app/Exceptions/GitHubApiException.php
   - tests/Pest.php
   - app/Http/Controllers/GitHubIntegrationController.php
   - tests/Feature/GitHubSyncTest.php
   - app/Livewire/Projects/Tabs/Integrations.php
   - tests/Feature/GitHubAutoSyncTest.php
   - tests/Feature/GitHubSyncQueueTest.php
   - routes/web.php
   - resources/views/livewire/projects/workspace.blade.php
   - app/Http/Controllers/GitHubWebhookController.php
For more information about what we're doing here, check out our docs:
https://docs.gitbutler.com/features/branch-management/integration-branch
- Add Integration, ExternalLink, and SyncRun models with migrations
- Implement GitHub OAuth flow for repository connection
- Add two-way sync: tasks to GitHub issues and webhooks for issue updates
- Create Integrations tab in project workspace UI
- Implement debounced sync with queue-based processing
- Add comprehensive test coverage for sync functionality
- Support sync status tracking per task with visual indicators
@MujahidAbbas MujahidAbbas merged commit cbb33c1 into main Jan 6, 2026
1 of 2 checks passed
@MujahidAbbas MujahidAbbas deleted the feature/github-sync branch January 6, 2026 09:12
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.

3 participants