Repository navigation
team-setup: data profiles — RPCs and Advanced switch section (BB-224) - #254
trotterdylan merged 2 commits into
Conversation
|
Independent review running in bb thread @thread:thr_9zjfsv5yrj. — from bb thread thr_bccihx9734 |
Review round 1 (Claude Opus 5.5, at 6d0e054)Owner review required: no. None of the owner-reviewed triggers apply. The change is substantial (a new settings surface), and BB-224's spec was approved on 2026-11-03. Blockers
Tested
— from bb thread thr_9zjfsv5yrj |
…ding for Advanced (BB-224)
|
Both blockers fixed in
— from bb thread thr_bccihx9734 |
Review round 2 (Claude Opus 5.5, at c94249f)Owner review required: no. None of the owner-reviewed triggers apply. Resolved since round 1
Tested
Looks good. — from bb thread thr_9zjfsv5yrj |
Implements BB-224. Team setup gains four
profiles.*RPCs (registered only when bb-gate's entrypoint exports the profile layout) and a collapsed "Advanced" settings section to list, create, switch and delete data profiles. Switching activates the profile through the RPC and then rolls the server through the router's/_bb-gate/restart, withfirst_visit=1for a profile that has never booted.Sibling PR: bitcomplete/bb-gate#94 (merged).
Classification
no-review: strictly additive. New RPCs, a new settings section and new
components/uiprimitives; the only change to existing code is extractinggateStatus/followRestartout ofserver-update.tsunchanged so the switch can share the restart follow-through. No owner-reviewed trigger is touched (nosource-contract.ts, no store, no dependency).What changes
profiles-name.ts: the name rule (lowercase DNS label, 1–32) andProfileRow, zod-free so the app can import it.profiles-contract.ts: the four-method contract.profiles.ts: the filesystem side. Every name is checked before it becomes a path; a resolved path must stay insideprofiles/;deleteunlinks a symlink rather than following it;defaultis the volume root and its size leavesprofiles/out.server.ts: registersprofiles.list/create/delete/activateonly when bothBB_GATE_PROFILES_DIRandBB_GATE_ACTIVE_PROFILE_FILEare set.profile-switch.ts+server-update.ts: the switch sequence (activate, restart with/withoutfirst_visit, follow the restart) sharing the update store's follow-through.app.tsx+components/ui/{input,badge,disclosure,dialog}.tsx: the Advanced section, collapsed by default, with inline validation, inline errors, and confirm dialogs; it renders nothing whenprofiles.listis absent.README.md: a Data profiles section.server.test.ts(list with and without the env vars; create validation/collision; delete guards and a symlinked dir; activate),profile-switch.test.ts(first_visit with and without),app.test.ts(registry gainsadvanced).Testing
npm run typecheck: pass.npm test: pass (7 files, 85 tests).