Skip to content

feat: auto-join org installations during void github connect - #264

Merged
Brooooooklyn merged 10 commits into
mainfrom
feat/github-connect-auto-join
Jul 7, 2026
Merged

Brooooooklyn merged 10 commits into
mainfrom
feat/github-connect-auto-join

Conversation

@Brooooooklyn

@Brooooooklyn Brooooooklyn commented Jul 7, 2026 •

Copy link
Copy Markdown
Member

Problem

An org teammate runs void github connect after someone else in their org already installed the Void GitHub App. Their installation list is empty (no membership row yet), so the CLI exits with "No active GitHub App installation. Run void github install first." — telling them to install an app that's already installed.

Change (CLI-only, no server changes)

void github connect
  └ active installation list EMPTY
     ├ TTY: auto-run the existing join browser OAuth once
     │   ├ joined ≥ 1 → re-list → connect continues
     │   └ joined 0 / OAuth 503 → install-first error
     └ non-TTY: never opens a browser; error now also
       mentions `void github join`
  • runGithubJoin's browser round-trip extracted into reusable performGithubJoin(); the join command's behavior is unchanged.
  • Same one-shot recovery when --installation <id> names an installation the account isn't linked to yet.
  • Adjacent fix: shared org installations redact their repo list for members, which dead-ended connect with "installation has no accessible repositories". TTY now prompts for owner/repo (validated, shared with the all-repositories prompt); non-TTY asks for --repo.
  • Docs: github connect / github join sections in docs/reference/cli.md.

Trust model unchanged: membership is still proven by the user's own GitHub OAuth (design doc 0074); the per-repo connect-authorize step for members stays.

Testing

  • 8 new unit tests (auto-join happy path, zero-join, 503 fall-through, non-TTY gate, --installation recovery, member repo prompt + validation, non-TTY --repo error)
  • vp test run packages/void: 2693 passed, 0 failed
  • vp run --filter ./packages/void typecheck: clean

🤖 Generated with Claude Code


Note

Low Risk
CLI-only UX and documentation; OAuth join reuse matches existing trust model with no server changes.

Overview
void github connect now tries to join shared org GitHub App installations automatically in interactive mode when the user has no linked installations (or a missing --installation id), instead of telling them to install an app that may already exist on the org. The join browser OAuth is extracted into performGithubJoin() and reused by void github join unchanged; non-TTY connect still never opens a browser and errors mention void github join.

When an installation returns an empty repo list (redacted for org members), connect no longer dead-ends: TTY prompts for owner/repo via shared promptRepoFullName() with validation; CI must pass --repo. CLI reference docs for github connect / github join are updated accordingly.

.gitignore adds docs/superpowers/.

Reviewed by Cursor Bugbot for commit eada320. Bugbot is set up for automated code reviews on this repo. Configure here.

Brooooooklyn and others added 9 commits July 7, 2026 22:26
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…itory list

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Assert directly on the validate callback passed to @clack/prompts'
text() in promptRepoFullName: rejects malformed/empty input with
'Enter the repository as owner/repo.' and accepts owner/repo
(including padded input).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_5f2db519-15a5-46b0-bb97-15700ec8b903)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f7fafdb4d3

ℹ️ 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".

Comment thread docs/superpowers/plans/2026-07-07-github-connect-auto-join.md Outdated
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_5fc0d9af-7d31-4461-a21e-9494ae632e2f)

@Brooooooklyn
Brooooooklyn merged commit a348c0d into main Jul 7, 2026
7 checks passed
@Brooooooklyn
Brooooooklyn deleted the feat/github-connect-auto-join branch July 7, 2026 15:35
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.

1 participant