Repository navigation
fix: restore GitHub access onboarding for empty repository lists - #53
Merged
Merged
Conversation
Resume and refresh the repository catalog after installation even when no repository was selected, so first-time users can grant access and continue onboarding.
Protect the empty repository picker path with session and tenant checks before an installation intent can be created, including installation without a selected repository.
Provide the authenticated installer an absolute project return target, mount the Repo tab for legacy callbacks, and preserve the chosen branch when resuming. Cover the real project page and refreshed catalog flow.
The connect-repo conflict response points to the frontend installer rather than GitHub directly. Allow that exact same-origin endpoint for the current project while rejecting foreign origins, paths, duplicate project parameters, and userinfo; exercise the actual backend response shape.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When GitHub returns no accessible repositories, the connection picker now offers Configure GitHub Access and Refresh Repositories. The access action uses the authenticated project-scoped install flow and returns to the project's Repo tab.
Installation callbacks now reopen the picker without a prior selection and refresh even a fresh cached empty repository list. Selected-repository/409 recovery preserves the chosen branch and now validates the backend’s real same-origin installer URL against the exact origin, endpoint, and project; foreign origins, paths, projects, duplicate parameters, and credentials are rejected. The project page also mounts Repo for legacy callbacks that omit a tab, and callback cleanup preserves that tab.
Validation: frontend empty/error/retry, cache refresh, selected-repository/409 recovery, and real project-tab callback tests; backend unauthenticated/foreign-project rejection and owned-project installation without repository selection. Local validation passed: 182 frontend tests, types, lint (two unrelated warnings tracked as MCP-15), Next 16.3.6 build, 217 Swift tests, and Swift release build with warnings treated as errors. Hosted CI runs on the final head. Development deployment and authenticated browser acceptance will be recorded after merging to dev, before Production promotion.
No permission scope or backend production behavior changes. GitHub still controls which repositories the user grants access to.
Closes #38. Linear: MCP-13.