fix: resolve SQLite parameter mismatch and implement robust GitHub API rate limiting
-
Fixed SQLite error "expected 37133 values, received 102669" when mirroring large numbers of starred repos (fixes #90)
- Added missing fields to GitRepo interface: language, description, mirroredLocation, destinationOrg
- Added missing organization fields: publicRepositoryCount, privateRepositoryCount, forkRepositoryCount
- Ensured all database insert operations include all required fields
-
Implemented comprehensive GitHub API rate limit handling:
- Integrated @octokit/plugin-throttling for automatic retry with exponential backoff
- Added RateLimitManager service to track and enforce rate limits
- Store rate limit status in database for persistence across restarts
- Automatic pause and resume when limits are exceeded
- Proper user identification for 5000 req/hr authenticated limit (vs 60 unauthenticated)
-
Improved rate limit UI/UX:
- Removed intrusive rate limit card from dashboard
- Toast notifications only at critical thresholds (80% and 100% usage)
- All rate limit events logged for debugging
-
Optimized for GitHub's API constraints:
- Reduced default batch size from 10 to 5 repositories
- Added documentation about GitHub's 100 concurrent request limit
- Better handling of repositories with many issues/PRs