diff --git a/apps/desktop/src/app/settings/appearance-settings.tsx b/apps/desktop/src/app/settings/appearance-settings.tsx
index 4abd79c8d..8bf208b5a 100644
--- a/apps/desktop/src/app/settings/appearance-settings.tsx
+++ b/apps/desktop/src/app/settings/appearance-settings.tsx
@@ -1,4 +1,5 @@
import { useStore } from '@nanostores/react'
+import type { ReactNode } from 'react'
import { triggerHaptic } from '@/lib/haptics'
import { Check } from '@/lib/icons'
@@ -51,6 +52,20 @@ function ThemePreview({ name }: { name: string }) {
)
}
+function SectionHead({ title, description, pill }: { title: string; description: string; pill?: ReactNode }) {
+ return (
+
+
+
{title}
+
+ {description}
+
+
+ {pill}
+
+ )
+}
+
export function AppearanceSettings() {
const { themeName, mode, availableThemes, setTheme, setMode } = useTheme()
const toolViewMode = useStore($toolViewMode)
@@ -58,24 +73,18 @@ export function AppearanceSettings() {
return (
-
-
-
- These are desktop-only display preferences. Mode controls brightness; theme controls the accent palette and
- chat surface styling.
-
-
+
+
+ These are desktop-only display preferences. Mode controls brightness; theme controls the accent palette and
+ chat surface styling.
+
-
-
-
-
Color Mode
-
- Pick a fixed mode or let Hermes follow your system setting.
-
-
-
{prettyName(mode)}
-
+
+ {prettyName(mode)}}
+ title="Color Mode"
+ />
{MODE_OPTIONS.map(({ id, label, description, icon: Icon }) => {
const active = mode === id
@@ -113,16 +122,12 @@ export function AppearanceSettings() {
-
-
-
-
Tool Call Display
-
- Product hides raw tool payloads; Technical shows full input/output.
-
-
-
{toolViewMode === 'technical' ? 'Technical' : 'Product'}
-
+
+ {toolViewMode === 'technical' ? 'Technical' : 'Product'}}
+ title="Tool Call Display"
+ />
{(
[
@@ -170,16 +175,12 @@ export function AppearanceSettings() {
-
-
-
-
Theme
-
- Desktop palettes only. The selected mode is applied on top.
-
-
- {activeTheme &&
{activeTheme.label}}
-
+
+ {activeTheme.label} : undefined}
+ title="Theme"
+ />
{availableThemes.map(theme => {
const active = themeName === theme.name