Skip to content

feat(app): redesign non-modal settings - #40845

Open
Hona wants to merge 6 commits into
anomalyco:v2from
Hona:non-modal-settings
Open

feat(app): redesign non-modal settings#40845
Hona wants to merge 6 commits into
anomalyco:v2from
Hona:non-modal-settings

Conversation

@Hona

@Hona Hona commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • reorganize the settings navigation and split appearance and notifications into dedicated pages
  • add Figma-aligned Projects and Extensions views backed by real server configuration and MCP state
  • improve multi-server selection, local/default server ordering, and default-server menu behavior
  • add the supporting settings icons, layout styles, and localized copy

Test plan

  • �un typecheck in packages/app
  • �un run test:unit in packages/app (707 passing)
  • �un run build in packages/app
  • full workspace typecheck from the push hook (30 packages passing)

Copilot AI lite review requested due to automatic review settings August 6, 2026 11:26
@Hona
Hona requested a review from Brendonovich as a code owner August 6, 2026 11:26
@Hona Hona added the beta label Aug 6, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR redesigns the app’s non-modal settings experience by reorganizing navigation into dedicated pages (e.g., Appearance, Notifications, Projects, Extensions) and adding new UI structure, icons, styling, and localization keys to support the new layout and multi-server workflows.

Changes:

  • Reworked Settings V2 navigation and split settings into new dedicated pages (Appearance, Notifications, Projects, Extensions).
  • Added inline server selection UI across several settings pages and adjusted server ordering/default behaviors.
  • Expanded icon set, styling, and i18n dictionaries to support the new settings UI copy and sections.

Reviewed changes

Copilot reviewed 43 out of 43 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
packages/ui/src/components/icon.tsx Adds new icons used by the redesigned settings navigation and Extensions view.
packages/app/src/wsl/settings.tsx Updates WSL server context menu default-server behavior.
packages/app/src/i18n/en.ts Updates English settings labels and adds many new Settings V2 copy keys.
packages/app/src/i18n/ar.ts Adds new Settings V2 keys for Arabic locale (currently English strings).
packages/app/src/i18n/az.ts Adds new Settings V2 keys for Azerbaijani locale (currently English strings).
packages/app/src/i18n/br.ts Adds new Settings V2 keys for Portuguese (Brazil) locale (currently English strings).
packages/app/src/i18n/bs.ts Adds new Settings V2 keys for Bosnian locale (currently English strings).
packages/app/src/i18n/da.ts Adds new Settings V2 keys for Danish locale (currently English strings).
packages/app/src/i18n/de.ts Adds new Settings V2 keys for German locale (currently English strings).
packages/app/src/i18n/es.ts Adds new Settings V2 keys for Spanish locale (currently English strings).
packages/app/src/i18n/fi.ts Adds new Settings V2 keys for Finnish locale (currently English strings).
packages/app/src/i18n/fr.ts Adds new Settings V2 keys for French locale (currently English strings).
packages/app/src/i18n/hi.ts Adds new Settings V2 keys for Hindi locale (currently English strings).
packages/app/src/i18n/id.ts Adds new Settings V2 keys for Indonesian locale (currently English strings).
packages/app/src/i18n/it.ts Adds new Settings V2 keys for Italian locale (currently English strings).
packages/app/src/i18n/ja.ts Adds new Settings V2 keys for Japanese locale (currently English strings).
packages/app/src/i18n/ko.ts Adds new Settings V2 keys for Korean locale (currently English strings).
packages/app/src/i18n/nl.ts Adds new Settings V2 keys for Dutch locale (currently English strings).
packages/app/src/i18n/no.ts Adds new Settings V2 keys for Norwegian locale (currently English strings).
packages/app/src/i18n/pa.ts Adds new Settings V2 keys for Punjabi locale (currently English strings).
packages/app/src/i18n/pl.ts Adds new Settings V2 keys for Polish locale (currently English strings).
packages/app/src/i18n/ru.ts Adds new Settings V2 keys for Russian locale (currently English strings).
packages/app/src/i18n/sv.ts Adds new Settings V2 keys for Swedish locale (currently English strings).
packages/app/src/i18n/th.ts Adds new Settings V2 keys for Thai locale (currently English strings).
packages/app/src/i18n/tr.ts Adds new Settings V2 keys for Turkish locale (currently English strings).
packages/app/src/i18n/uk.ts Adds new Settings V2 keys for Ukrainian locale (currently English strings).
packages/app/src/i18n/ur.ts Adds new Settings V2 keys for Urdu locale (currently English strings).
packages/app/src/i18n/vi.ts Adds new Settings V2 keys for Vietnamese locale (currently English strings).
packages/app/src/i18n/zh.ts Adds new Settings V2 keys for Simplified Chinese locale (currently English strings).
packages/app/src/i18n/zht.ts Adds new Settings V2 keys for Traditional Chinese locale (currently English strings).
packages/app/src/components/settings-v2/settings-v2.css Adds layout styling for Settings V2 header rows and Extensions sub-tabs.
packages/app/src/components/settings-v2/servers.tsx Adjusts server list ordering and default-server labeling logic in Settings V2.
packages/app/src/components/settings-v2/providers.tsx Adds inline server selection to Providers settings header.
packages/app/src/components/settings-v2/models.tsx Adds inline server selection to Models settings header.
packages/app/src/components/settings-v2/projects.tsx Introduces Projects settings page and adds inline server selection.
packages/app/src/components/settings-v2/parts/server-select.tsx Adds reusable inline server selector component.
packages/app/src/components/settings-v2/notifications.tsx Introduces Notifications settings page with toggles and new select controls.
packages/app/src/components/settings-v2/index.tsx Exports newly added Settings V2 pages.
packages/app/src/components/settings-v2/general.tsx Refactors General settings page and adds restore-defaults/reset affordances.
packages/app/src/components/settings-v2/extensions.tsx Introduces Extensions settings page (MCPs/Plugins/Skills) and sub-tab UI.
packages/app/src/components/settings-v2/dialog-settings-v2.tsx Updates the settings dialog navigation to the new multi-page structure.
packages/app/src/components/settings-v2/appearance.tsx Introduces Appearance settings page (scheme/theme/fonts/density, display).
packages/app/src/components/server/server-row-menu.tsx Updates server row menu default-server action to a disabled “Set default” item when already default.
Suppressed comments (2)

