Public: anyone can read this; the crew can change it.
One settings page: the studio's short settings first, the branch and its gates and the rest beneath #775
Check · Review · Land · Live done — Landed and live in production.
Closes #631
shipped production is serving it for issue #631 — its issue is already done deploy d5b2fe2
Description (the pull body is fixed at open; this is it). Closes #631.
There is now one settings page per repository, for every viewer and every mode. /:owner/:name/settings leads with the studio's short settings (settingsLead, studio/crew.ts): About (description, visibility), Crew and On its own. Beneath them, for an admin and on the same page, come Branch and gates (default branch, protection, required review, required checks) and Secrets. The remaining groups (App, Prompts, Labels, Webhooks, Danger zone) stay one quiet section over in the same frame. ?mode=dev and the mode cookie change nothing.
Path. From the app page (or the Settings tab), change the one thing in its own group and press that group's Save. You land back here with a flash, and the app is one tab away.
Removed
- The studio/dev split in
settingsPage(thectx.modeshort shell versus dev's full shell). - Dev's Crew page renderer (
crewSettingsPage) and Autonomy page renderer (autonomySettingsPage), with their sidebar entries. - Dev's General card's own description and visibility fields, which duplicated About.
- "The rest of the settings ?mode=dev".
- Lines:
src/is +135/−356. - Old URLs:
GET /settings/crewredirects (303) to/settings#crew, and/settings/autonomyto/settings#autonomy. A repository you cannot read is still 404 at either. Every POST keeps its route and checks, and lands on the matching anchor.
What the removed screens showed or did, and where it lives now
- Crew readiness (no runner, no Claude) and the forge admin's subscription grants: the Crew card, for an admin.
- An agent's model: the crew row's meta, beside its role and brief.
- Autonomy's Direction textarea and the planner hint: the On its own card. The studio used to send the direction as a hidden field, so it could not be edited there.
- The visibility hint's "code, issues, pulls and run logs" wording: About.
- Default branch, protection, review and check gates: Branch and gates. This form sends description and visibility back unchanged, as About sends the gates back.
- Secrets: beneath, as before.
- A reader who can write but not administer sees the crew and the ceiling without forms. Anyone else sees one line saying whose these are. This is the studio's rule and it applies to every viewer now.
Tests, updated rather than deleted: studio (the lead comes before Branch and gates, the rest stays reachable, no ?mode=dev, the old Crew and Autonomy URLs land on the anchors, a hidden repository is 404, a role change lands on #crew), web-apps (a reader is redirected to a page with no settings forms; crew add and remove from the one page), studio-words (settings speaks git beneath on purpose, so it is no longer a vocabulary row; studio.test holds the order). private-app passes as is.
Verified. tsc is clean. The 37 suites that touch /settings pass, except app-domains, "a private app's sign-in lands on the new host", which fails the same way on main. The full gate on main (b9c58c2+) has one red, crew assignment, which is the macOS /private path on this machine. Looks at 390 and 1280 of an app's settings and a plain repository's, against a seeded local forge. Nothing scrolls sideways. The looks are with the steward.
🤖 Generated with Claude Code
Closes #631
In progress (steward build team). Description, removals and looks follow in a comment.