feat(settings): unify all settings pages under a shared SettingsPanel layout#5219
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR SummaryLow Risk Overview List-style pages (API keys, billing, admin, copilot, credential sets, custom tools, general, inbox, MCP, mothership, recently deleted, BYOK, etc.) now pass header chips through Adds Reviewed by Cursor Bugbot for commit 4e3de3d. Configure here. |
Greptile SummaryThis PR unifies the settings pages under shared layout primitives. The main changes are:
Confidence Score: 5/5This looks safe to merge.
Important Files Changed
Reviews (4): Last reviewed commit: "feat(icons): Thrive icon-only black mark..." | Re-trigger Greptile |
|
@greptile review |
|
@cursor review |
|
@greptile review |
|
@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 a1059d0. Configure here.
Introduce a SettingsPanel scaffold that owns the standard settings chrome (fixed header bar with right-aligned actions, scroll region, centered content column) and renders a consistent page title + description pulled from the active section's navigation metadata. Adds a description to every nav item and a SettingsSectionProvider in the shell so the title is required-by-default without per-page wiring. Migrate the account/subscription pages (general, secrets, teammates, team-management, billing) to SettingsPanel, removing their hand-rolled shells and title blocks.
… search Extend SettingsPanel with a `search` prop (canonical search field with optional anti-autofill hardening) so the repeated per-page search input is owned by the layout. Migrate every settings page — account, subscription, tools, system, enterprise, and superuser — onto SettingsPanel so each renders a consistent nav-driven title + description, header actions, and search with zero hand-rolled shell. Drill-down detail sub-views (MCP server, workflow MCP server, credential set, permission group) keep their own back-button chrome. Normalize all nav descriptions to a consistent voice and length.
…ettingsPanel Remove the preventAutofill prop from SettingsPanel — the shared search field no longer needs the read-only-until-focus hack, so secrets uses the plain search like every other page. Pre-existing honeypot inputs are untouched. Add .claude/rules/sim-settings-pages.md (auto-scoped to settings pages) and a settings-page skill documenting the SettingsPanel convention + add/audit procedure.
…pe usages Encapsulate two more repeated settings patterns into shared components: - SettingsEmptyState — the muted empty/no-results/gate message (fill | inline), replacing ~42 hand-rolled status divs and normalizing stragglers that used text-small / text-tertiary back to the canonical text-muted + text-sm. - RowActionsMenu — the trailing '...' row-actions dropdown, replacing ~11 per-page DropdownMenu+MoreHorizontal blocks with a props-driven actions list. Pure presentational refactor: every message, action, handler, disabled, and destructive flag preserved (verified by diff review). Document both in .claude/rules/sim-settings-pages.md.
Keeps browsers from offering saved-credential autofill in a filter box — the lightweight standard guard, distinct from the removed read-only/preventAutofill machinery. Matters most on the secrets page.
Remove JSX label comments, section/explanatory // comments, separator block comments, and copilot's commented-out MCP scaffold across the migrated files, per the repo's no-non-TSDoc-comments standard. TSDoc and functional directives kept. Comment-only deletions — no code or behavior changed.
Aligns with the verb-prefixed naming of the other skills (add-integration, etc.).
Drop the wordmark from ThriveIcon (tighten viewBox to the logo bounds), set the mark to pure black; the block bgColor is already white. Synced the docs icon copy.
8675b56 to
4e3de3d
Compare
|
@greptile review |
|
@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 4e3de3d. Configure here.
Summary
SettingsPanellayout primitive that owns the settings page chrome (fixed header bar with right-aligned actions, scroll region, centeredmax-w-[48rem]column) and renders a consistent title + description pulled from navigation metadata — so the title is required-by-default with zero per-page wiringsearchprop (with optional anti-autofill hardening for the secrets page), plus ascrollContainerRefpassthroughdescriptionto every nav item + agetSettingsSectionMetahelper (single source of truth), and aSettingsSectionProviderin the settings shellSettingsPanel, removing the hand-rolled shells and<h1>title blocksType of Change
Testing
Tested manually.
tscclean,biomeclean across all 26 files, 71 unit tests pass (access-control + sub-block logic untouched),check:api-validationpasses. Three independent diff-review passes confirmed no business-logic/handler/prop changes — purely structural.Checklist