feat(github): support per-workspace GitHub App registrations#1810
feat(github): support per-workspace GitHub App registrations#1810carlosflorencio wants to merge 1 commit into
Conversation
|
Too many files changed for review. ( Bypass the limit by tagging |
|
Important Review skippedToo many files! This PR contains 343 files, which is 243 over the limit of 100. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (343)
You can disable this status message by setting the ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Claude finished @carlosflorencio's task in 7m 27s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Review complete. Full findings posted below. 3 blockers, 2 suggestions. Blockers:
Suggestions: The architecture itself is well-designed: PKCE/state-digest OAuth flow, generation-keyed cache invalidation, scope-binding in the credential broker, and safe |
Cloudflare Pages docs previewBuilt from docs commit Stable PR alias: https://docs-pr-1810.landing-87j.pages.dev/docs |
FindingsBlocker (must fix before merge)
Suggestion (recommended, doesn't block)
What looks good
Summary
Verdict: Blocked — fix blockers first. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cc4183b482
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude finished @carlosflorencio's task in 5m 32s —— View job PR Review: feat: add workspace-scoped GitHub authentication
FindingsBlocker (must fix before merge)
Suggestion (recommended, doesn't block)
What looks good
Summary
Verdict: Blocked — fix the three blockers. The architecture and security properties of the new auth layer are solid; the issues are all in the operational plumbing wired around it. |
|
Claude finished @carlosflorencio's task in 5m 12s —— View job PR Review: feat: add workspace-scoped GitHub authentication
FindingsAll 6 prior blockers are resolved. One earlier suggestion remains open. Prior blockers — verified fixed
Suggestion (still open)
Summary
Verdict: Ready to merge — all blockers resolved. The config-dir cleanup suggestion is low-risk for cloud/container deployments; address it whenever convenient for local-executor users. |
|
Claude finished @carlosflorencio's task in 1m 17s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Summary of
|
| Round | Blockers | Suggestions |
|---|---|---|
| Initial review | 3 | 2 |
After 9e0589b |
0 | 2 |
After 9ffbd25 |
0 | 1 |
After 4066e54 |
0 | 0 |
Verdict: ready to merge. All blockers and suggestions are resolved.
4066e54 to
5e22fa4
Compare
|
Claude finished @carlosflorencio's task in 2m 45s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
Verdict: ready to merge.
|
Claude finished @carlosflorencio's task in 2m 35s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
Verdict: ready to merge. No blockers. The test fix is correct; the overlap-helper duplication is minor cleanup for whenever convenient.
|
Claude finished @carlosflorencio's task in 1m 53s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
Verdict: ready to merge. All blockers and suggestions are resolved. The final commit is a correct mechanical extraction with no behavioral change.
|
Claude finished @carlosflorencio's task in 2m 40s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
Verdict: ready to merge. The two new commits fix a race condition in the concurrent-launch test and introduce no production changes. All prior blockers and suggestions remain resolved.
|
Claude finished @carlosflorencio's task in 1m 43s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
Verdict: ready to merge. The commit is a minimal, correct compatibility shim that makes legacy branch-fixture callers work under the new workspace-scoped auth model. All prior blockers and suggestions remain resolved.
|
Claude finished @carlosflorencio's task in 1s —— View job I'll analyze this and get back to you. |
|
Claude finished @carlosflorencio's task in 4m 14s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
Verdict: ready to merge. No blockers. The UX refactoring is clean — the dialog extraction removes visual complexity from the settings page without regressions in behavior or coverage. The loading flash suggestion is low-risk to fix or defer.
|
Claude finished @carlosflorencio's task in 1m 48s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 |
Verdict: ready to merge. The merge commit is clean — conflict resolved correctly, no semantic regressions, all prior blockers resolved.
|
Claude finished @carlosflorencio's task in 1s —— View job I'll analyze this and get back to you. |
|
Claude finished @carlosflorencio's task in 0s —— View job I'll analyze this and get back to you. |
|
Claude finished @carlosflorencio's task in 6m 27s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 — ready to merge |
| Round 12 | 1e3e058 |
0 | 1 |
Verdict: ready to merge. No blockers. The guided App setup feature is well-implemented — state hash security, single-use consumption, policy validation, and lock ordering are all correct. The health-update error joining is a low-risk suggestion to address whenever convenient.
|
Claude finished @carlosflorencio's task in 1m 35s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 — ready to merge |
| Round 12 | 1e3e058 |
0 | 1 |
| Round 13 | b6a17cc |
0 | 0 |
Verdict: ready to merge. All blockers and suggestions are resolved. The final commit is a minimal, correct fix with targeted regression coverage.
|
Claude finished @carlosflorencio's task in 3m 59s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 — ready to merge |
| Round 12 | 1e3e058 |
0 | 1 |
| Round 13 | b6a17cc |
0 | 0 — ready to merge |
| Round 14 | 8ebcd2d |
0 | 0 |
Verdict: ready to merge. The merge commit is clean — Azure DevOps integration composes correctly with the GitHub workspace-scoped auth model, all nine overlapping files were resolved correctly, and all prior blockers and suggestions remain resolved.
|
Claude finished @carlosflorencio's task in 2m 43s —— View job PR Review: feat: add workspace-scoped GitHub authentication
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 — ready to merge |
| Round 12 | 1e3e058 |
0 | 1 |
| Round 13 | b6a17cc |
0 | 0 — ready to merge |
| Round 14 | 8ebcd2d |
0 | 0 — ready to merge |
| Round 15 | 23c0e22 |
0 | 0 |
Verdict: ready to merge. The state migration from single-slot to per-workspace map is correct, covers all consumers, and includes thorough test coverage including a notably improved deterministic E2E test. All blockers and suggestions from prior rounds remain resolved.
|
Claude finished @carlosflorencio's task in 0s —— View job I'll analyze this and get back to you. |
|
Claude finished @carlosflorencio's task in 5m 35s —— View job PR Review: feat: support per-workspace GitHub App registrations
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 — ready to merge |
| Round 12 | 1e3e058 |
0 | 1 |
| Round 13 | b6a17cc |
0 | 0 — ready to merge |
| Round 14 | 8ebcd2d |
0 | 0 — ready to merge |
| Round 15 | 23c0e22 |
0 | 0 — ready to merge |
| Round 16 | fc48a52 |
0 | 0 |
Verdict: ready to merge. The two security fixes (CodeQL clone-argument injection, CSRF via CORS state changes) are complete and correct. The draft PR fix is thorough end-to-end: backend normalizes GitHub's misleading CLEAN mergeability for draft PRs, and the frontend correctly hides the merge button, blocks auto-merge, and surfaces draft styling. All merge conflicts with main are cleanly resolved.
|
Claude finished @carlosflorencio's task in 2m 42s —— View job PR Review: feat: support per-workspace GitHub App registrations
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 — ready to merge |
| Round 12 | 1e3e058 |
0 | 1 |
| Round 13 | b6a17cc |
0 | 0 — ready to merge |
| Round 14 | 8ebcd2d |
0 | 0 — ready to merge |
| Round 15 | 23c0e22 |
0 | 0 — ready to merge |
| Round 16 | fc48a52 |
0 | 0 — ready to merge |
| Round 17 | 310c74a |
0 | 0 |
Verdict: ready to merge. The commit is a correct cleanup pass: complexity-reducing refactors across four Go files (all logic-preserving), removal of confirmed dead code, a targeted UUID-validation fix for the remaining CodeQL alert, and a precise E2E mock correction that restores expected auth state in tests that don't intend to set up a personal connection.
|
Claude finished @carlosflorencio's task in 2m 52s —— View job PR Review: feat: support per-workspace GitHub App registrations
Findings —
|
| Round | Head | Blockers | Suggestions |
|---|---|---|---|
| Round 1 | 666a2d3 |
3 | 2 |
| Round 2 | da46586 |
0 | 2 |
| Round 3 | b367a33 |
0 | 1 |
| Round 4 | 531c8a8 |
0 | 0 — ready to merge |
| Round 5 | 5e22fa4 |
0 | 0 |
| Round 6 | 210a6bc |
0 | 1 |
| Round 7 | e46c711 |
0 | 0 |
| Round 8 | b4f4519 |
0 | 0 |
| Round 9 | e132d34 |
0 | 0 |
| Round 10 | 03ec46d |
0 | 1 |
| Round 11 | a88630d |
0 | 0 — ready to merge |
| Round 12 | 1e3e058 |
0 | 1 |
| Round 13 | b6a17cc |
0 | 0 — ready to merge |
| Round 14 | 8ebcd2d |
0 | 0 — ready to merge |
| Round 15 | 23c0e22 |
0 | 0 — ready to merge |
| Round 16 | fc48a52 |
0 | 0 — ready to merge |
| Round 17 | 310c74a |
0 | 0 — ready to merge |
| Round 18 | 583dd2f |
0 | 0 |
Verdict: ready to merge. The new commit correctly removes an unnecessary personal connection fixture that was seeded by mockGitHubAddPRCommits. For legacy_shared workspace connections, PR commit lookups fall back to automation credentials when no personal connection exists — the credential resolver's resolvePersonal returns nil, nil for ConnectionSourceLegacyShared, triggering the automation fallback. All prior blockers and suggestions remain resolved.
583dd2f to
e7ae2bd
Compare
|
Claude finished @carlosflorencio's task in 0s —— View job I'll analyze this and get back to you. |
e7ae2bd to
476eb9c
Compare
|
Claude finished @carlosflorencio's task in 0s —— View job I'll analyze this and get back to you. |
476eb9c to
f75cdc1
Compare
|
Claude finished @carlosflorencio's task in 1s —— View job I'll analyze this and get back to you. |
f3b177c to
a4a4321
Compare
Summary
KANDEV_GITHUB_APP_*environment configurationSecurity
Verification
make fmtmake typecheckmake testmake lintReal GitHub manifest conversion, installation, webhook delivery, and OAuth callbacks remain staging checks because they require a public HTTPS Kandev origin and GitHub-owned credentials.
Preview Environment
f75cdc1