packages/app/src/components/settings-v2/servers.tsx:23

  • const server = useServer() is declared but not used.
  const server = useServer()
  const controller = useServerManagementController()

packages/app/src/components/settings-v2/general.tsx:268

  • This row is labeled "Reset all settings" but the handler only restores a subset of general preferences. The copy should match the actual behavior (or the handler should actually reset everything).
      </SettingsListV2>
    </div>
  )


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

import { ServerHealthIndicator } from "@/components/server/server-row"
import { useLanguage } from "@/context/language"
import { ServerConnection, serverName } from "@/context/server"
import { ServerConnection, serverName, useServer } from "@/context/server"
Comment on lines +33 to +37
const isDefaultServer = (key: ServerConnection.Key, item: ServerConnection.Any) => {
const def = controller.defaultKey()
if (!def) return isLocal(item)
return def === key
}
Comment on lines +62 to +66
<InlineServerSelect
value={selectedServer()}
onChange={setSelectedServer}
includeAll
/>
Comment on lines +40 to +44
<InlineServerSelect
value={selectedServer()}
onChange={setSelectedServer}
includeAll
/>
Comment on lines +155 to +159
<InlineServerSelect
value={selectedServer()}
onChange={setSelectedServer}
includeAll
/>
<h2 class="settings-v2-tab-title">{language.t("settings.tab.extensions")}</h2>
<span class="text-11-regular text-v2-text-text-muted">{language.t("settings.mcps.description")}</span>
</div>
<InlineServerSelect value={selectedServer()} onChange={setSelectedServer} includeAll />
Comment on lines +77 to +78
const [density, setDensity] = createSignal<"compact" | "default" | "comfortable">("default")

Comment on lines +65 to +67
const [unreadBadge, setUnreadBadge] = createSignal<"count" | "dot" | "none">("count")
const [focusMode, setFocusMode] = createSignal<"auto" | "always" | "never">("auto")

@Hona
Hona changed the base branch from dev to v2 August 7, 2026 10:04
@Hona
Hona force-pushed the non-modal-settings branch from dd76e8f to a2c3aef Compare August 7, 2026 10:11
@opencode-agent

opencode-agent Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

⚠️ Blocking Beta Release

This PR cannot be merged into the beta branch due to: Merge conflicts with dev branch

Please resolve this issue to include this PR in the next beta release.

@opencode-agent

opencode-agent Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Blocking Beta Release

This PR cannot be merged into the beta branch due to: Merge conflicts with dev branch

Please resolve this issue to include this PR in the next beta release.

@opencode-agent

opencode-agent Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Blocking Beta Release

This PR cannot be merged into the beta branch due to: Merge conflicts with dev branch

Please resolve this issue to include this PR in the next beta release.

@opencode-agent

opencode-agent Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Blocking Beta Release

This PR cannot be merged into the beta branch due to: Merge conflicts with dev branch

Please resolve this issue to include this PR in the next beta release.

@opencode-agent

opencode-agent Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Blocking Beta Release

This PR cannot be merged into the beta branch due to: Merge conflicts with dev branch

Please resolve this issue to include this PR in the next beta release.

@opencode-agent

opencode-agent Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

⚠️ Blocking Beta Release

This PR cannot be merged into the beta branch due to: Merge conflicts with dev branch

Please resolve this issue to include this PR in the next beta release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants