App — Settings
User + workspace configuration. Uses ControlPage wrapper.
User + workspace configuration. Uses ControlPage wrapper (narrow centered form layout).
| Field | Value |
|---|---|
| Status | GA |
| Owner | @aphaiboon |
| Layout | ControlPage (the only place max-w-4xl outer wrapper is allowed — see ADR-0004) |
Sections
Section titled “Sections”User-scoped
Section titled “User-scoped”- Profile — name, avatar, timezone
- Sidekick — name, avatar style, default mode, voice (planned)
- Notifications — what pages, when, where (email / Slack / in-app)
- Privacy — Ghost Mode default, memory retention preferences
- Sessions & devices — active sessions, 2FA, device list
Workspace-scoped (admin only)
Section titled “Workspace-scoped (admin only)”- Organization — name, billing email, branding
- Members — invite / remove / role
- Teams — create / archive teams
- Apps — toggle apps on/off (mirrors App — Marketplace)
- Integrations — manage connected accounts
- Feature Flags — admin →
/admin/feature-flagsfor staged rollouts - Billing — plan, payment method, invoices
- Audit Log — actions taken in the workspace (planned)
- Security — SSO config, IP allowlist (planned)
Sidekick rules
Section titled “Sidekick rules”The Sidekick can READ settings (for context) but cannot WRITE most of them:
Never change account settings on the user’s behalf without explicit confirmation. Never grant permissions or authorizations on the user’s behalf (OAuth/SSO flows).
Settings that ARE Sidekick-writable (with user confirmation): Sidekick name + avatar, notification preferences, default mode.
Data model
Section titled “Data model”| Table | Purpose |
|---|---|
user_preferences | Per-user settings JSON |
organization_settings | Workspace-level settings |
feature_flags | Per-org / per-user feature gates |
audit_log | Audit records (planned) |
Analytics events
Section titled “Analytics events”setting_updated(with section + key)2fa_enabledintegration_authorizedfeature_flag_toggled(admin)
- ControlPage with left-rail navigation between sections
- Forms use
react-hook-form+ Zod validation - Save triggers toast ONLY if the change is non-obvious
Related incidents
Section titled “Related incidents”Related
Section titled “Related”- ADR-0004 — Three Page Layout Wrappers — Settings is the canonical ControlPage example
- App — Marketplace — mirror of App toggle settings
- Security Posture — 2FA, SSO planning