Repository navigation
Wizard: members and repos are confirmed on separate steps (#104) - #114
Merged
Merged
Conversation
Moved from overlays unchanged in logic; the pickers embed components.Checklist and reach the cursor, note, and boxes through SetCursor, SetNote, Checked, Count, and Cursor. GREEN: go test ./internal/tui/components ./internal/tui/overlays ./internal/tui/app passes; the only test change is repopicker_test reading Cursor() instead of the field.
RED: go test ./internal/tui/wizard fails to build: undefined stepMembers, stepRepos, Model.loadLists, Model.toTeam, and the members and repos checklists. The flows now expect two enters and a Repos · N of M included heading before the name step.
The review step was one scrolling list with the repos below the fold, so enter saved a profile before they were seen. It is now two stops, each the checklist the app pickers use, headed by its count and with a footer naming the next step. Enter on an empty members list is refused; enter on an empty repos list warns once and goes on the second time. A cut list is reported above the step it belongs to. GREEN: go test ./internal/tui/wizard -v passes all 18 tests; go test ./internal/tui/... passes.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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.
Closes #104. Plan:
.claude/plans/members-and-repos-separate-steps.plan.md(PRD milestone 2). Lands after #108.The wizard's review step was one scrolling list with the repos under the members, so on a team of any size the repos sat below the fold and enter saved the profile before they were ever seen.
What changed
internal/tui/wizard: the review step is two steps,Members · N of M includedthenRepos · N of M included, each with a footer naming the next step. Enter on the members lands on the repos, not on the name; esc walks back one step at a time. Enter on zero members is refused withkeep at least one member; enter on zero repos warns once (no repos included: nothing will sync until you add some to config.yml · enter again to continue) and a second enter in a row goes on, since orgs often assign a team no repos and the README says to add them by hand. Archived repos still start unchecked. The Wizard imports only the first 100 orgs, teams, members and repos, and never says so #103 cut notice renders above whichever step's list was cut, in the team-list wording (Showing 1000 of 1437 members: the list was cut. ...).internal/tui/components: the checklist moves out ofoverlaysas an exportedChecklist, unchanged in logic, withSetCursor,SetNote,Checked,Count,Len, andCursoraccessors. The member and repo pickers embed it; the wizard's two steps use it too, which gives them/search,a/nbulk toggles, and scrolling for the 250-member and 150-repo imports Wizard imports only the first 100 orgs, teams, members and repos, and never says so #103 made possible. The only picker test change is two lines readingCursor()instead of the private field, which an embedded struct from another package cannot expose.internal/tui/*.TDD evidence (full report in
.claude/tdd/members-and-repos-separate-steps.tdd.md, local)undefined: Checklist, NewChecklistundefined: stepMembers, stepRepos, loadLists, toTeamTestWizardRepoStepCannotBeSkippedis the PRD metricCoverage:
internal/tui/components93.2%,internal/tui/overlays92.4%,internal/tui/wizard88.3%.golangci-lint run0 issues,gofmt -l .clean. govulncheck exits 3 on the same four Go 1.26.5 standard-library advisories as #108, fixed in 1.26.6; nothing here touches them.Known limits
TestWizardListsFitTheTerminal), not driven by hand against a scratch config.Checklist
go test ./...andgolangci-lint runpass locallyCHANGELOG.mdline under the unreleased versioninternal/metrics(no metrics changed)go run . seed): rendered with a fake doer only;mandRparity rests on the unchanged picker and app tests