feat(settings): self-host settings plane, Sim wordmark in sidebar - #5990
Conversation
Chat keys were only reachable at a standalone /account/settings/chat-keys
page that nothing linked to. They now live on a dedicated self-host plane
alongside the two other settings a self-hoster needs from the managed
service.
- new /selfhost/settings/{general,billing,chat-keys} plane, open to any
signed-in user
- chat keys move off the account plane entirely; no isHosted gate
- registry `unified` projection is now optional (mirroring `planes`), so a
section can opt out of the editor sidebar
- plane items resolve their own description and throw when one is missing,
since a plane-only section has no unified projection to inherit from
- settings sidebar shows the Sim wordmark linking to /?home instead of a
Back chip; drops the now-dead backHref prop
- `bun run setup` runs `bun install` first so a fresh clone is one command
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Chat keys move off the hidden The settings registry gains an optional Docs and onboarding: README quickstart uses Reviewed by Cursor Bugbot for commit 09a13b9. Bugbot is set up for automated code reviews on this repo. Configure here. |
Greptile SummaryAdds a self-host settings plane and moves chat keys off the account plane.
Confidence Score: 5/5This follow-up pass finds no remaining blocking issues relative to prior Greptile threads, so the PR appears safe to merge from that scope. No prior inline Greptile findings remain outstanding in the available review context, and no eligible follow-up comments were established against previous threads.
|
| Filename | Overview |
|---|---|
| apps/sim/components/settings/navigation.ts | Adds selfhost plane, optional unified projection, SELFHOST_SETTINGS_ITEMS, and description throw for plane-only sections. |
| apps/sim/components/settings/standalone-settings-shell.tsx | Wires selfhost sidebar filtering (billing/isHosted) and shared shell chrome via SETTINGS_PLANE_CHROME. |
| apps/sim/components/settings/selfhost-settings-renderer.tsx | Client renderer for general, billing, and chat-keys with settings_tab_viewed analytics. |
| apps/sim/app/selfhost/settings/[section]/page.tsx | Auth + section parse, billing/chat-keys feature redirects, Suspense around renderer. |
| apps/sim/components/settings/settings-sidebar.tsx | Replaces backHref with plane chrome; wordmark leave guard vs Back to workspace. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Signed-in user] --> B["/selfhost/settings"]
B --> C[Redirect general]
C --> D[StandaloneSettingsShell plane=selfhost]
D --> E[Sidebar: general / billing / chat-keys]
E --> F[SelfHostSettingsRenderer]
F --> G[General]
F --> H["Billing scope=account"]
F --> I[Copilot / Chat keys]
Reviews (2): Last reviewed commit: "fix(settings): hide self-host Chat keys ..." | Re-trigger Greptile
The account-plane URL stopped resolving when chat keys moved to /selfhost/settings.
Replacing the Back chip everywhere was too broad — account and organization are reached from inside the app, so Back is right there. Self-host is reached from outside it (the CLI wizard, the README), so it leads with the brand mark instead. SETTINGS_PLANE_CHROME declares that per plane, keyed on StandaloneSettingsPlane so adding a plane forces the decision rather than defaulting silently. It also absorbs the shell's parallel plane-label map.
Chat keys are issued by the managed service and useCopilotKeys is `enabled: isHosted` for that reason. Moving the section onto the self-host plane dropped its hosted gate, so a self-hosted deployment rendered a Chat keys nav item whose list could never populate. Restores the gate on the plane that now owns the URL. sim.ai is unaffected — the section stays visible there to every signed-in user, which is the surface self-hosters are pointed at.
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 09a13b9. Configure here.
Summary
/selfhost/settings/{general,billing,chat-keys}plane — the settings a self-hoster needs from the managed service, open to any signed-in user/account/settings/chat-keyspage that nothing in the app linked to, behind anisHostedgateunifiedprojection is now optional (mirroringplanes), so a section can opt out of the editor sidebar instead of being forced into itunifiedprojection to inherit from/?homeinstead of a Back chip; drops the now-deadbackHrefpropbun run setuprunsbun installfirst, so a fresh clone is one commandType of Change
Testing
Tested manually on localhost.
type-check,lint:check, and all 11 CI audits (check:boundaries,check:api-validation:strict,check:utils,check:zustand-v5,check:react-query,check:client-boundary,check:bare-icons,check:icon-paths,check:realtime-prune,skills:check,agent-stream-docs:check) pass. 24 settings nav/shell tests pass.Note: the self-host plane has no inbound link yet — the natural entry point is the setup wizard printing the URL once it connects a Chat key. Follow-up.
Checklist