database
backend
frontend
auth
Allow a project changelog to track multiple GitHub repositories
- Multi-repository changelogs via a new project_repos table — A project is now a repo-agnostic changelog that can aggregate commits from many GitHub repositories. A new project_repos join table stores per-repo settings (installation, branch, sync status) and a migration back-filled existing projects before removing single-repo columns.
Breaking schema change
- Removed per-repo columns from projects (github_installation_id, repo_owner, repo_name, tracked_branch, available_branches, sync_status, last_synced_at, last_sync_error); these now live on the new project_repos table and were back-filled by migration 011_project_repos.sql.database
API changes
- Added endpoints to manage linked repositories: GET/POST /v1/projects/:id/repos and DELETE /v1/projects/:id/repos/:repoId.backend
- Project creation now creates a project_repos row for the initial repo and sync events include projectRepoId so each linked repo is synced individually.backend
- Resync now queues one repo/sync.requested event per linked repository instead of a single project-level sync.backend
Web app
- Added a Repositories section to Project Settings to list, add, and remove linked repos; added client routes and hooks to call the new API.frontend
- Updated project list, cards, switcher, and project layout to show the primary linked repo (ProjectRepoRow) and its sync/branch state.frontend
- Prevented removing the last repo for a project in the UI; repo removal unlinks the repo but preserves commits and changelog history.frontend
Sync & processing
- Updated GitHub webhook handling to look up project_repos and fan out one github/push.received event per linked repo (events now include projectRepoId and trackedBranch).backend
- Moved sync status and branch filtering to project_repos: Inngest functions (sync-repo, github-process-push, github-sync-all-commits) now read/write per-repo state and use projectRepoId in events.backend
Database & migrations
- Created the project_repos join table (project → many repos) with proper indexes, constraints, and row-level policies; migration back-filled existing project repo data before dropping old columns.database
Tests & reliability
- Added unit tests for ProjectRepoRepository and sync-repo, and updated API and webhook tests to assert fan-out and projectRepoId propagation.backend