Skip to content

feat(bootstrap): interactive repo selection for multi-repo workspaces#16

Merged
josephgoksu merged 4 commits intomainfrom
feat/interactive-repo-selection
Feb 25, 2026
Merged

feat(bootstrap): interactive repo selection for multi-repo workspaces#16
josephgoksu merged 4 commits intomainfrom
feat/interactive-repo-selection

Conversation

@josephgoksu
Copy link
Owner

Summary

  • Adds a multi-select TUI for choosing which repos to bootstrap in multi-repo workspaces
  • Workspace detection moved to plan phase so preview/plan summary shows detected repos
  • Repo selection runs before the action loop (works in ModeRun, not just ModeFirstTime)
  • Only prompts when LLM analysis is in the plan; non-interactive mode defaults to all repos

Files

  • internal/bootstrap/planner.go — Workspace field on Snapshot, repo selection fields on Plan, early detection in ProbeEnvironment
  • internal/ui/repo_select.go — New multi-select TUI (same pattern as AI selection)
  • cmd/bootstrap.go — Wire selection into runBootstrap, scope executeLLMAnalyze to selected repos

Test plan

  • go build ./... passes
  • make test-quick passes
  • From multi-repo dir: taskwing bootstrap --preview shows detected repos in summary
  • From multi-repo dir: taskwing bootstrap shows repo selection after AI selection
  • From single-repo dir: no repo selection shown
  • Non-interactive: defaults to all repos without prompting

…aces

When running bootstrap from a directory with multiple repos, users can
now select which repos to analyze instead of bootstrapping everything.

- Move workspace detection to ProbeEnvironment (early, in plan phase)
- Add DetectedRepos/SelectedRepos/RequiresRepoSelection to Plan
- New multi-select TUI component (PromptRepoSelection) matching the
  existing AI selection UX pattern
- Repo selection runs before action loop so it works in all modes
  (ModeRun, ModeFirstTime, etc.), not just when ActionInitProject fires
- Only prompt when ActionLLMAnalyze is in the plan (skip if --skip-analyze)
- Cancel/error falls back to all repos with a warning
- Non-interactive mode defaults to all repos
Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

Detect monorepo structure even when RootPath == GitRoot by scanning
for subdirectories with project manifests (go.mod, package.json, etc.).
Respects .gitignore patterns and requires 2+ nested projects to avoid
false positives.
Backslashes outside quoted strings are invalid JSON and commonly appear
in raw LLM output. Previously they were preserved and caused parse
failures.
@josephgoksu josephgoksu merged commit d0cc84f into main Feb 25, 2026
6 checks passed
@josephgoksu josephgoksu deleted the feat/interactive-repo-selection branch February 25, 2026 08:15
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