Settings: split into General / Work / Make repo / Advanced sub-tabs
The Settings tab was 10 workflows stacked flat (API key, gateway, login, sharing, open repo, branches, create, promote, repo list, commit, raw git) — worst at the bottom on mobile.
This splits it into 4 sub-tabs by intent:
- General — model setup (API key, gateway), GitHub account (login/out, token details collapsed behind disclosure), Sharing
- Work — open repo + repo list in one card, branches (picker, switch, new proto branch), save (commit+push, pull, status, log)
- Make repo — new repo from current files, and promote-branch-to-new-repo (keep history), as separate cards with labeled checkboxes
- Advanced — delete branch + run raw git, behind a warning
Draft inputs persist across tab switches via ghDraft (previously every render wiped them). Token scopes collapsed; Refresh branches, Delete branch, Remote-only strings preserved.
Work / Make repo / Advanced show a login gate when logged out and unlock after GitHub login. Verified: tsc --noEmit clean, 352/352 tests pass.
Summary by cubic
Restructures the Settings tab from a flat 10-workflow stack into 4 sub-tabs grouped by intent — General (model setup, GitHub account, sharing), Work (open repo, branches, save), Make repo (create, promote), Advanced (delete branch, raw git) — so workflows are reachable without scrolling past everything else.
- The active tab persists across reloads and defaults to Work once logged in.
- Draft form inputs (repo names, commit message, branch name, checkboxes) survive tab switches via shared draft state; previously every re-render wiped them.
- Token scopes and granted scopes are collapsed into a "token details" disclosure; the missing-workflow-scope and GitHub-App warnings remain visible.
- Work, Make repo, and Advanced show a login gate when logged out and unlock after GitHub login.
- Delete branch moved to Advanced with its input pre-filled from the last selected branch, and the direct
Refresh branchesbutton on the Work tab now refreshes the list without needing the picker.
Linked-tab shots use representative fixture data (same components, no OAuth in the screenshot env).