# zidane-ui/settings

Import: `import { … } from 'zidane-ui/settings'`. Source: [ui/src/settings/index.ts](https://github.com/Tahul/zidane/blob/main/ui/src/settings/index.ts).

## Components

### `AgentDefaultsRows`

Component.

The agent, model and effort rows of new sessions' defaults.

```ts
function AgentDefaultsRows(props: AgentDefaultsRowsProps): Element
```

**Parameters**

- `props` (`AgentDefaultsRowsProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on each row.
- `cwd` (`string | null`): The folder whose agents and models are listed (`null`: none).
- `inherited?` (`AgentDefaultsValue`): A space's rows: the host's defaults, what an unset row falls back to; set rows clear back to them.
- `onChange` (`(next: AgentDefaultsValue) => void`): Sets them.
- `style?` (`CSSProperties`): Inline styles on each row.
- `value` (`AgentDefaultsValue`): The defaults.

Source: [ui/src/settings/sections/models/AgentDefaults.tsx:94](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/AgentDefaults.tsx#L94)

### `AppearanceSection`

Component.

Renders the appearance preferences of the nearest `AppearanceProvider`. Outside one the controls show the
defaults and change nothing.

```ts
function AppearanceSection(props: AppearanceSectionProps): Element
```

**Parameters**

- `props` (`AppearanceSectionProps`): The app's `appIcon`, `onReset`, `className` and `style`.

**Returns** `Element`

**Props**

- `appIcon?` (`ReactNode`): The app icon picker (a desktop app's): shown as the App icon group after Accent. Absent: no such group.
- `className?` (`string`): Extra classes on the root.
- `onReset?` (`() => void`): Runs after Reset appearance restored the preferences (the app restores what it owns, the app icon).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/appearance/AppearanceSection.tsx:70](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/appearance/AppearanceSection.tsx#L70)

### `ApprovalModeRow`

Component.

Tool approvals: ask, Model decision or off, in a menu. Model decision is
offered only when a decision model resolves; otherwise its option is
disabled and its tooltip says why.

```ts
function ApprovalModeRow(props: ApprovalModeRowProps): Element
```

**Parameters**

- `props` (`ApprovalModeRowProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `onChange` (`(value: ApprovalMode) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`ApprovalMode`): `Settings.approvalMode`.

Source: [ui/src/settings/sections/models/ModelRows.tsx:321](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L321)

### `ChoiceRow`

Component.

A catalog choice as a row: a press opens a menu of its options.

```ts
function ChoiceRow(props: ChoiceRowProps): Element
```

**Parameters**

- `props` (`ChoiceRowProps`): The choice, its value, what sets it and why it may be unavailable.

**Returns** `Element`

**Props**

- `className?` (`string`): Classes merged on the row's button.
- `disabled?` (`boolean`): Read-only here: inert, its value shown.
- `onChange` (`(value: string | number | boolean | readonly string[] | Record<string, readonly string[]> | Record<string, unknown> | Record<string, boolean> | Space[] | EnvironmentSettings | Record<string, Record<string, unknown>> | undefined) => void`): An option was picked (not called for the current one).
- `row` (`SettingsChoice`): The catalog choice the row draws (label, description, options).
- `style?` (`CSSProperties`): Inline styles on the row's button.
- `unavailable?` (`string`): Why the host can't apply the setting: the row is inert, shows it as unavailable, and this note replaces its description.
- `value` (`unknown`): The setting's value: the option it names is shown.

Source: [ui/src/settings/rows.tsx:95](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L95)

### `ClaudeImportDialog`

Component.

The Claude Code import dialog. Renders nothing when the host can't import.

```ts
function ClaudeImportDialog(props: ClaudeImportDialogProps): Element | null
```

**Parameters**

- `props` (`ClaudeImportDialogProps`): Component props.

**Returns** `Element | null`

**Props**

- `activeServerName?` (`string`): The active chat runs on this server: the import still targets this computer, and says so.
- `className?` (`string`): Extra classes on the dialog's panel.
- `cwd` (`string | null`): The folder whose conversations "this project" counts (`null`: none).
- `onBack?` (`() => void`): Back to the settings page that opened it. Absent: no back button; Done closes.
- `onClose` (`() => void`): Dismisses the dialog.
- `onImported?` (`() => void | Promise<void>`): After an import ran (the app reads its session list again).
- `style?` (`CSSProperties`): Inline styles on the dialog's panel.

Source: [ui/src/settings/sections/claude-import/ClaudeImportDialog.tsx:61](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/claude-import/ClaudeImportDialog.tsx#L61)

### `CompactionModelRow`

Component.

The model that writes compaction summaries.

```ts
function CompactionModelRow(props: CompactionModelRowProps): Element
```

**Parameters**

- `props` (`CompactionModelRowProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `main` (`ModelPickRef`): The default model new sessions run on: what "main model" tests.
- `onChange` (`(value: string) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`string`): `Settings.compactionModel`: `"providerKey[@account]/modelId"`, or `''` for the main model.

Source: [ui/src/settings/sections/models/ModelRows.tsx:126](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L126)

### `ConversationPresetsRow`

Component.

The sample conversation with a tab for your settings and one per preset
(Focused, Balanced, Detailed). A tab only previews; "Use" sets every
setting of the preset.

```ts
function ConversationPresetsRow(props: ConversationPresetsRowProps): Element
```

**Parameters**

- `props` (`ConversationPresetsRowProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `setSetting` (`<K extends keyof Settings>(key: K, value: Settings[K]) => void`): Writes one setting: "Use" a preset writes each of its settings.
- `settings` (`Settings`): The settings the "your settings" tab previews.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/models/ModelRows.tsx:370](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L370)

### `CreateExtensionDialog`

Component.

The create-extension dialog. Renders nothing when the host can't scaffold.

```ts
function CreateExtensionDialog(props: CreateExtensionDialogProps): Element | null
```

**Parameters**

- `props` (`CreateExtensionDialogProps`): Component props.

**Returns** `Element | null`

**Props**

- `className?` (`string`): Extra classes on the dialog's panel.
- `cwd` (`string | null`): The folder a project extension goes in. `null`: no project scope.
- `onCancel` (`() => void`): Back to the extensions list.
- `onClose` (`() => void`): Dismisses the dialog (X, Esc, done).
- `onOpen` (`(created: SettingsExtensionCreated) => Promise<void>`): Opens an authoring session on the new extension; a rejection shows in the dialog.
- `style?` (`CSSProperties`): Inline styles on the dialog's panel.

Source: [ui/src/settings/sections/extensions/CreateExtensionDialog.tsx:50](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/CreateExtensionDialog.tsx#L50)

### `DecisionModelRow`

Component.

The model that answers decisions from hooks and extensions. Only models the
credentials can send decisions to are pickable; when none can, the row
says why. Renders nothing when the host lists no decision models.

```ts
function DecisionModelRow(props: DecisionModelRowProps): Element | null
```

**Parameters**

- `props` (`DecisionModelRowProps`): Component props.

**Returns** `Element | null`

**Props**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `onChange` (`(value: string) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`string`): `Settings.decisionModel`: `"providerKey/modelId"`, or `''` for the first available.

Source: [ui/src/settings/sections/models/ModelRows.tsx:187](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L187)

### `EditorSection`

Component.

Renders the Files & editor preferences. Editing, Diagnostics and Language servers need the files host's
`editorPrefs`; the tree side needs an appearance host.

```ts
function EditorSection(props: EditorSectionProps): Element
```

**Parameters**

- `props` (`EditorSectionProps`): The session `cwd`, the app's `openIn`, `intro`, `diagnosticsTools` and `languageServers`,
  `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The active session's folder: the tool and server lists are for it. `null`: no session.
- `diagnosticsTools?` (`(cwd: string) => Promise<readonly EditorDiagnosticsTool[]>`): The project tools the diagnostics would run in a folder. Absent: no tool list.
- `intro?` (`ReactNode`): Shown above the groups (a tutorial card).
- `languageServers?` (`(cwd: string) => Promise<readonly EditorLanguageServer[]>`): The language servers known for a folder. Absent: no server list.
- `openIn?` (`{ onChange: (value: EditorOpenIn) => void; value: EditorOpenIn }`): Where clicked files open, and how to change it. Absent: no Opening › Open in row.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/editor/EditorSection.tsx:111](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/EditorSection.tsx#L111)

### `EnabledListSection`

Component.

Renders one enabled list of the nearest `SettingsProvider`'s settings. The entries toggle through
`update`; without it (or a connection that may not write) they are read-only.

```ts
function EnabledListSection(props: EnabledListSectionProps): Element
```

**Parameters**

- `props` (`EnabledListSectionProps`): The `settingKey`, the `hostName`, `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `hostName` (`string`): The host's name, for the lines.
- `settingKey` (`SettingsEnabledListKey`): Which list.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/enabled-list/EnabledListSection.tsx:43](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/enabled-list/EnabledListSection.tsx#L43)

### `EnvironmentsSection`

Component.

Renders the environment kinds of the nearest `SettingsProvider`'s host. Without the host's
`update` every control is read-only; without `verify` there is no connection test.

```ts
function EnvironmentsSection(props: EnvironmentsSectionProps): Element
```

**Parameters**

- `props` (`EnvironmentsSectionProps`): The folder, `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder new sessions would start in (`null`: none; kinds are described without one).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/environments/EnvironmentsSection.tsx:73](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/environments/EnvironmentsSection.tsx#L73)

### `ExtensionActionRow`

Component.

One action row: label and description, a live status line, and a Run button.

```ts
function ExtensionActionRow(props: ExtensionActionRowProps): Element
```

**Parameters**

- `props` (`ExtensionActionRowProps`): The action's label and description, its status, whether it runs, and the run.

**Returns** `Element`

**Props**

- `busy?` (`boolean`): This row's run is going: the button spins.
- `description?` (`string`): Help text under the label.
- `disabled?` (`boolean`): The button is off (another row's run is going).
- `label` (`string`): The action's label.
- `needsScope?` (`'chat' | 'admin' | null`): The token scope this client lacks to run it: the button is off, restricted ("Admin only").
- `status?` (`{ error?: boolean; text: string }`): The status line under the label (a run's result, a passive probe).
- `onRun` (`() => void`): Runs the action (the Run button).

Source: [ui/src/settings/sections/extensions/ExtensionConfigRows.tsx:61](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionConfigRows.tsx#L61)

### `ExtensionActions`

Component.

An extension row's controls: Edit, Update, Remove (asks first), then its folder. With
`onChangeOrigin`, a right click on Update or the arrow beside it opens "Update from <origin>"
and "Change origin…".

```ts
function ExtensionActions(props: ExtensionActionsProps): Element
```

**Parameters**

- `props` (`ExtensionActionsProps`): The `extension`, its busy and armed states, and the actions it offers.

**Returns** `Element`

Source: [ui/src/settings/sections/extensions/ExtensionsSection.tsx:488](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionsSection.tsx#L488)

### `ExtensionConfigRow`

Component.

One setting's row, by its type.

```ts
function ExtensionConfigRow(props: ExtensionConfigRowProps): Element
```

**Parameters**

- `props` (`ExtensionConfigRowProps`): The item, its value, the write, the model catalog and the lock.

**Returns** `Element`

**Props**

- `item` (`WireExtensionConfigItem`): The setting, as the host describes it.
- `lock?` (`ReactNode`): What a locked row shows beside its label (a lock chip).
- `locked?` (`boolean`): Shown, not editable (a declarative config entry sets it).
- `maskSecrets?` (`boolean`): A `secret` string is a password input.
- `modelCatalog?` (`readonly ModelListEntry[] | null`): The composer's model catalog for `model` items (`null` while loading or not asked).
- `modelCatalogFailed?` (`boolean`): The catalog could not load: `model` items take a free input.
- `switchRole?` (`boolean`): A boolean row is a `switch` (its checked state and name for assistive tech) instead of a plain button.
- `value` (`ExtensionConfigValue`): Its effective value.
- `onWrite` (`(value: ExtensionConfigValue) => void`): Writes a new value (an edit in the row).

Source: [ui/src/settings/sections/extensions/ExtensionConfigRows.tsx:129](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionConfigRows.tsx#L129)

### `ExtensionList`

Component.

The extensions with their boxes (`enabledExtensions`): a native one's mark, where it comes from, what it
adds. One that failed to load stays unchecked. This computer's Extensions and a server's draw it.

```ts
function ExtensionList(props: ExtensionListProps): Element
```

**Parameters**

- `props` (`ExtensionListProps`): The `catalog`, each extension's controls (`actionOf`), the `preamble` and the `emptyMessage`.

**Returns** `Element`

Source: [ui/src/settings/sections/extensions/ExtensionsSection.tsx:419](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionsSection.tsx#L419)

### `ExtensionOptionsSection`

Component.

The enabled extensions' options and action rows for `cwd` (an
`ExtensionsSection`'s children), or why there are none.

```ts
function ExtensionOptionsSection(props: ExtensionOptionsSectionProps): Element
```

**Parameters**

- `props` (`ExtensionOptionsSectionProps`): The folder, whether it shows, `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose enabled extensions' options show (`null`: none).
- `style?` (`CSSProperties`): Inline styles on the root.
- `visible?` (`boolean`): Whether the section is on screen: the passive probes run only then. Default: true.

Source: [ui/src/settings/sections/extensions/ExtensionOptionsSection.tsx:103](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionOptionsSection.tsx#L103)

### `ExtensionSourceBrowser`

Component.

Renders the extension source browser, open on the default source.

```ts
function ExtensionSourceBrowser(props: ExtensionSourceBrowserProps): Element
```

**Parameters**

- `props` (`ExtensionSourceBrowserProps`): Component props.

**Returns** `Element`

**Props**

- `browse` (`(input: string) => Promise<ExtensionSourceListing>`): Lists a source (`SettingsExtensionsHost.browse`).
- `className?` (`string`): Extra classes on the browser.
- `images?` (`SkillSourceImages`): Where the avatars come from. Defaults to GitHub.
- `initial?` (`string`): The source to open at once. Default: `DEFAULT_EXTENSION_SOURCE`.
- `installed?` (`readonly string[]`): Names of the extensions already installed: their rows say so and stay checked.
- `onToggle` (`(picks: readonly ExtensionPick[], on: boolean) => void`): Picks or unpicks extensions: one row, or a whole source.
- `picks` (`readonly ExtensionPick[]`): The extensions picked so far, from any source.
- `style?` (`CSSProperties`): Inline styles on the root element.

Source: [ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx:114](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx#L114)

### `ExtensionsSection`

Component.

Renders the extensions of the nearest `SettingsProvider`'s host for `cwd`.

```ts
function ExtensionsSection(props: ExtensionsSectionProps): Element
```

**Parameters**

- `props` (`ExtensionsSectionProps`): The folder, the app's `onEdit` and `onCreateExtension`, `children`, `className` and `style`.

**Returns** `Element`

**Props**

- `children?` (`ReactNode`): Under the list, in the same scroll (the extensions' options).
- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose project extensions show with the user's (`null`: none picked, nothing listed).
- `onCreateExtension?` (`() => void`): Opens the app's create-extension flow. Absent: no Create button.
- `onEdit?` (`(extension: SettingsExtension) => Promise<void>`): Opens an authoring session on an extension's folder (the app closes Settings). Absent: no Edit.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/extensions/ExtensionsSection.tsx:97](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionsSection.tsx#L97)

### `HostCatalogSection`

Component.

Renders one catalog of the nearest `SettingsProvider`'s host, as the host reports it.

```ts
function HostCatalogSection(props: HostCatalogSectionProps): Element | null
```

**Parameters**

- `props` (`HostCatalogSectionProps`): The kind, the host's name, the folder there, `children` (extensions), `className` and `style`.

**Returns** `Element | null`

**Props**

- `children?` (`ReactNode`): Under the extensions list, in the same scroll (the extensions' settings, as on This computer's page).
- `className?` (`string`): Extra classes on the root.
- `cwd?` (`string | null`): The session's folder on the host (adds its project scope); absent: the host user's scope.
- `hostName` (`string`): The host's name, in the copy.
- `kind` (`HostCatalogSectionKind`): Which catalog.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/host-catalog/HostCatalogSection.tsx:127](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/host-catalog/HostCatalogSection.tsx#L127)

### `InstructionsSection`

Component.

Renders what the session's agent is loaded with, from the nearest `SettingsProvider`'s host.

```ts
function InstructionsSection(props: InstructionsSectionProps): Element
```

**Parameters**

- `props` (`InstructionsSectionProps`): The session, whether its files are local, the markdown renderer, `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `localFiles?` (`boolean`): The session's files are on this device: offer to show them in the file manager. Default: true.
- `renderMarkdown?` (`(text: string) => ReactNode`): Renders an expanded instruction's text. Default: the kit's `Markdown` as a document.
- `sessionId` (`string | null`): The session whose prompt shows (`null`: none open).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/instructions/InstructionsSection.tsx:79](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/instructions/InstructionsSection.tsx#L79)

### `KeybindingsSection`

Component.

Renders every binding of the nearest `KeybindingsProvider`'s host (the defaults outside one). Edit in file
needs the host's `openInEditor`, Reload a host.

```ts
function KeybindingsSection(props: KeybindingsSectionProps): Element
```

**Parameters**

- `props` (`KeybindingsSectionProps`): Extra header `actions`, `className` and `style`.

**Returns** `Element`

**Props**

- `actions?` (`ReactNode`): More header actions after Edit in file and Reload (a desktop app's "Show in Finder").
- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/keybindings/KeybindingsSection.tsx:45](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/KeybindingsSection.tsx#L45)

### `LogsSection`

Component.

Renders the log records of the nearest `SettingsProvider`'s host, filtered by level and text. A connection
that may not write gets no `logs` (reading them is admin-only too): the frame shows, restricted and empty.

```ts
function LogsSection(props: LogsSectionProps): Element
```

**Parameters**

- `props` (`LogsSectionProps`): `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/logs/LogsSection.tsx:54](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/logs/LogsSection.tsx#L54)

### `McpSection`

Component.

Renders the MCP servers of the nearest `SettingsProvider`'s host (`mcp`). Without it the section shows
nothing to do; each action needs its host member, the switches need `update`, and a connection that may
not write (`writable`) sees the list and Add server restricted ("Admin only").

```ts
function McpSection(props: McpSectionProps): Element
```

**Parameters**

- `props` (`McpSectionProps`): The `cwd`, an `intro`, header `actions`, `className` and `style`.

**Returns** `Element`

**Props**

- `actions?` (`ReactNode`): More header actions after Test all, Refresh and Add server (a desktop app's "Show in Finder").
- `className?` (`string`): Extra classes on the root.
- `cwd?` (`string | null`): The folder whose servers to list. `null`, absent or `''`: the user's servers only.
- `intro?` (`ReactNode`): Above the list (an app's tutorial card).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/mcp/McpSection.tsx:80](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/mcp/McpSection.tsx#L80)

### `ModelListPicker`

Component.

The popover, portaled under `anchor` with the menu motion. The list mounts
fresh on every open (search, cursor and the selected-first order reset).
The forwarded ref is the surface, for the caller's outside-press check.

```ts
const ModelListPicker: ForwardRefExoticComponent<ModelListPickerProps & RefAttributes<HTMLDivElement>>
```

**Props**

- `anchor` (`HTMLElement | null`): The element it hangs under (right-aligned).
- `catalog` (`readonly ModelListEntry[] | null`): The catalog (`null` while loading). Deduped by model id.
- `className?` (`string`): Extra classes on the surface.
- `multi` (`boolean`): Toggle rows instead of picking one.
- `onClose` (`() => void`): Closes the popover.
- `onPick` (`(ids: string[]) => void`): The whole new selection: exactly one id in single mode.
- `open` (`boolean`): Whether the popover is open.
- `selected` (`readonly string[]`): The stored ids, in pick order.

Source: [ui/src/settings/sections/models/ModelListPicker.tsx:59](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelListPicker.tsx#L59)

### `ModelPickField`

Component.

A row that picks one model, with its Test and clear button.

```ts
function ModelPickField(props: ModelPickFieldProps): Element
```

**Parameters**

- `props` (`ModelPickFieldProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `clearTitle` (`string`): The clear button's tooltip.
- `cwd` (`string | null`): The folder whose models are listed (`null`: none).
- `description` (`string`): What the row sets.
- `emptyLabel` (`string`): The chip while nothing is picked ("last used", "main model").
- `fallback` (`ModelPickRef | null`): The model the empty chip stands for, tested while nothing is picked; `null`: Test waits for a pick.
- `hostId?` (`string | null`): A server's settings: its models and accounts (`null`: this computer).
- `label` (`string`): The row's name.
- `onChange` (`(pick: ModelPickRef | null) => void`): Sets the pick (`null`: clears it).
- `style?` (`CSSProperties`): Inline styles on the root.
- `value` (`ModelPickRef | null`): The pick, `null` while unset.

Source: [ui/src/settings/sections/models/ModelPickField.tsx:94](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelPickField.tsx#L94)

### `ModelTestButton`

Component.

A model row's Test button.

```ts
function ModelTestButton(props: ModelTestButtonProps): Element
```

**Parameters**

- `props` (`ModelTestButtonProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes.
- `disabled?` (`boolean`): Nothing to test (no model to name), or the row can't run now.
- `onTest` (`() => void`): Runs the Test.
- `state` (`ModelTestState | null`): The Test's state.
- `title` (`string`): Its tooltip.

Source: [ui/src/settings/sections/models/model-test.tsx:71](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/model-test.tsx#L71)

### `ModelTestLine`

Component.

How the last Test went, in one line under the row: the time, provider and model as badges.

```ts
function ModelTestLine(props: ModelTestLineProps): Element
```

**Parameters**

- `props` (`ModelTestLineProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes.
- `result` (`SettingsModelTest`): How the Test went.

Source: [ui/src/settings/sections/models/model-test.tsx:99](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/model-test.tsx#L99)

### `PerformanceHud`

Component.

Renders the overlay card.

```ts
function PerformanceHud(props: PerformanceHudProps): Element
```

**Parameters**

- `props` (`PerformanceHudProps`): The host and the card's actions.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the card (its position: `fixed bottom-3 right-3` by default).
- `host` (`SettingsPerformanceHost`): Where the figures come from.
- `onClose?` (`() => void`): Shows a close button.
- `onOpen?` (`() => void`): Shows a button that opens the full page.
- `style?` (`CSSProperties`): Inline styles on the card.

Source: [ui/src/settings/sections/performance/PerformanceHud.tsx:41](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/PerformanceHud.tsx#L41)

### `PerformanceSection`

Component.

Renders the nearest `SettingsProvider`'s host's performance figures.

```ts
function PerformanceSection(props: PerformanceSectionProps): Element
```

**Parameters**

- `props` (`PerformanceSectionProps`): `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/performance/PerformanceSection.tsx:78](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/PerformanceSection.tsx#L78)

### `PerfSparkline`

Component.

Draws the series. Decorative: the figure it trends sits next to it.

```ts
const PerfSparkline: MemoExoticComponent<(__namedParameters: PerfSparklineProps) => Element>
```

Source: [ui/src/settings/sections/performance/PerfSparkline.tsx:29](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/PerfSparkline.tsx#L29)

### `PluginList`

Component.

The plugins with their boxes (`enabledPlugins`): where each comes from, what enabling it brings in, and its
folder. This computer's Plugins and a server's draw it.

```ts
function PluginList(props: PluginListProps): Element
```

**Parameters**

- `props` (`PluginListProps`): The `catalog`, which plugins something holds on (`forcedEnabledOf`), the `preamble` and the `emptyMessage`.

**Returns** `Element`

Source: [ui/src/settings/sections/plugins/PluginsSection.tsx:90](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/plugins/PluginsSection.tsx#L90)

### `PluginsSection`

Component.

Renders the plugins of the nearest `SettingsProvider`'s host for `cwd`.

```ts
function PluginsSection(props: PluginsSectionProps): Element
```

**Parameters**

- `props` (`PluginsSectionProps`): The folder, `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose project plugins show with the user's (`null`: none picked).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/plugins/PluginsSection.tsx:48](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/plugins/PluginsSection.tsx#L48)

### `ProvidersSection`

Component.

Renders the providers of the nearest `SettingsProvider`'s host (`providers`). Without it the list is
empty; without an action, its control is hidden; a connection that may not write (`writable`) sees
the list restricted ("Admin only").

```ts
function ProvidersSection(props: ProvidersSectionProps): Element
```

**Parameters**

- `props` (`ProvidersSectionProps`): The `cwd`, an `intro`, `confirm`, `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `confirm?` (`AccountsConfirm`): Asks before Clear and Remove. Default: no question.
- `cwd?` (`string | null`): The folder whose extension providers count. `null` or absent: built-ins only.
- `intro?` (`ReactNode`): Above the list (an app's tutorial card).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/providers/ProvidersSection.tsx:70](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ProvidersSection.tsx#L70)

### `SelectRow`

Component.

A row whose value chip opens a menu of options: the current one checked, each with its icon,
description and why it may be disabled.

```ts
function SelectRow<T>(props: SelectRowProps<T>): Element
```

**Type parameters**

- `T`

**Parameters**

- `props` (`SelectRowProps<T>`): The row's text, its value and options, what sets it and why it may be inert.

**Returns** `Element`

**Props**

- `className?` (`string`): Classes merged on the row's button.
- `description?` (`ReactNode`): The row's description.
- `disabled?` (`boolean`, default `false`): Read-only here: inert, its value shown.
- `label` (`string`): The row's label, also the menu's name.
- `onChange` (`(value: T) => void`): An option was picked (not called for the current one).
- `options` (`readonly SelectRowOption<T>[]`): The options, in menu order.
- `style?` (`CSSProperties`): Inline styles on the row's button.
- `unavailable?` (`string`): Why the host can't apply the setting: the row is inert, shows it as unavailable, and this note replaces its description.
- `value` (`T`): The value now: its option is checked and named on the chip.

Source: [ui/src/settings/rows.tsx:155](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L155)

### `ServerProvidersSection`

Component.

Renders the providers of the nearest `SettingsProvider`'s host (`providers`) as a server's cards: Set API
key needs `setApiKey`, Sign in `signIn`, Remove `remove`; a connection that may not write (`writable`)
sees the cards restricted ("Admin only").

```ts
function ServerProvidersSection(props: ServerProvidersSectionProps): Element
```

**Parameters**

- `props` (`ServerProvidersSectionProps`): The `hostName`, an `intro`, `className` and `style`.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `hostName` (`string`): The server's name, for the lines.
- `intro?` (`ReactNode`): Above the list (an app's tutorial card), as on This computer's Accounts.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/providers/ServerProvidersSection.tsx:46](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ServerProvidersSection.tsx#L46)

### `ServerSignIn`

Component.

Renders a server sign-in from start to end.

```ts
function ServerSignIn(props: ServerSignInProps): Element
```

**Parameters**

- `props` (`ServerSignInProps`): `begin`, the `hostName` and `label` the lines name, `onClose`, `className` and `style`.

**Returns** `Element`

**Props**

- `begin` (`() => SignInFlow`): Starts the sign-in; called once, on mount.
- `className?` (`string`): Extra classes on the root.
- `hostName` (`string`): The server's name, for the lines.
- `label` (`string`): What is being signed in to, for the lines.
- `onClose` (`() => void`): Closes the strip (Cancel or Close).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/providers/ServerSignIn.tsx:43](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ServerSignIn.tsx#L43)

### `SettingFocus`

Component.

A row a deep link or search can land on: the shell scrolls
`[data-setting-focus]` into view and the row stays highlighted until the
user presses inside it.

```ts
function SettingFocus(props: SettingFocusProps): Element
```

**Parameters**

- `props` (`SettingFocusProps`): The row's focus id and the row.

**Returns** `Element`

**Props**

- `children` (`ReactNode`): The row.
- `id` (`string`): The row's id: what a search entry's `key` or a deep link's focus names.

Source: [ui/src/settings/section.tsx:57](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L57)

### `SettingsFrame`

Component.

The default frame: the nav column (a back button when the settings can be
left, the search, the nav, the footer) beside the open section under its
title. Below 640px the columns stack.

```ts
function SettingsFrame(
  props: SettingsFrameProps & { className?: string; style?: CSSProperties },
): Element
```

**Parameters**

- `props` (`SettingsFrameProps & { className?: string; style?: CSSProperties }`): What the shell hands its frame, plus the root's `className` and `style`.

**Returns** `Element`

**Props**

- `children` (`ReactNode`): The open section's body (or the search results).
- `description?` (`string`): The open section's description.
- `footer?` (`ReactNode`): What the app pinned under the nav.
- `headerActions` (`ReactNode`): The open section's header actions (and the app's).
- `lead?` (`ReactNode`): The open section's mark, before its title and description (`SettingsSection.lead`).
- `nav` (`ReactNode`): The section nav.
- `onClose?` (`() => void`): Leaves the settings, when the app can.
- `search` (`ReactNode`): The search field.
- `title` (`string`): The open section's title (empty with no sections).
- `className?` (`string`): Classes merged on the frame's root.
- `style?` (`CSSProperties`): Inline styles on the frame's root.

Source: [ui/src/settings/SettingsShell.tsx:289](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsShell.tsx#L289)

### `SettingsHeadingText`

Component.

Heading text that crossfades on change.

```ts
function SettingsHeadingText(props: SettingsHeadingTextProps): Element
```

**Parameters**

- `props` (`SettingsHeadingTextProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.
- `text` (`string`): The text.

Source: [ui/src/settings/SettingsHeadingText.tsx:28](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsHeadingText.tsx#L28)

### `SettingsHostSwitcher`

Component.

The settings screen's host switcher: a menu of the hosts, hidden with one.

```ts
function SettingsHostSwitcher(props: SettingsHostSwitcherProps): Element | null
```

**Parameters**

- `props` (`SettingsHostSwitcherProps`): The [`SettingsHostSwitcherProps`](https://zidane.si/docs/reference/ui-settings.md#SettingsHostSwitcherProps).

**Returns** `Element | null`

**Props**

- `className?` (`string`): Extra classes on the trigger.
- `hosts` (`readonly HostView[]`): This computer first, then the servers.
- `onChange` (`(hostId: string) => void`): A host was picked.
- `style?` (`CSSProperties`): Inline styles on the trigger.
- `value` (`string`): The shown host's id.

Source: [ui/src/settings/SettingsHostSwitcher.tsx:38](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsHostSwitcher.tsx#L38)

### `SettingsNav`

Component.

The section nav: a vertical tablist.

```ts
function SettingsNav(props: SettingsNavProps): Element
```

**Parameters**

- `props` (`SettingsNavProps`): The sections, the open one, their counts and what opens one.

**Returns** `Element`

**Props**

- `active` (`string`): The open section's id.
- `className?` (`string`): Classes merged on the tablist.
- `counts?` (`Readonly<Partial<Record<string, number>>>`): How many settings (or listed things) each section holds; absent or 0: no count.
- `onSelect` (`(id: string) => void`): Opens a section (a click, or ↑/↓ on the focused tab).
- `sections` (`readonly Pick<SettingsSection, 'icon' | 'group' | 'id' | 'title' | 'mark' | 'monogram'>[]`): The sections the shell offers.
- `style?` (`CSSProperties`): Inline styles on the tablist.

Source: [ui/src/settings/SettingsNav.tsx:132](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsNav.tsx#L132)

### `SettingsPanel`

Component.

A section body's full-height flex column, hosting one [`SettingsPanelBody`](https://zidane.si/docs/reference/ui-settings.md#SettingsPanelBody) (plus any fixed rows above it).

```ts
function SettingsPanel(props: SettingsPanelProps): Element
```

**Parameters**

- `props` (`SettingsPanelProps`): The column's content.

**Returns** `Element`

**Props**

- `children` (`ReactNode`): The body: one [`SettingsPanelBody`](https://zidane.si/docs/reference/ui-settings.md#SettingsPanelBody), plus any fixed rows above it.
- `className?` (`string`): Classes merged on the column.
- `style?` (`CSSProperties`): Inline styles on the column.

Source: [ui/src/settings/section.tsx:87](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L87)

### `SettingsPanelActions`

Component.

A kept-mounted section's header actions, portaled into the shell's header
(shown while the section is open). Renders nothing without actions or a
slot (a section that isn't kept mounted has none).

```ts
function SettingsPanelActions(props: SettingsPanelActionsProps): ReactPortal | null
```

**Parameters**

- `props` (`SettingsPanelActionsProps`): The buttons.

**Returns** `ReactPortal | null`

**Props**

- `actions?` (`ReactNode`): The section's header buttons (Refresh, Add…): the accent one rightmost.

Source: [ui/src/settings/section.tsx:161](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L161)

### `SettingsPanelBody`

Component.

A section body's only scrolling region, on the screen's reading column.

```ts
function SettingsPanelBody(props: SettingsPanelBodyProps): Element
```

**Parameters**

- `props` (`SettingsPanelBodyProps`): The rows, whether the column fills the height instead of scrolling, and the scroll region's name.

**Returns** `Element`

**Props**

- `children` (`ReactNode`): The section's rows.
- `className?` (`string`): Classes merged on the reading column.
- `fill?` (`boolean`, default `false`): The page itself never scrolls: the column takes the full height as a
  flex column, so a body can pin its controls on top and give one region
  (a log list) its own scroll.
- `scrollLabel?` (`string`): Names the scrolling region and puts it in the tab order, for a body
  with nothing focusable in it (read-only rows), so the keyboard can
  still scroll it. Ignored with `fill`.
- `style?` (`CSSProperties`): Inline styles on the reading column.

Source: [ui/src/settings/section.tsx:123](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L123)

### `SettingsProvider`

Component.

Provides a [`SettingsHost`](https://zidane.si/docs/reference/ui-settings-headless.md#SettingsHost) and optional label overrides to the settings components below it.

```ts
function SettingsProvider(props: SettingsProviderProps): Element
```

**Parameters**

- `props` (`SettingsProviderProps`): Provider props: the `host`, optional `labels`, the server's `hostName` and the `children` to render.

**Returns** `Element`

**Props**

- `children` (`ReactNode`): The components that read from `host`.
- `host` (`SettingsHost`): The host the settings components read from and write through.
- `hostName?` (`string`): The server whose settings `host` holds, by name: the descriptions and tutorials that would name this
  computer name it instead. Absent: this computer's settings.
- `labels?` (`Partial<{ settingsAdminOnly: string; settingsBlockedTitle: (requirement: string) => string; settingsClose: string; settingsCopyCommand: string; settingsDurabilityUnavailable: string; settingsError: (error: SettingsError) => string; settingsHostSwitcher: string; settingsHostSwitcherTrigger: (host: string) => string; settingsKilled: (env: string) => string; settingsKilledTitle: (env: string) => string; settingsLoading: string; settingsNavLabel: string; settingsNoResults: (query: string) => string; settingsRestrictedEmpty: string; settingsRetry: string; settingsSearchLabel: string; settingsSearchPlaceholder: string; settingsServerStart: string; settingsTitle: string; settingsUnavailable: string }>`): Overrides for the settings components' strings. Keys you leave out keep the default English label.

Source: [ui/src/settings/SettingsProvider.tsx:52](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L52)

### `SettingsRowsPage`

Component.

A layout page of settings rows over the settings host.

```ts
function SettingsRowsPage(props: SettingsRowsPageProps): Element
```

**Parameters**

- `props` (`SettingsRowsPageProps`): The page, what the app adds to it, and whether a server's settings are edited.

**Returns** `Element`

**Props**

- `actions?` (`readonly SettingsAction[]`): The app's actions (`{ action }` rows): a row opening a flow of the app's own.
- `className?` (`string`): Classes merged on the page's column.
- `customRows?` (`Readonly<Partial<Record<SettingsCustomRowId, () => ReactNode>>>`): The app's custom rows, called on every render; `null` hides the row.
- `durabilityUnavailable?` (`boolean`, default `false`): The host's session store has no durability (memory, file map): Crash recovery shows as unavailable and is inert.
- `killSwitches?` (`readonly string[]`): Kill-switch env vars engaged where the agent runs: a toggle gated by one is inert.
- `notes?` (`Readonly<Partial<Record<SettingsSectionNoteId, () => ReactNode>>>`): A note under a section (`note`), by its id.
- `page` (`SettingsSectionsPage`): The layout page to draw.
- `renderRow?` (`(key: keyof Settings, values: Settings) => ReactNode`): The app's own row for a catalog key; `undefined` keeps the kit's toggle or choice row.
- `rowExtra?` (`(key: string) => ReactNode`): Drawn after each catalog row, inside its focus target (where the value came from…).
- `server?` (`boolean`, default `false`): Editing a server's settings: the page's `localOnly` parts (this computer's) are left out.
- `spaces?` (`() => ReactNode`): The Spaces section (`{ panel: 'spaces' }`).
- `spacesOnServer?` (`boolean`, default `false`): The app's spaces live in the server's settings (the web app's do): Spaces stays while `server`.
- `style?` (`CSSProperties`): Inline styles on the page's column.

Source: [ui/src/settings/SettingsRowsPage.tsx:78](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsRowsPage.tsx#L78)

### `SettingsShell`

Component.

The settings screen: nav, search and the open section.

```ts
function SettingsShell(props: SettingsShellProps): Element
```

**Parameters**

- `props` (`SettingsShellProps`): The sections, where to open, the counts, extra search entries, the footer, header actions and frame.

**Returns** `Element`

**Props**

- `className?` (`string`): On the default frame's root.
- `counts?` (`Readonly<Partial<Record<string, number>>>`): How many settings (or listed things) each section holds, drawn in the nav.
- `extraSearch?` (`readonly SettingsSearchHit[]`): More search entries (things inside a section the section's own `search` can't list up front).
- `footer?` (`ReactNode`): Pinned under the nav (the app version, a setup link).
- `headerActions?` (`(state: { active: string; searching: boolean }) => ReactNode`): The app's own header controls, beside the open section's.
- `initialFocus?` (`string`): The row to land on and highlight (its `data-setting-focus` id).
- `initialSection?` (`string`): The section to open on. Default: the first. An id the shell doesn't hold opens the first.
- `onClose?` (`() => void`): Leaves the settings: the default frame's back button and Esc.
- `onSelect?` (`(id: string) => void`): Tells the app which section is open (after a nav pick, a search pick or `select`).
- `renderFrame?` (`(frame: SettingsFrameProps) => ReactNode`): Draws the frame. Default: [`SettingsFrame`](https://zidane.si/docs/reference/ui-settings.md#SettingsFrame).
- `sections` (`readonly SettingsSection[]`): The sections, in nav order (a grouped one after its entry).
- `style?` (`CSSProperties`): On the default frame's root.

Source: [ui/src/settings/SettingsShell.tsx:93](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsShell.tsx#L93)

### `SettingsTutorial`

Component.

Renders the tutorial of a settings page.

```ts
function SettingsTutorial(props: SettingsTutorialProps): Element
```

**Parameters**

- `props` (`SettingsTutorialProps`): Component props.

**Returns** `Element`

**Props**

- `actions?` (`ReactNode`): Buttons that need the page's state. They come after the page's own action.
- `className?` (`string`): Extra classes on the block.
- `topic` (`TutorialTopic`): What the page is about.

Source: [ui/src/settings/SettingsTutorial.tsx:30](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsTutorial.tsx#L30)

### `SkillsSection`

Component.

Renders the skills of the nearest `SettingsProvider`'s host for `cwd`.

```ts
function SkillsSection(props: SkillsSectionProps): Element
```

**Parameters**

- `props` (`SkillsSectionProps`): The folder, the app's `onEdit` and header `actions`, `className` and `style`.

**Returns** `Element`

**Props**

- `actions?` (`ReactNode`): More header actions after Refresh (a desktop app's "Show the skills folder").
- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose project skills show with the user's (`null`: none picked, nothing listed).
- `onEdit?` (`(skill: SkillConfig) => Promise<void>`): Opens an authoring session on a skill's folder (the app closes Settings). Absent: no Edit.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/skills/SkillsSection.tsx:55](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/skills/SkillsSection.tsx#L55)

### `SpacesDefaultsSection`

Component.

The Spaces sections of the General page: the switch, then the list with each space's defaults while it is on.

```ts
function SpacesDefaultsSection(props: SpacesDefaultsSectionProps): Element
```

**Parameters**

- `props` (`SpacesDefaultsSectionProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`): Extra classes on each space's rows.
- `cwd` (`string | null`): The folder whose agents and models the rows list (`null`: none).
- `style?` (`CSSProperties`): Inline styles on each space's rows.

Source: [ui/src/settings/sections/models/SpacesDefaultsSection.tsx:29](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/SpacesDefaultsSection.tsx#L29)

### `TextModelRow`

Component.

The model that writes session titles and suggestions; automatic is the session provider's smallest.

```ts
function TextModelRow(props: TextModelRowProps): Element
```

**Parameters**

- `props` (`TextModelRowProps`): Component props.

**Returns** `Element`

**Props**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `main` (`ModelPickRef`): The default model new sessions run on; the automatic chip names its provider's pick.
- `onChange` (`(value: string) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`string`): `Settings.textModel`: `"providerKey[@account]/modelId"`, or `''` for automatic.

Source: [ui/src/settings/sections/models/ModelRows.tsx:85](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L85)

### `ToggleRow`

Component.

A catalog toggle as a row: label, description (or why it is inert) and a switch.

```ts
function ToggleRow(props: ToggleRowProps): Element
```

**Parameters**

- `props` (`ToggleRowProps`): The toggle, its value, what flips it and why it may be inert.

**Returns** `Element`

**Props**

- `blockedBy?` (`string`): Label of the `row.requires` setting while it is off: the row renders inert, keeps its description, and its title names the setting.
- `className?` (`string`): Classes merged on the row's button.
- `disabled?` (`boolean`): Read-only here (the host can't write): inert, its value shown.
- `heldOn?` (`string`): Why another setting holds the row on whatever its value says (`toggleHeldOn`): the row renders on and inert with this note.
- `killedBy?` (`string`): The row's kill-switch env var while it is engaged: the feature is off whatever the setting says, so the row is inert and names it.
- `onToggle` (`() => void`): Flips the setting (not called while the row is inert).
- `row` (`SettingsToggle`): The catalog toggle the row draws (label, description, gates).
- `style?` (`CSSProperties`): Inline styles on the row's button.
- `value` (`boolean`): The setting's value.

Source: [ui/src/settings/rows.tsx:43](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L43)

### `ValueChip`

Component.

The value of a row that picks one (a choice, a model, an agent): the
caret says it opens a menu. Muted while it names a default or an
unavailable setting.

```ts
function ValueChip(props: ValueChipProps): Element
```

**Parameters**

- `props` (`ValueChipProps`): The value, muted or not, and its tooltip.

**Returns** `Element`

**Props**

- `children` (`ReactNode`): The value's label.
- `className?` (`string`): Classes merged on the chip.
- `muted?` (`boolean`, default `false`): It names a default left unset ("last used", "automatic (Haiku)") or an unavailable setting.
- `style?` (`CSSProperties`): Inline styles on the chip.
- `title?` (`string`): The chip's tooltip.

Source: [ui/src/settings/rows.tsx:241](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L241)

## Functions

### `agentDefaultsOf`

Function.

The host's defaults for new sessions (Settings › Agent › Defaults), as the rows edit them.

```ts
function agentDefaultsOf(settings: Settings): AgentDefaultsValue
```

**Parameters**

- `settings` (`Settings`): The settings.

**Returns** `AgentDefaultsValue`

Source: [ui/src/settings/sections/models/AgentDefaults.tsx:49](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/AgentDefaults.tsx#L49)

### `agentDefaultsPatch`

Function.

The settings patch that stores `value` as the host's defaults.

```ts
function agentDefaultsPatch(value: AgentDefaultsValue): Partial<Settings>
```

**Parameters**

- `value` (`AgentDefaultsValue`): The defaults the rows set.

**Returns** `Partial<Settings>`

Source: [ui/src/settings/sections/models/AgentDefaults.tsx:64](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/AgentDefaults.tsx#L64)

### `appearanceSettingsSection`

Function.

The Appearance section, over the nearest `AppearanceProvider`.

```ts
function appearanceSettingsSection(
  props?: AppearanceSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props?` (`AppearanceSectionProps`, default `{}`): What [`AppearanceSection`](https://zidane.si/docs/reference/ui-settings.md#AppearanceSection) takes (the app's `appIcon`, `onReset`).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:65](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L65)

### `automaticTextModel`

Function.

The automatic text model for `main`'s provider; the main model when the catalog offers nothing smaller.

```ts
function automaticTextModel(
  main: ModelPickRef,
  catalog: readonly ComposerModelEntry[] | null,
): ModelPickRef
```

**Parameters**

- `main` (`ModelPickRef`): The model new sessions run on.
- `catalog` (`readonly ComposerModelEntry[] | null`): The chat models.

**Returns** `ModelPickRef`

Source: [ui/src/settings/sections/models/ModelRows.tsx:57](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L57)

### `editorSettingsSection`

Function.

The Files & editor section, over the nearest `FilesProvider` (editor preferences) and `AppearanceProvider`.

```ts
function editorSettingsSection(
  props: EditorSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`EditorSectionProps`): What [`EditorSection`](https://zidane.si/docs/reference/ui-settings.md#EditorSection) takes (the session `cwd`, the app's `openIn` and lists).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:78](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L78)

### `enabledListSettingsSection`

Function.

A host's enabled list (for a host that can't list its catalog) in its page's place.

```ts
function enabledListSettingsSection(
  props: EnabledListSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`EnabledListSectionProps`): What [`EnabledListSection`](https://zidane.si/docs/reference/ui-settings.md#EnabledListSection) takes (the list, the host's name).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:256](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L256)

### `environmentsSettingsSection`

Function.

The Environments section, over the settings host's `environments` group.

```ts
function environmentsSettingsSection(
  props: EnvironmentsSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`EnvironmentsSectionProps`): What [`EnvironmentsSection`](https://zidane.si/docs/reference/ui-settings.md#EnvironmentsSection) takes (the folder).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:156](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L156)

### `extensionConfigValue`

Function.

The value a row shows for what is stored — mirrors the core resolver's
default-first checks (type, number range, string pattern, enum membership)
so the row never shows a value the agent would actually ignore. The author
`validate` can't cross the IPC boundary, so it's the one check not mirrored
here; the authoritative default-first read still happens agent-side via the
core resolver.

```ts
function extensionConfigValue(
  item: WireExtensionConfigItem,
  persisted: unknown,
): ExtensionConfigValue
```

**Parameters**

- `item` (`WireExtensionConfigItem`): The setting.
- `persisted` (`unknown`): What is stored for it, if anything.

**Returns** `ExtensionConfigValue`

Source: [ui/src/settings/sections/extensions/ExtensionConfigRows.tsx:472](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionConfigRows.tsx#L472)

### `extensionPickOf`

Function.

The pick of a listed extension. `undefined` for one with no way to install.

```ts
function extensionPickOf(entry: ExtensionSourceEntry): ExtensionPick | undefined
```

**Parameters**

- `entry` (`ExtensionSourceEntry`): The listed extension.

**Returns** `ExtensionPick | undefined`

Source: [ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx:47](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx#L47)

### `extensionsSettingsSection`

Function.

The Extensions section, over the settings host's `extensions` group.

```ts
function extensionsSettingsSection(
  props: ExtensionsSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`ExtensionsSectionProps`): What [`ExtensionsSection`](https://zidane.si/docs/reference/ui-settings.md#ExtensionsSection) takes (the folder, `onEdit`, `onCreateExtension`, `children`).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:117](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L117)

### `filterModelList`

Function.

The entries whose search text holds every word of `query`.

```ts
function filterModelList<E extends ModelListEntry>(
  catalog: readonly E[],
  query: string,
): E[]
```

**Type parameters**

- `E` (`extends ModelListEntry`)

**Parameters**

- `catalog` (`readonly E[]`): The entries.
- `query` (`string`): What was typed.

**Returns** `E[]`

Source: [ui/src/settings/sections/models/ModelListPicker.tsx:89](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelListPicker.tsx#L89)

### `hostCatalogSettingsSection`

Function.

A host's own catalog (a server's Skills, Extensions or Plugins) in that page's place,
over the settings host's `hostCatalog` group.

```ts
function hostCatalogSettingsSection(
  props: HostCatalogSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`HostCatalogSectionProps`): What [`HostCatalogSection`](https://zidane.si/docs/reference/ui-settings.md#HostCatalogSection) takes (the kind, the host's name, the folder there).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:197](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L197)

### `instructionsSettingsSection`

Function.

The Instructions section, over the settings host's `instructions` group.

```ts
function instructionsSettingsSection(
  props: InstructionsSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`InstructionsSectionProps`): What [`InstructionsSection`](https://zidane.si/docs/reference/ui-settings.md#InstructionsSection) takes (the session).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:143](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L143)

### `keybindingsSettingsSection`

Function.

The Keybindings section, over the nearest `KeybindingsProvider`.

```ts
function keybindingsSettingsSection(
  props?: KeybindingsSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props?` (`KeybindingsSectionProps`, default `{}`): What [`KeybindingsSection`](https://zidane.si/docs/reference/ui-settings.md#KeybindingsSection) takes (extra header `actions`).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:91](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L91)

### `logsSettingsSection`

Function.

The Logs section, over the settings host's `logs` group.

```ts
function logsSettingsSection(
  props?: LogsSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props?` (`LogsSectionProps`, default `{}`): What [`LogsSection`](https://zidane.si/docs/reference/ui-settings.md#LogsSection) takes.
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:169](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L169)

### `mcpSettingsSection`

Function.

MCP servers, over the settings host's `mcp` group and its settings document.

```ts
function mcpSettingsSection(
  props?: McpSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props?` (`McpSectionProps`, default `{}`): What [`McpSection`](https://zidane.si/docs/reference/ui-settings.md#McpSection) takes (the folder, an `intro`, header `actions`).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:236](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L236)

### `modelPickLabel`

Function.

"Opus 4.6 on Anthropic (Work)" for a stored pick, from the catalog when it lists it.

```ts
function modelPickLabel(
  pick: ModelPickRef,
  catalog: readonly ComposerModelEntry[] | null,
  l: Pick<ModelRowsLabels, 'modelRowsPickLabel' | 'modelRowsAccountSignedOut'>,
): string
```

**Parameters**

- `pick` (`ModelPickRef`): The pick.
- `catalog` (`readonly ComposerModelEntry[] | null`): The catalog (`null` while loading).
- `l` (`Pick<ModelRowsLabels, 'modelRowsPickLabel' | 'modelRowsAccountSignedOut'>`): The model rows' labels.

**Returns** `string`

Source: [ui/src/settings/sections/models/ModelPickField.tsx:35](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelPickField.tsx#L35)

### `navOrder`

Function.

The nav's rows in order: each top-level section, then the sections grouped under it, each followed
by the ones grouped under it in turn.

```ts
function navOrder<S extends Pick<SettingsSection, 'group' | 'id'>>(
  sections: readonly S[],
): S[]
```

**Type parameters**

- `S` (`extends Pick<SettingsSection, 'group' | 'id'>`)

**Parameters**

- `sections` (`readonly S[]`): The sections, in the app's order.

**Returns** `S[]`: The rows as the nav lists them.

Source: [ui/src/settings/SettingsNav.tsx:102](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsNav.tsx#L102)

### `performanceSettingsSection`

Function.

The Performance section, over the settings host's `performance` member. Kept mounted, it
watches only while open.

```ts
function performanceSettingsSection(
  props?: PerformanceSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props?` (`PerformanceSectionProps`, default `{}`): What [`PerformanceSection`](https://zidane.si/docs/reference/ui-settings.md#PerformanceSection) takes.
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:183](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L183)

### `pluginsSettingsSection`

Function.

The Plugins section, over the settings host's `plugins` group.

```ts
function pluginsSettingsSection(
  props: PluginsSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`PluginsSectionProps`): What [`PluginsSection`](https://zidane.si/docs/reference/ui-settings.md#PluginsSection) takes (the folder).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:130](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L130)

### `providersSettingsSection`

Function.

Accounts (providers and keys), over the settings host's `providers` group.

```ts
function providersSettingsSection(
  props?: ProvidersSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props?` (`ProvidersSectionProps`, default `{}`): What [`ProvidersSection`](https://zidane.si/docs/reference/ui-settings.md#ProvidersSection) takes (the folder, an `intro`, `confirm`).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:210](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L210)

### `serverProvidersSettingsSection`

Function.

A server's Accounts as cards, over the settings host's `providers` group (that server's).

```ts
function serverProvidersSettingsSection(
  props: ServerProvidersSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`ServerProvidersSectionProps`): What [`ServerProvidersSection`](https://zidane.si/docs/reference/ui-settings.md#ServerProvidersSection) takes (the server's name).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:223](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L223)

### `skillsSettingsSection`

Function.

The Skills section, over the settings host's `skills` group.

```ts
function skillsSettingsSection(
  props: SkillsSectionProps,
  overrides?: PreferenceSectionOverrides,
): SettingsSection
```

**Parameters**

- `props` (`SkillsSectionProps`): What [`SkillsSection`](https://zidane.si/docs/reference/ui-settings.md#SkillsSection) takes (the folder, the app's `onEdit` and header `actions`).
- `overrides?` (`PreferenceSectionOverrides`, default `{}`): The title, description or group, instead of the layout's.

**Returns** `SettingsSection`

Source: [ui/src/settings/sections/descriptors.tsx:104](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L104)

### `spaceDefaults`

Function.

A space's defaults for new sessions, as the rows edit them.

```ts
function spaceDefaults(space: Space): AgentDefaultsValue
```

**Parameters**

- `space` (`Space`): The space.

**Returns** `AgentDefaultsValue`

Source: [ui/src/settings/sections/models/SpacesDefaultsSection.tsx:54](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/SpacesDefaultsSection.tsx#L54)

### `useAccountsSectionLabels`

Function.

The Accounts sections' strings, overridable through `LabelsProvider`.

```ts
function useAccountsSectionLabels(): { accountsAccountName: string; accountsAccountNamePlaceholder: string; accountsAddAccount: string; accountsApiKeyChip: string; accountsAuthenticated: string; accountsCancel: string; accountsClear: string; accountsClearConfirm: (provider: string) => string; accountsClearing: string; accountsConfigure: string; accountsConfigured: string; accountsEditConfig: string; accountsError: (error: SettingsError) => string; accountsFromExtension: string; accountsInUse: string; accountsKeepSecret: string; accountsKeyField: (provider: string) => string; accountsKeyPlaceholder: string; accountsNotAuthenticated: string; accountsOAuthChip: string; accountsReauth: string; accountsReauthTitle: (name: string) => string; accountsRemove: string; accountsRemoveConfirm: (provider: string, name: string, active: boolean) => string; accountsRemoveTitle: (name: string, provider: string) => string; accountsRemoving: string; accountsRename: string; accountsRenameCancel: string; accountsRenameCancelTitle: string; accountsRenameField: (name: string) => string; accountsRenamePlaceholder: string; accountsRenameSave: string; accountsRenameSaveTitle: string; accountsRenameTitle: (name: string) => string; accountsRenaming: string; accountsReplaceKey: string; accountsRequired: string; accountsSave: string; accountsSaveConfig: string; accountsSaving: string; accountsServerActive: string; accountsServerApiKey: string; accountsServerConfigured: string; accountsServerNotConfigured: string; accountsServerOAuth: (account: string | undefined) => string; accountsServerReadFailed: (host: string, reason: string) => string; accountsServerReading: (host: string) => string; accountsServerSetKey: string; accountsSetKey: string; accountsSignIn: string; accountsSignInBrowser: (service: string) => string; accountsSignInCancel: string; accountsSignInClose: string; accountsSignInCode: string; accountsSignInDevice: string; accountsSignInDone: (host: string) => string; accountsSignInPasteField: string; accountsSignInPastePlaceholder: string; accountsSignInSend: string; accountsSignInSending: (host: string) => string; accountsSignInStarting: (host: string) => string; accountsSignInWith: (account: string) => string; accountsSources: (provider: string) => string; accountsSwitching: string; accountsUse: string; accountsUseTitle: (source: string, provider: string) => string }
```

**Returns** `{ accountsAccountName: string; accountsAccountNamePlaceholder: string; accountsAddAccount: string; accountsApiKeyChip: string; accountsAuthenticated: string; accountsCancel: string; accountsClear: string; accountsClearConfirm: (provider: string) => string; accountsClearing: string; accountsConfigure: string; accountsConfigured: string; accountsEditConfig: string; accountsError: (error: SettingsError) => string; accountsFromExtension: string; accountsInUse: string; accountsKeepSecret: string; accountsKeyField: (provider: string) => string; accountsKeyPlaceholder: string; accountsNotAuthenticated: string; accountsOAuthChip: string; accountsReauth: string; accountsReauthTitle: (name: string) => string; accountsRemove: string; accountsRemoveConfirm: (provider: string, name: string, active: boolean) => string; accountsRemoveTitle: (name: string, provider: string) => string; accountsRemoving: string; accountsRename: string; accountsRenameCancel: string; accountsRenameCancelTitle: string; accountsRenameField: (name: string) => string; accountsRenamePlaceholder: string; accountsRenameSave: string; accountsRenameSaveTitle: string; accountsRenameTitle: (name: string) => string; accountsRenaming: string; accountsReplaceKey: string; accountsRequired: string; accountsSave: string; accountsSaveConfig: string; accountsSaving: string; accountsServerActive: string; accountsServerApiKey: string; accountsServerConfigured: string; accountsServerNotConfigured: string; accountsServerOAuth: (account: string | undefined) => string; accountsServerReadFailed: (host: string, reason: string) => string; accountsServerReading: (host: string) => string; accountsServerSetKey: string; accountsSetKey: string; accountsSignIn: string; accountsSignInBrowser: (service: string) => string; accountsSignInCancel: string; accountsSignInClose: string; accountsSignInCode: string; accountsSignInDevice: string; accountsSignInDone: (host: string) => string; accountsSignInPasteField: string; accountsSignInPastePlaceholder: string; accountsSignInSend: string; accountsSignInSending: (host: string) => string; accountsSignInStarting: (host: string) => string; accountsSignInWith: (account: string) => string; accountsSources: (provider: string) => string; accountsSwitching: string; accountsUse: string; accountsUseTitle: (source: string, provider: string) => string }`

Source: [ui/src/settings/sections/providers/ProvidersSection.tsx:39](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ProvidersSection.tsx#L39)

### `useAppearanceSectionLabels`

Function.

The Appearance section's strings, overridable through `LabelsProvider`.

```ts
function useAppearanceSectionLabels(): { appearanceSectionAccent: string; appearanceSectionAccentCaption: string; appearanceSectionAccentCustom: string; appearanceSectionAccentCustomAria: string; appearanceSectionAccentTheme: string; appearanceSectionActive: string; appearanceSectionAppIcon: string; appearanceSectionCodeAuto: string; appearanceSectionCodeDark: string; appearanceSectionCodeLight: string; appearanceSectionCodeTheme: string; appearanceSectionCodeThemeOf: (slot: string) => string; appearanceSectionContrast: string; appearanceSectionDarkTheme: string; appearanceSectionFontChat: string; appearanceSectionFontChatDefault: string; appearanceSectionFontChatDescription: string; appearanceSectionFontCode: string; appearanceSectionFontCodeDefault: string; appearanceSectionFontCodeDescription: string; appearanceSectionFontInterface: string; appearanceSectionFontInterfaceDefault: string; appearanceSectionFontInterfaceDescription: string; appearanceSectionFontOf: (label: string) => string; appearanceSectionFontPrompt: string; appearanceSectionFontPromptDefault: string; appearanceSectionFontPromptDescription: string; appearanceSectionFonts: string; appearanceSectionFontSample: string; appearanceSectionFontsCurated: string; appearanceSectionFontsInstalled: (count: number) => string; appearanceSectionFontsShowAll: string; appearanceSectionFontsUnavailable: string; appearanceSectionInterfaceSize: string; appearanceSectionInterfaceSizeDescription: string; appearanceSectionLightTheme: string; appearanceSectionMode: string; appearanceSectionModeCaption: string; appearanceSectionModeDark: string; appearanceSectionModeLight: string; appearanceSectionModeSystem: string; appearanceSectionMotion: string; appearanceSectionMotionCaption: string; appearanceSectionMotionFull: string; appearanceSectionMotionOff: string; appearanceSectionMotionReduced: string; appearanceSectionMotionSystem: string; appearanceSectionNoThemes: string; appearanceSectionPanelAnimation: string; appearanceSectionPanelAnimationPlain: string; appearanceSectionPanelAnimationSprings: string; appearanceSectionReset: string; appearanceSectionResetDescription: string; appearanceSectionResetLabel: string; appearanceSectionSizeChat: string; appearanceSectionSizeCode: string; appearanceSectionSizePrompt: string; appearanceSectionSizes: string; appearanceSectionSprings: string; appearanceSectionSpringsNeedsFull: string; appearanceSectionSpringsOff: string; appearanceSectionSpringsOn: string; appearanceSectionTextContrast: string; appearanceSectionTextContrastDescription: string; appearanceSectionTitle: string }
```

**Returns** `{ appearanceSectionAccent: string; appearanceSectionAccentCaption: string; appearanceSectionAccentCustom: string; appearanceSectionAccentCustomAria: string; appearanceSectionAccentTheme: string; appearanceSectionActive: string; appearanceSectionAppIcon: string; appearanceSectionCodeAuto: string; appearanceSectionCodeDark: string; appearanceSectionCodeLight: string; appearanceSectionCodeTheme: string; appearanceSectionCodeThemeOf: (slot: string) => string; appearanceSectionContrast: string; appearanceSectionDarkTheme: string; appearanceSectionFontChat: string; appearanceSectionFontChatDefault: string; appearanceSectionFontChatDescription: string; appearanceSectionFontCode: string; appearanceSectionFontCodeDefault: string; appearanceSectionFontCodeDescription: string; appearanceSectionFontInterface: string; appearanceSectionFontInterfaceDefault: string; appearanceSectionFontInterfaceDescription: string; appearanceSectionFontOf: (label: string) => string; appearanceSectionFontPrompt: string; appearanceSectionFontPromptDefault: string; appearanceSectionFontPromptDescription: string; appearanceSectionFonts: string; appearanceSectionFontSample: string; appearanceSectionFontsCurated: string; appearanceSectionFontsInstalled: (count: number) => string; appearanceSectionFontsShowAll: string; appearanceSectionFontsUnavailable: string; appearanceSectionInterfaceSize: string; appearanceSectionInterfaceSizeDescription: string; appearanceSectionLightTheme: string; appearanceSectionMode: string; appearanceSectionModeCaption: string; appearanceSectionModeDark: string; appearanceSectionModeLight: string; appearanceSectionModeSystem: string; appearanceSectionMotion: string; appearanceSectionMotionCaption: string; appearanceSectionMotionFull: string; appearanceSectionMotionOff: string; appearanceSectionMotionReduced: string; appearanceSectionMotionSystem: string; appearanceSectionNoThemes: string; appearanceSectionPanelAnimation: string; appearanceSectionPanelAnimationPlain: string; appearanceSectionPanelAnimationSprings: string; appearanceSectionReset: string; appearanceSectionResetDescription: string; appearanceSectionResetLabel: string; appearanceSectionSizeChat: string; appearanceSectionSizeCode: string; appearanceSectionSizePrompt: string; appearanceSectionSizes: string; appearanceSectionSprings: string; appearanceSectionSpringsNeedsFull: string; appearanceSectionSpringsOff: string; appearanceSectionSpringsOn: string; appearanceSectionTextContrast: string; appearanceSectionTextContrastDescription: string; appearanceSectionTitle: string }`

Source: [ui/src/settings/sections/appearance/AppearanceSection.tsx:48](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/appearance/AppearanceSection.tsx#L48)

### `useClaudeImportAvailable`

Function.

Whether the provided settings host has a Claude Code setup to import.

```ts
function useClaudeImportAvailable(): boolean
```

**Returns** `boolean`: `false` until the host says so, and without `claudeImport`.

Source: [ui/src/settings/sections/claude-import/use-claude-import-available.ts:17](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/claude-import/use-claude-import-available.ts#L17)

### `useClaudeImportLabels`

Function.

The Claude Code import dialog's strings, overridable through `LabelsProvider`.

```ts
function useClaudeImportLabels(): { claudeImportAgentsTitle: string; claudeImportAllProjects: string; claudeImportAlready: (n: number) => string; claudeImportCommands: string; claudeImportCommandsDetail: string; claudeImportCommandsTitle: string; claudeImportConversations: string; claudeImportCopied: (n: number) => string; claudeImportDescription: string; claudeImportDone: string; claudeImportEmpty: (n: number) => string; claudeImportFailed: (error: string) => string; claudeImportFailedCount: (n: number) => string; claudeImportHostNote: (server: string) => string; claudeImportImported: (n: number) => string; claudeImportImporting: string; claudeImportLooking: string; claudeImportMcps: string; claudeImportMcpsDetail: string; claudeImportNone: string; claudeImportProjectCounts: (project: number, all: number) => string; claudeImportRun: string; claudeImportSkills: string; claudeImportSkillsDetail: string; claudeImportSkipped: (n: number) => string; claudeImportSkippedTitle: string; claudeImportTitle: string; claudeImportTranscripts: (n: number) => string }
```

**Returns** `{ claudeImportAgentsTitle: string; claudeImportAllProjects: string; claudeImportAlready: (n: number) => string; claudeImportCommands: string; claudeImportCommandsDetail: string; claudeImportCommandsTitle: string; claudeImportConversations: string; claudeImportCopied: (n: number) => string; claudeImportDescription: string; claudeImportDone: string; claudeImportEmpty: (n: number) => string; claudeImportFailed: (error: string) => string; claudeImportFailedCount: (n: number) => string; claudeImportHostNote: (server: string) => string; claudeImportImported: (n: number) => string; claudeImportImporting: string; claudeImportLooking: string; claudeImportMcps: string; claudeImportMcpsDetail: string; claudeImportNone: string; claudeImportProjectCounts: (project: number, all: number) => string; claudeImportRun: string; claudeImportSkills: string; claudeImportSkillsDetail: string; claudeImportSkipped: (n: number) => string; claudeImportSkippedTitle: string; claudeImportTitle: string; claudeImportTranscripts: (n: number) => string }`

Source: [ui/src/settings/sections/claude-import/ClaudeImportDialog.tsx:32](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/claude-import/ClaudeImportDialog.tsx#L32)

### `useCreateExtensionLabels`

Function.

The create-extension dialog's strings, overridable through `LabelsProvider`.

```ts
function useCreateExtensionLabels(): { createExtensionCancel: string; createExtensionClose: string; createExtensionCreated: string; createExtensionCreatedTitle: string; createExtensionCreating: string; createExtensionDescription: string; createExtensionName: string; createExtensionNameHint: string; createExtensionNamePlaceholder: string; createExtensionNoFolder: string; createExtensionOpen: string; createExtensionOpening: string; createExtensionProjectPath: string; createExtensionScope: string; createExtensionScopeProject: string; createExtensionScopeUser: string; createExtensionSubmit: string; createExtensionTitle: string; createExtensionTrust: string; createExtensionUserPath: string }
```

**Returns** `{ createExtensionCancel: string; createExtensionClose: string; createExtensionCreated: string; createExtensionCreatedTitle: string; createExtensionCreating: string; createExtensionDescription: string; createExtensionName: string; createExtensionNameHint: string; createExtensionNamePlaceholder: string; createExtensionNoFolder: string; createExtensionOpen: string; createExtensionOpening: string; createExtensionProjectPath: string; createExtensionScope: string; createExtensionScopeProject: string; createExtensionScopeUser: string; createExtensionSubmit: string; createExtensionTitle: string; createExtensionTrust: string; createExtensionUserPath: string }`

Source: [ui/src/settings/sections/extensions/CreateExtensionDialog.tsx:23](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/CreateExtensionDialog.tsx#L23)

### `useEditorSectionLabels`

Function.

The Files & editor section's strings, overridable through `LabelsProvider`.

```ts
function useEditorSectionLabels(): { editorSectionBrackets: string; editorSectionBracketsDescription: string; editorSectionCompletion: string; editorSectionCompletionDescription: string; editorSectionDetecting: string; editorSectionDiagnostics: string; editorSectionDiagnosticsLsp: string; editorSectionDiagnosticsMode: string; editorSectionDiagnosticsModeDescription: string; editorSectionDiagnosticsOff: string; editorSectionDiagnosticsTools: string; editorSectionEdit: string; editorSectionEditDescription: string; editorSectionEditing: string; editorSectionHovers: string; editorSectionHoversDescription: string; editorSectionIdle: string; editorSectionIdleDescription: string; editorSectionLsp: string; editorSectionOpenIn: string; editorSectionOpenInDescription: string; editorSectionOpenInEditor: string; editorSectionOpening: string; editorSectionOpenInPanel: string; editorSectionReset: string; editorSectionResetDescription: string; editorSectionResetLabel: string; editorSectionRounded: string; editorSectionRun: string; editorSectionRunDescription: string; editorSectionRunOpen: string; editorSectionRunSave: string; editorSectionSave: string; editorSectionSaveBlur: string; editorSectionSaveDescription: string; editorSectionSaveManual: string; editorSectionServerAbsent: string; editorSectionServerCommand: (fallback: string) => string; editorSectionServerCommandOf: (label: string) => string; editorSectionServerFailed: string; editorSectionServerFound: (detail: string | undefined) => string; editorSectionServerLog: (log: string) => string; editorSectionServerMissing: string; editorSectionServerRunning: (open: number, busy: string | undefined) => string; editorSectionServersFor: string; editorSectionServersNoSession: string; editorSectionServersRefresh: string; editorSectionSurround: string; editorSectionSurroundBoth: string; editorSectionSurroundBrackets: string; editorSectionSurroundDescription: string; editorSectionSurroundOff: string; editorSectionSurroundQuotes: string; editorSectionTabSize: string; editorSectionTimeout: string; editorSectionTimeoutDescription: string; editorSectionTitle: string; editorSectionToolAbsent: string; editorSectionToolMissing: string; editorSectionToolReady: string; editorSectionToolsIn: string; editorSectionToolsNoSession: string; editorSectionTreeLeft: string; editorSectionTreeRight: string; editorSectionTreeSide: string; editorSectionTreeSideDescription: string; editorSectionWrap: string }
```

**Returns** `{ editorSectionBrackets: string; editorSectionBracketsDescription: string; editorSectionCompletion: string; editorSectionCompletionDescription: string; editorSectionDetecting: string; editorSectionDiagnostics: string; editorSectionDiagnosticsLsp: string; editorSectionDiagnosticsMode: string; editorSectionDiagnosticsModeDescription: string; editorSectionDiagnosticsOff: string; editorSectionDiagnosticsTools: string; editorSectionEdit: string; editorSectionEditDescription: string; editorSectionEditing: string; editorSectionHovers: string; editorSectionHoversDescription: string; editorSectionIdle: string; editorSectionIdleDescription: string; editorSectionLsp: string; editorSectionOpenIn: string; editorSectionOpenInDescription: string; editorSectionOpenInEditor: string; editorSectionOpening: string; editorSectionOpenInPanel: string; editorSectionReset: string; editorSectionResetDescription: string; editorSectionResetLabel: string; editorSectionRounded: string; editorSectionRun: string; editorSectionRunDescription: string; editorSectionRunOpen: string; editorSectionRunSave: string; editorSectionSave: string; editorSectionSaveBlur: string; editorSectionSaveDescription: string; editorSectionSaveManual: string; editorSectionServerAbsent: string; editorSectionServerCommand: (fallback: string) => string; editorSectionServerCommandOf: (label: string) => string; editorSectionServerFailed: string; editorSectionServerFound: (detail: string | undefined) => string; editorSectionServerLog: (log: string) => string; editorSectionServerMissing: string; editorSectionServerRunning: (open: number, busy: string | undefined) => string; editorSectionServersFor: string; editorSectionServersNoSession: string; editorSectionServersRefresh: string; editorSectionSurround: string; editorSectionSurroundBoth: string; editorSectionSurroundBrackets: string; editorSectionSurroundDescription: string; editorSectionSurroundOff: string; editorSectionSurroundQuotes: string; editorSectionTabSize: string; editorSectionTimeout: string; editorSectionTimeoutDescription: string; editorSectionTitle: string; editorSectionToolAbsent: string; editorSectionToolMissing: string; editorSectionToolReady: string; editorSectionToolsIn: string; editorSectionToolsNoSession: string; editorSectionTreeLeft: string; editorSectionTreeRight: string; editorSectionTreeSide: string; editorSectionTreeSideDescription: string; editorSectionWrap: string }`

Source: [ui/src/settings/sections/editor/EditorSection.tsx:37](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/EditorSection.tsx#L37)

### `useEnabledListSectionLabels`

Function.

The enabled list section's strings, overridable through `LabelsProvider`.

```ts
function useEnabledListSectionLabels(): { enabledListEmpty: (noun: string) => string; enabledListNote: (noun: string) => string; enabledListNoun: (key: SettingsEnabledListKey) => string; enabledListOne: (key: SettingsEnabledListKey) => string; enabledListTitle: (host: string) => string; enabledListUnset: (one: string, noun: string, host: string) => string }
```

**Returns** `{ enabledListEmpty: (noun: string) => string; enabledListNote: (noun: string) => string; enabledListNoun: (key: SettingsEnabledListKey) => string; enabledListOne: (key: SettingsEnabledListKey) => string; enabledListTitle: (host: string) => string; enabledListUnset: (one: string, noun: string, host: string) => string }`

Source: [ui/src/settings/sections/enabled-list/EnabledListSection.tsx:21](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/enabled-list/EnabledListSection.tsx#L21)

### `useEnvironmentsSectionLabels`

Function.

The Environments section's strings, overridable through `LabelsProvider`.

```ts
function useEnvironmentsSectionLabels(): { environmentsSectionAlwaysOn: string; environmentsSectionClear: string; environmentsSectionConnected: string; environmentsSectionDefault: string; environmentsSectionDefaultChip: string; environmentsSectionDefaultHint: string; environmentsSectionFromEnv: (name: string) => string; environmentsSectionHidden: string; environmentsSectionLoading: string; environmentsSectionNotAvailable: string; environmentsSectionNotReady: string; environmentsSectionOffered: string; environmentsSectionSecretPlaceholder: string; environmentsSectionSecretReplace: string; environmentsSectionSecretSaved: string; environmentsSectionSecretUnset: string; environmentsSectionTest: string; environmentsSectionTesting: string; environmentsSectionTurnOff: (label: string) => string; environmentsSectionTurnOn: (label: string) => string; environmentsSectionUsingEnv: (name: string) => string }
```

**Returns** `{ environmentsSectionAlwaysOn: string; environmentsSectionClear: string; environmentsSectionConnected: string; environmentsSectionDefault: string; environmentsSectionDefaultChip: string; environmentsSectionDefaultHint: string; environmentsSectionFromEnv: (name: string) => string; environmentsSectionHidden: string; environmentsSectionLoading: string; environmentsSectionNotAvailable: string; environmentsSectionNotReady: string; environmentsSectionOffered: string; environmentsSectionSecretPlaceholder: string; environmentsSectionSecretReplace: string; environmentsSectionSecretSaved: string; environmentsSectionSecretUnset: string; environmentsSectionTest: string; environmentsSectionTesting: string; environmentsSectionTurnOff: (label: string) => string; environmentsSectionTurnOn: (label: string) => string; environmentsSectionUsingEnv: (name: string) => string }`

Source: [ui/src/settings/sections/environments/EnvironmentsSection.tsx:48](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/environments/EnvironmentsSection.tsx#L48)

### `useExtensionOptionsLabels`

Function.

The extension options' strings, overridable through `LabelsProvider`.

```ts
function useExtensionOptionsLabels(): { extensionOptionsAdminOnly: string; extensionOptionsEmpty: (sentence: string) => string; extensionOptionsFailed: (error: SettingsError) => string; extensionOptionsNone: string; extensionOptionsReset: (label: string) => string; extensionOptionsResetTitle: string; extensionOptionsRun: string; extensionOptionsRunning: string; extensionOptionsRunningStatus: string; extensionOptionsUnset: string }
```

**Returns** `{ extensionOptionsAdminOnly: string; extensionOptionsEmpty: (sentence: string) => string; extensionOptionsFailed: (error: SettingsError) => string; extensionOptionsNone: string; extensionOptionsReset: (label: string) => string; extensionOptionsResetTitle: string; extensionOptionsRun: string; extensionOptionsRunning: string; extensionOptionsRunningStatus: string; extensionOptionsUnset: string }`

Source: [ui/src/settings/sections/extensions/ExtensionConfigRows.tsx:31](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionConfigRows.tsx#L31)

### `useExtensionOptionsSearch`

Function.

The extension options and actions of a folder as search hits on the
Extensions section (`SettingsShell`'s `extraSearch`).

```ts
function useExtensionOptionsSearch(
  cwd: string | null,
  section?: string,
): SettingsSearchHit[]
```

**Parameters**

- `cwd` (`string | null`): The folder (`null`: none).
- `section?` (`string`, default `'extensions'`): The section the hits open. Default: `extensions`.

**Returns** `SettingsSearchHit[]`

Source: [ui/src/settings/sections/extensions/ExtensionOptionsSection.tsx:66](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionOptionsSection.tsx#L66)

### `useExtensionsSectionLabels`

Function.

The Extensions section's strings, overridable through `LabelsProvider`.

```ts
function useExtensionsSectionLabels(): { extensionsSectionAccessHint: string; extensionsSectionBrowseCount: (count: number) => string; extensionsSectionBrowseEmpty: string; extensionsSectionBrowseEmptyHint: string; extensionsSectionBrowseFilter: string; extensionsSectionBrowseNoMatch: string; extensionsSectionBrowseVersion: (version: string) => string; extensionsSectionBuild: string; extensionsSectionCancel: string; extensionsSectionChangeOrigin: string; extensionsSectionChangeOriginBusy: string; extensionsSectionChangeOriginField: string; extensionsSectionChangeOriginFound: string; extensionsSectionChangeOriginHint: string; extensionsSectionChangeOriginMismatch: (name: string) => string; extensionsSectionChangeOriginSubmit: string; extensionsSectionChangeOriginTitle: (name: string) => string; extensionsSectionClear: string; extensionsSectionConfirmRemove: string; extensionsSectionCreate: string; extensionsSectionDefaultSource: string; extensionsSectionDefaultSourceDescription: string; extensionsSectionEdit: string; extensionsSectionEmpty: string; extensionsSectionErrorBadge: string; extensionsSectionInstall: string; extensionsSectionInstalled: string; extensionsSectionInstalling: (source: string) => string; extensionsSectionInstallPicked: (count: number) => string; extensionsSectionKeep: string; extensionsSectionNameField: string; extensionsSectionNamePlaceholder: string; extensionsSectionNoFolder: string; extensionsSectionPicked: (count: number) => string; extensionsSectionProjectHint: string; extensionsSectionRemove: string; extensionsSectionRemoveTitle: (dir: string) => string; extensionsSectionRemoving: (name: string) => string; extensionsSectionScopeProject: string; extensionsSectionScopeUser: string; extensionsSectionSource: (source: string, version: string | undefined) => string; extensionsSectionSourceField: string; extensionsSectionSourcePlaceholder: string; extensionsSectionUnreachable: string; extensionsSectionUpdate: string; extensionsSectionUpdateBusy: string; extensionsSectionUpdateFrom: (origin: string) => string; extensionsSectionUpdateMenu: (name: string) => string; extensionsSectionUpdateTitle: string; extensionsSectionUpdating: (name: string) => string; extensionsSectionUserHint: string }
```

**Returns** `{ extensionsSectionAccessHint: string; extensionsSectionBrowseCount: (count: number) => string; extensionsSectionBrowseEmpty: string; extensionsSectionBrowseEmptyHint: string; extensionsSectionBrowseFilter: string; extensionsSectionBrowseNoMatch: string; extensionsSectionBrowseVersion: (version: string) => string; extensionsSectionBuild: string; extensionsSectionCancel: string; extensionsSectionChangeOrigin: string; extensionsSectionChangeOriginBusy: string; extensionsSectionChangeOriginField: string; extensionsSectionChangeOriginFound: string; extensionsSectionChangeOriginHint: string; extensionsSectionChangeOriginMismatch: (name: string) => string; extensionsSectionChangeOriginSubmit: string; extensionsSectionChangeOriginTitle: (name: string) => string; extensionsSectionClear: string; extensionsSectionConfirmRemove: string; extensionsSectionCreate: string; extensionsSectionDefaultSource: string; extensionsSectionDefaultSourceDescription: string; extensionsSectionEdit: string; extensionsSectionEmpty: string; extensionsSectionErrorBadge: string; extensionsSectionInstall: string; extensionsSectionInstalled: string; extensionsSectionInstalling: (source: string) => string; extensionsSectionInstallPicked: (count: number) => string; extensionsSectionKeep: string; extensionsSectionNameField: string; extensionsSectionNamePlaceholder: string; extensionsSectionNoFolder: string; extensionsSectionPicked: (count: number) => string; extensionsSectionProjectHint: string; extensionsSectionRemove: string; extensionsSectionRemoveTitle: (dir: string) => string; extensionsSectionRemoving: (name: string) => string; extensionsSectionScopeProject: string; extensionsSectionScopeUser: string; extensionsSectionSource: (source: string, version: string | undefined) => string; extensionsSectionSourceField: string; extensionsSectionSourcePlaceholder: string; extensionsSectionUnreachable: string; extensionsSectionUpdate: string; extensionsSectionUpdateBusy: string; extensionsSectionUpdateFrom: (origin: string) => string; extensionsSectionUpdateMenu: (name: string) => string; extensionsSectionUpdateTitle: string; extensionsSectionUpdating: (name: string) => string; extensionsSectionUserHint: string }`

Source: [ui/src/settings/sections/extensions/ExtensionsSection.tsx:66](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionsSection.tsx#L66)

### `useHostCatalogLabels`

Function.

The host catalog section's strings, overridable through `LabelsProvider`.

```ts
function useHostCatalogLabels(): { hostCatalogCancel: string; hostCatalogEmpty: (host: string, kind: SettingsCatalogKind) => string; hostCatalogInstall: string; hostCatalogInstallLabel: (noun: string) => string; hostCatalogInstallPlaceholder: (noun: string) => string; hostCatalogNoInstalls: (host: string) => string; hostCatalogNoun: (kind: SettingsCatalogKind) => string; hostCatalogOne: (kind: SettingsCatalogKind) => string; hostCatalogReadFailed: (host: string, kind: SettingsCatalogKind, error: string) => string; hostCatalogReading: (host: string, kind: SettingsCatalogKind) => string; hostCatalogRefresh: string }
```

**Returns** `{ hostCatalogCancel: string; hostCatalogEmpty: (host: string, kind: SettingsCatalogKind) => string; hostCatalogInstall: string; hostCatalogInstallLabel: (noun: string) => string; hostCatalogInstallPlaceholder: (noun: string) => string; hostCatalogNoInstalls: (host: string) => string; hostCatalogNoun: (kind: SettingsCatalogKind) => string; hostCatalogOne: (kind: SettingsCatalogKind) => string; hostCatalogReadFailed: (host: string, kind: SettingsCatalogKind, error: string) => string; hostCatalogReading: (host: string, kind: SettingsCatalogKind) => string; hostCatalogRefresh: string }`

Source: [ui/src/settings/sections/host-catalog/HostCatalogSection.tsx:53](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/host-catalog/HostCatalogSection.tsx#L53)

### `useInstructionsSectionLabels`

Function.

The Instructions section's strings, overridable through `LabelsProvider`.

```ts
function useInstructionsSectionLabels(): { instructionsSectionBlockedByProfile: (path: string) => string; instructionsSectionBlockedByScope: (path: string) => string; instructionsSectionCreate: string; instructionsSectionCreateOverrideTitle: string; instructionsSectionCreating: string; instructionsSectionEditPrompt: string; instructionsSectionEstimateTitle: string; instructionsSectionLoading: string; instructionsSectionMoreLines: (hidden: number, hasFile: boolean) => string; instructionsSectionNoContext: string; instructionsSectionNoSession: string; instructionsSectionNotLoaded: string; instructionsSectionReload: string; instructionsSectionShadowed: (path: string) => string; instructionsSectionShare: (percent: number) => string; instructionsSectionShareTitle: string; instructionsSectionSlice: (label: string, tokens: string) => string; instructionsSectionTokens: (tokens: string) => string; instructionsSectionTokensTitle: (tokens: string) => string; instructionsSectionTotal: (tokens: string) => string }
```

**Returns** `{ instructionsSectionBlockedByProfile: (path: string) => string; instructionsSectionBlockedByScope: (path: string) => string; instructionsSectionCreate: string; instructionsSectionCreateOverrideTitle: string; instructionsSectionCreating: string; instructionsSectionEditPrompt: string; instructionsSectionEstimateTitle: string; instructionsSectionLoading: string; instructionsSectionMoreLines: (hidden: number, hasFile: boolean) => string; instructionsSectionNoContext: string; instructionsSectionNoSession: string; instructionsSectionNotLoaded: string; instructionsSectionReload: string; instructionsSectionShadowed: (path: string) => string; instructionsSectionShare: (percent: number) => string; instructionsSectionShareTitle: string; instructionsSectionSlice: (label: string, tokens: string) => string; instructionsSectionTokens: (tokens: string) => string; instructionsSectionTokensTitle: (tokens: string) => string; instructionsSectionTotal: (tokens: string) => string }`

Source: [ui/src/settings/sections/instructions/InstructionsSection.tsx:37](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/instructions/InstructionsSection.tsx#L37)

### `useKeybindingsSectionLabels`

Function.

The Keybindings section's strings, overridable through `LabelsProvider`.

```ts
function useKeybindingsSectionLabels(): { keybindingsSectionAnnotate: string; keybindingsSectionApp: string; keybindingsSectionArtifacts: string; keybindingsSectionBack: string; keybindingsSectionBrowse: string; keybindingsSectionCancel: string; keybindingsSectionCloseTab: string; keybindingsSectionCompact: string; keybindingsSectionCopyId: string; keybindingsSectionCycleAgent: string; keybindingsSectionDelete: string; keybindingsSectionDetails: string; keybindingsSectionEdit: string; keybindingsSectionEffort: string; keybindingsSectionExportJson: string; keybindingsSectionExportMarkdown: string; keybindingsSectionFavorite: string; keybindingsSectionFind: string; keybindingsSectionForward: string; keybindingsSectionGenerateTitle: string; keybindingsSectionHistoryNext: string; keybindingsSectionHistoryPrev: string; keybindingsSectionKeybindings: string; keybindingsSectionMainSession: string; keybindingsSectionMention: string; keybindingsSectionModel: string; keybindingsSectionNewLine: string; keybindingsSectionNewSession: string; keybindingsSectionNewTerminal: string; keybindingsSectionPalette: string; keybindingsSectionPanelNext: string; keybindingsSectionPanelPrev: string; keybindingsSectionPanels: string; keybindingsSectionPrompt: string; keybindingsSectionReload: string; keybindingsSectionReloading: string; keybindingsSectionSearch: string; keybindingsSectionSend: string; keybindingsSectionSession: string; keybindingsSectionSessionActions: string; keybindingsSectionSettings: string; keybindingsSectionSidebar: string; keybindingsSectionSkill: string; keybindingsSectionSplitDown: string; keybindingsSectionSplitRight: string; keybindingsSectionTabNext: string; keybindingsSectionTabPrev: string; keybindingsSectionTerminal: string; keybindingsSectionTitle: string; keybindingsSectionTodos: string; keybindingsSectionUsage: string; keybindingsSectionZoomIn: string; keybindingsSectionZoomOut: string; keybindingsSectionZoomReset: string }
```

**Returns** `{ keybindingsSectionAnnotate: string; keybindingsSectionApp: string; keybindingsSectionArtifacts: string; keybindingsSectionBack: string; keybindingsSectionBrowse: string; keybindingsSectionCancel: string; keybindingsSectionCloseTab: string; keybindingsSectionCompact: string; keybindingsSectionCopyId: string; keybindingsSectionCycleAgent: string; keybindingsSectionDelete: string; keybindingsSectionDetails: string; keybindingsSectionEdit: string; keybindingsSectionEffort: string; keybindingsSectionExportJson: string; keybindingsSectionExportMarkdown: string; keybindingsSectionFavorite: string; keybindingsSectionFind: string; keybindingsSectionForward: string; keybindingsSectionGenerateTitle: string; keybindingsSectionHistoryNext: string; keybindingsSectionHistoryPrev: string; keybindingsSectionKeybindings: string; keybindingsSectionMainSession: string; keybindingsSectionMention: string; keybindingsSectionModel: string; keybindingsSectionNewLine: string; keybindingsSectionNewSession: string; keybindingsSectionNewTerminal: string; keybindingsSectionPalette: string; keybindingsSectionPanelNext: string; keybindingsSectionPanelPrev: string; keybindingsSectionPanels: string; keybindingsSectionPrompt: string; keybindingsSectionReload: string; keybindingsSectionReloading: string; keybindingsSectionSearch: string; keybindingsSectionSend: string; keybindingsSectionSession: string; keybindingsSectionSessionActions: string; keybindingsSectionSettings: string; keybindingsSectionSidebar: string; keybindingsSectionSkill: string; keybindingsSectionSplitDown: string; keybindingsSectionSplitRight: string; keybindingsSectionTabNext: string; keybindingsSectionTabPrev: string; keybindingsSectionTerminal: string; keybindingsSectionTitle: string; keybindingsSectionTodos: string; keybindingsSectionUsage: string; keybindingsSectionZoomIn: string; keybindingsSectionZoomOut: string; keybindingsSectionZoomReset: string }`

Source: [ui/src/settings/sections/keybindings/KeybindingsSection.tsx:25](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/KeybindingsSection.tsx#L25)

### `useLogsSectionLabels`

Function.

The Logs section's strings, overridable through `LabelsProvider`.

```ts
function useLogsSectionLabels(): { logsSectionClear: string; logsSectionCount: (n: number) => string; logsSectionEmpty: string; logsSectionFilter: string; logsSectionFilterLabel: string; logsSectionFollow: string; logsSectionFollowLabel: string; logsSectionLevel: string; logsSectionLevelLabel: string; logsSectionNoMatch: string }
```

**Returns** `{ logsSectionClear: string; logsSectionCount: (n: number) => string; logsSectionEmpty: string; logsSectionFilter: string; logsSectionFilterLabel: string; logsSectionFollow: string; logsSectionFollowLabel: string; logsSectionLevel: string; logsSectionLevelLabel: string; logsSectionNoMatch: string }`

Source: [ui/src/settings/sections/logs/LogsSection.tsx:24](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/logs/LogsSection.tsx#L24)

### `useMcpSectionLabels`

Function.

The MCP servers section's strings, overridable through `LabelsProvider`.

```ts
function useMcpSectionLabels(): { mcpSectionAdd: string; mcpSectionAddCancel: string; mcpSectionAdvancedOAuth: string; mcpSectionAdvancedOAuthHint: string; mcpSectionBadge: (badge: 'error' | 'needs-auth' | 'authorizing' | 'authed' | 'key-refused' | 'bootstrap-error') => string; mcpSectionCallbackPort: string; mcpSectionCallbackPortPlaceholder: string; mcpSectionCancel: string; mcpSectionClientId: string; mcpSectionClientSecret: string; mcpSectionCollapse: (server: string) => string; mcpSectionCollapseTitle: string; mcpSectionCommand: string; mcpSectionCommandPlaceholder: string; mcpSectionConfigFile: (server: string) => string; mcpSectionConfirmRemove: string; mcpSectionConnected: string; mcpSectionCouldNotConnect: string; mcpSectionDisable: string; mcpSectionDismiss: string; mcpSectionEmpty: string; mcpSectionEmptyHint: string; mcpSectionEmptyUserHint: string; mcpSectionEnable: string; mcpSectionEnabled: (name: string) => string; mcpSectionEnv: string; mcpSectionEnvPlaceholder: string; mcpSectionError: (error: SettingsError) => string; mcpSectionExpand: (server: string) => string; mcpSectionExpandTitle: string; mcpSectionHeaders: string; mcpSectionHeadersPlaceholder: string; mcpSectionKeep: string; mcpSectionKeyRefused: string; mcpSectionLoading: string; mcpSectionName: string; mcpSectionNamePlaceholder: string; mcpSectionNeedsClient: string; mcpSectionNeedsSignIn: string; mcpSectionNoDescription: string; mcpSectionNoTools: string; mcpSectionOpening: string; mcpSectionOpenPage: string; mcpSectionProjectHint: string; mcpSectionRedirect: string; mcpSectionRedirectNote: string; mcpSectionRedirectUrl: (port: string) => string; mcpSectionRedirectUrlAny: string; mcpSectionRefresh: string; mcpSectionRefreshTitle: string; mcpSectionRemove: string; mcpSectionRemoveTitle: (server: string, path: string) => string; mcpSectionReplaces: string; mcpSectionRestart: string; mcpSectionRestarting: string; mcpSectionRestartTitle: string; mcpSectionRunningPerSession: string; mcpSectionRunningShared: (sessions: number) => string; mcpSectionRunningTitle: string; mcpSectionSavedToUser: string; mcpSectionScopes: string; mcpSectionShared: string; mcpSectionSharedHint: string; mcpSectionSharedSwitch: (name: string) => string; mcpSectionSignIn: string; mcpSectionSignInAgain: string; mcpSectionSignOut: string; mcpSectionStarting: string; mcpSectionSubmit: string; mcpSectionTest: string; mcpSectionTestAll: string; mcpSectionTestAllTitle: string; mcpSectionTesting: string; mcpSectionTestingAll: string; mcpSectionToolCount: (on: number, total: number) => string; mcpSectionToolsListed: (age: string) => string; mcpSectionTransport: string; mcpSectionTransportTitle: (transport: string) => string; mcpSectionUrl: string; mcpSectionUrlPlaceholder: string; mcpSectionUserHint: string; mcpSectionWhen: (age: string) => string }
```

**Returns** `{ mcpSectionAdd: string; mcpSectionAddCancel: string; mcpSectionAdvancedOAuth: string; mcpSectionAdvancedOAuthHint: string; mcpSectionBadge: (badge: 'error' | 'needs-auth' | 'authorizing' | 'authed' | 'key-refused' | 'bootstrap-error') => string; mcpSectionCallbackPort: string; mcpSectionCallbackPortPlaceholder: string; mcpSectionCancel: string; mcpSectionClientId: string; mcpSectionClientSecret: string; mcpSectionCollapse: (server: string) => string; mcpSectionCollapseTitle: string; mcpSectionCommand: string; mcpSectionCommandPlaceholder: string; mcpSectionConfigFile: (server: string) => string; mcpSectionConfirmRemove: string; mcpSectionConnected: string; mcpSectionCouldNotConnect: string; mcpSectionDisable: string; mcpSectionDismiss: string; mcpSectionEmpty: string; mcpSectionEmptyHint: string; mcpSectionEmptyUserHint: string; mcpSectionEnable: string; mcpSectionEnabled: (name: string) => string; mcpSectionEnv: string; mcpSectionEnvPlaceholder: string; mcpSectionError: (error: SettingsError) => string; mcpSectionExpand: (server: string) => string; mcpSectionExpandTitle: string; mcpSectionHeaders: string; mcpSectionHeadersPlaceholder: string; mcpSectionKeep: string; mcpSectionKeyRefused: string; mcpSectionLoading: string; mcpSectionName: string; mcpSectionNamePlaceholder: string; mcpSectionNeedsClient: string; mcpSectionNeedsSignIn: string; mcpSectionNoDescription: string; mcpSectionNoTools: string; mcpSectionOpening: string; mcpSectionOpenPage: string; mcpSectionProjectHint: string; mcpSectionRedirect: string; mcpSectionRedirectNote: string; mcpSectionRedirectUrl: (port: string) => string; mcpSectionRedirectUrlAny: string; mcpSectionRefresh: string; mcpSectionRefreshTitle: string; mcpSectionRemove: string; mcpSectionRemoveTitle: (server: string, path: string) => string; mcpSectionReplaces: string; mcpSectionRestart: string; mcpSectionRestarting: string; mcpSectionRestartTitle: string; mcpSectionRunningPerSession: string; mcpSectionRunningShared: (sessions: number) => string; mcpSectionRunningTitle: string; mcpSectionSavedToUser: string; mcpSectionScopes: string; mcpSectionShared: string; mcpSectionSharedHint: string; mcpSectionSharedSwitch: (name: string) => string; mcpSectionSignIn: string; mcpSectionSignInAgain: string; mcpSectionSignOut: string; mcpSectionStarting: string; mcpSectionSubmit: string; mcpSectionTest: string; mcpSectionTestAll: string; mcpSectionTestAllTitle: string; mcpSectionTesting: string; mcpSectionTestingAll: string; mcpSectionToolCount: (on: number, total: number) => string; mcpSectionToolsListed: (age: string) => string; mcpSectionTransport: string; mcpSectionTransportTitle: (transport: string) => string; mcpSectionUrl: string; mcpSectionUrlPlaceholder: string; mcpSectionUserHint: string; mcpSectionWhen: (age: string) => string }`

Source: [ui/src/settings/sections/mcp/McpSection.tsx:49](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/mcp/McpSection.tsx#L49)

### `useModelRowsLabels`

Function.

The model rows' strings, overridable through `LabelsProvider`.

```ts
function useModelRowsLabels(): { modelRowsAccountSignedOut: string; modelRowsAgentMissing: (fallback: string) => string; modelRowsAgentReset: string; modelRowsApprovals: string; modelRowsBuild: string; modelRowsClear: (title: string, label: string) => string; modelRowsCompaction: string; modelRowsCompactionDescription: string; modelRowsCompactionMain: string; modelRowsCompactionReset: string; modelRowsDecision: string; modelRowsDecisionDescription: string; modelRowsDecisionFirst: string; modelRowsDecisionListFailed: (error: string) => string; modelRowsDecisionNone: string; modelRowsDecisionReset: string; modelRowsDecisionResetLabel: string; modelRowsDecisionTestTitle: string; modelRowsDefaultAgent: string; modelRowsDefaultModel: string; modelRowsDone: string; modelRowsDuration: (ms: number) => string; modelRowsEffort: string; modelRowsEffortReset: string; modelRowsEffortResetSpace: string; modelRowsFailed: (reason: string | undefined, message: string | undefined) => string; modelRowsFailedTarget: (target: string) => string; modelRowsLastUsed: string; modelRowsLoading: string; modelRowsModelReset: string; modelRowsModelResetSpace: string; modelRowsNewSessions: string; modelRowsNewSessionsInSpace: string; modelRowsNoMatch: string; modelRowsPickDialog: (label: string) => string; modelRowsPickLabel: (model: string, provider: string) => string; modelRowsRetry: string; modelRowsSearchLabel: string; modelRowsSearchPlaceholder: string; modelRowsSelected: string; modelRowsStartOn: (where: string) => string; modelRowsStartWith: (where: string) => string; modelRowsTest: string; modelRowsTesting: string; modelRowsTestNeedsPick: string; modelRowsTestTitle: string; modelRowsText: string; modelRowsTextAutomatic: (model: string) => string; modelRowsTextDescription: string; modelRowsTextReset: string; modelRowsTheDefault: string; modelRowsWorks: string }
```

**Returns** `{ modelRowsAccountSignedOut: string; modelRowsAgentMissing: (fallback: string) => string; modelRowsAgentReset: string; modelRowsApprovals: string; modelRowsBuild: string; modelRowsClear: (title: string, label: string) => string; modelRowsCompaction: string; modelRowsCompactionDescription: string; modelRowsCompactionMain: string; modelRowsCompactionReset: string; modelRowsDecision: string; modelRowsDecisionDescription: string; modelRowsDecisionFirst: string; modelRowsDecisionListFailed: (error: string) => string; modelRowsDecisionNone: string; modelRowsDecisionReset: string; modelRowsDecisionResetLabel: string; modelRowsDecisionTestTitle: string; modelRowsDefaultAgent: string; modelRowsDefaultModel: string; modelRowsDone: string; modelRowsDuration: (ms: number) => string; modelRowsEffort: string; modelRowsEffortReset: string; modelRowsEffortResetSpace: string; modelRowsFailed: (reason: string | undefined, message: string | undefined) => string; modelRowsFailedTarget: (target: string) => string; modelRowsLastUsed: string; modelRowsLoading: string; modelRowsModelReset: string; modelRowsModelResetSpace: string; modelRowsNewSessions: string; modelRowsNewSessionsInSpace: string; modelRowsNoMatch: string; modelRowsPickDialog: (label: string) => string; modelRowsPickLabel: (model: string, provider: string) => string; modelRowsRetry: string; modelRowsSearchLabel: string; modelRowsSearchPlaceholder: string; modelRowsSelected: string; modelRowsStartOn: (where: string) => string; modelRowsStartWith: (where: string) => string; modelRowsTest: string; modelRowsTesting: string; modelRowsTestNeedsPick: string; modelRowsTestTitle: string; modelRowsText: string; modelRowsTextAutomatic: (model: string) => string; modelRowsTextDescription: string; modelRowsTextReset: string; modelRowsTheDefault: string; modelRowsWorks: string }`

Source: [ui/src/settings/sections/models/model-test.tsx:18](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/model-test.tsx#L18)

### `useModelTest`

Function.

The Test of the model `key` names: `run` sends the probe. A result belongs
to the key it was run for: another pick shows none until tested.

```ts
function useModelTest(
  key: string | null,
  probe: ((key: string) => Promise<SettingsModelTest>) | undefined,
): { run: () => Promise<void>; state: ModelTestState | null }
```

**Parameters**

- `key` (`string | null`): What the probe tests, `null` when there is nothing to test.
- `probe` (`((key: string) => Promise<SettingsModelTest>) | undefined`): Sends the probe for `key`; absent: nothing to run.

**Returns** `{ run: () => Promise<void>; state: ModelTestState | null }`

Source: [ui/src/settings/sections/models/model-test.tsx:32](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/model-test.tsx#L32)

### `usePerformanceSectionLabels`

Function.

The Performance section's strings, overridable through `LabelsProvider`.

```ts
function usePerformanceSectionLabels(): { perfBusy: (pct: string) => string; perfBusyHint: string; perfChannelDirection: (direction: PerfChannelDirection) => string; perfChannels: string; perfChannelsEmpty: string; perfColBusy: string; perfColCalls: string; perfColCpu: string; perfColFrames: string; perfColHeap: string; perfColMemory: string; perfColP95: string; perfColSelf: string; perfColShare: string; perfColTotal: string; perfColWorst: string; perfCores: (cores: number) => string; perfCpu: string; perfExport: string; perfExported: string; perfExporting: string; perfFrames: string; perfFramesEmpty: string; perfGpu: string; perfGpuHint: string; perfHud: string; perfHudClose: string; perfHudOpen: string; perfHudTop: (label: string) => string; perfInsideCpu: string; perfInsideMemory: string; perfLag: string; perfLagHint: string; perfLaunched: string; perfLaunchedTitle: string; perfMainBusy: string; perfMcpPerSession: string; perfMcpShared: (sessions: number) => string; perfMcpTitle: (name: string) => string; perfMemory: string; perfOrigin: (origin: PerfOrigin) => string; perfOsThread: (id: string, label: string) => string; perfPlus: (value: string) => string; perfProcesses: string; perfProcessKind: (kind: PerfProcessKind) => string; perfProcessTitle: (pid: number, detail?: string) => string; perfProfile: string; perfProfileBusy: string; perfProfileFailed: (detail?: string) => string; perfProfileLength: string; perfProfileMain: string; perfProfileRecord: string; perfProfileRecording: (s: number) => string; perfProfileSeconds: (s: number) => string; perfProfileTarget: string; perfProfileWindow: string; perfReset: string; perfResident: string; perfReveal: string; perfSelf: string; perfSelfHint: (commandMs: string) => string; perfSessions: string; perfSessionsEmpty: string; perfSessionUntitled: string; perfShowThreads: (label: string) => string; perfSince: (time: string) => string; perfThreadKind: (kind: 'main' | 'renderer' | 'worker' | 'renderer-worker') => string; perfThreads: string; perfThreadsLoading: string; perfThreadsNone: string; perfUnavailable: string; perfWaiting: string; perfWatchFailed: (detail?: string) => string }
```

**Returns** `{ perfBusy: (pct: string) => string; perfBusyHint: string; perfChannelDirection: (direction: PerfChannelDirection) => string; perfChannels: string; perfChannelsEmpty: string; perfColBusy: string; perfColCalls: string; perfColCpu: string; perfColFrames: string; perfColHeap: string; perfColMemory: string; perfColP95: string; perfColSelf: string; perfColShare: string; perfColTotal: string; perfColWorst: string; perfCores: (cores: number) => string; perfCpu: string; perfExport: string; perfExported: string; perfExporting: string; perfFrames: string; perfFramesEmpty: string; perfGpu: string; perfGpuHint: string; perfHud: string; perfHudClose: string; perfHudOpen: string; perfHudTop: (label: string) => string; perfInsideCpu: string; perfInsideMemory: string; perfLag: string; perfLagHint: string; perfLaunched: string; perfLaunchedTitle: string; perfMainBusy: string; perfMcpPerSession: string; perfMcpShared: (sessions: number) => string; perfMcpTitle: (name: string) => string; perfMemory: string; perfOrigin: (origin: PerfOrigin) => string; perfOsThread: (id: string, label: string) => string; perfPlus: (value: string) => string; perfProcesses: string; perfProcessKind: (kind: PerfProcessKind) => string; perfProcessTitle: (pid: number, detail?: string) => string; perfProfile: string; perfProfileBusy: string; perfProfileFailed: (detail?: string) => string; perfProfileLength: string; perfProfileMain: string; perfProfileRecord: string; perfProfileRecording: (s: number) => string; perfProfileSeconds: (s: number) => string; perfProfileTarget: string; perfProfileWindow: string; perfReset: string; perfResident: string; perfReveal: string; perfSelf: string; perfSelfHint: (commandMs: string) => string; perfSessions: string; perfSessionsEmpty: string; perfSessionUntitled: string; perfShowThreads: (label: string) => string; perfSince: (time: string) => string; perfThreadKind: (kind: 'main' | 'renderer' | 'worker' | 'renderer-worker') => string; perfThreads: string; perfThreadsLoading: string; perfThreadsNone: string; perfUnavailable: string; perfWaiting: string; perfWatchFailed: (detail?: string) => string }`

Source: [ui/src/settings/sections/performance/PerformanceSection.tsx:53](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/PerformanceSection.tsx#L53)

### `usePluginsSectionLabels`

Function.

The Plugins section's strings, overridable through `LabelsProvider`.

```ts
function usePluginsSectionLabels(): { pluginsSectionEmpty: string; pluginsSectionLoadedBy: (extension: string) => string; pluginsSectionLooking: string; pluginsSectionMcps: (n: number) => string; pluginsSectionRejected: string; pluginsSectionRejectedAdds: string; pluginsSectionRejectedTitle: (path: string) => string; pluginsSectionScanFailed: (error: string) => string; pluginsSectionSkills: (n: number) => string; pluginsSectionVersionTitle: (path: string, version: string) => string }
```

**Returns** `{ pluginsSectionEmpty: string; pluginsSectionLoadedBy: (extension: string) => string; pluginsSectionLooking: string; pluginsSectionMcps: (n: number) => string; pluginsSectionRejected: string; pluginsSectionRejectedAdds: string; pluginsSectionRejectedTitle: (path: string) => string; pluginsSectionScanFailed: (error: string) => string; pluginsSectionSkills: (n: number) => string; pluginsSectionVersionTitle: (path: string, version: string) => string }`

Source: [ui/src/settings/sections/plugins/PluginsSection.tsx:26](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/plugins/PluginsSection.tsx#L26)

### `useSettings`

Function.

The nearest provider's settings and their writers, re-rendering when the
document changes. Reads the provider's one subscription.

```ts
function useSettings(): SettingsValues
```

**Returns** `SettingsValues`

Source: [ui/src/settings/SettingsProvider.tsx:84](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L84)

### `useSettingsDocument`

Function.

The settings document, re-rendering when it changes.

```ts
function useSettingsDocument(): SettingsDocument
```

**Returns** `SettingsDocument`

Source: [ui/src/settings/SettingsProvider.tsx:110](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L110)

### `useSettingsHost`

Function.

The provided [`SettingsHost`](https://zidane.si/docs/reference/ui-settings-headless.md#SettingsHost) (an empty one outside a provider).

```ts
function useSettingsHost(): SettingsHost
```

**Returns** `SettingsHost`

Source: [ui/src/settings/SettingsProvider.tsx:105](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L105)

### `useSettingsHostName`

Function.

The server whose settings the nearest provider holds, by name (`undefined`: this computer's).

```ts
function useSettingsHostName(): string | undefined
```

**Returns** `string | undefined`

Source: [ui/src/settings/SettingsProvider.tsx:66](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L66)

### `useSettingsLabels`

Function.

Returns the settings components' strings: the defaults merged with any overrides.

```ts
function useSettingsLabels(): { settingsAdminOnly: string; settingsBlockedTitle: (requirement: string) => string; settingsClose: string; settingsCopyCommand: string; settingsDurabilityUnavailable: string; settingsError: (error: SettingsError) => string; settingsHostSwitcher: string; settingsHostSwitcherTrigger: (host: string) => string; settingsKilled: (env: string) => string; settingsKilledTitle: (env: string) => string; settingsLoading: string; settingsNavLabel: string; settingsNoResults: (query: string) => string; settingsRestrictedEmpty: string; settingsRetry: string; settingsSearchLabel: string; settingsSearchPlaceholder: string; settingsServerStart: string; settingsTitle: string; settingsUnavailable: string }
```

**Returns** `{ settingsAdminOnly: string; settingsBlockedTitle: (requirement: string) => string; settingsClose: string; settingsCopyCommand: string; settingsDurabilityUnavailable: string; settingsError: (error: SettingsError) => string; settingsHostSwitcher: string; settingsHostSwitcherTrigger: (host: string) => string; settingsKilled: (env: string) => string; settingsKilledTitle: (env: string) => string; settingsLoading: string; settingsNavLabel: string; settingsNoResults: (query: string) => string; settingsRestrictedEmpty: string; settingsRetry: string; settingsSearchLabel: string; settingsSearchPlaceholder: string; settingsServerStart: string; settingsTitle: string; settingsUnavailable: string }`

Source: [ui/src/settings/SettingsProvider.tsx:124](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L124)

### `useSettingsSection`

Function.

The section a body renders in: its id, whether it is open, and how to open another.

```ts
function useSettingsSection(): SettingsSectionState
```

**Returns** `SettingsSectionState`

Source: [ui/src/settings/section.tsx:38](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L38)

### `useSettingsWritable`

Function.

Whether the settings can be written here: the host offers `update` and this connection may write.

```ts
function useSettingsWritable(): boolean
```

**Returns** `boolean`

Source: [ui/src/settings/SettingsProvider.tsx:117](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L117)

### `useSkillsSectionLabels`

Function.

The Skills section's strings, overridable through `LabelsProvider`.

```ts
function useSkillsSectionLabels(): { skillsSectionClear: string; skillsSectionConfirmDelete: string; skillsSectionCount: (n: number) => string; skillsSectionDelete: (name: string) => string; skillsSectionDeleteTitle: (name: string) => string; skillsSectionDeleting: (name: string) => string; skillsSectionEdit: (name: string) => string; skillsSectionEditTitle: (dir: string) => string; skillsSectionEmpty: string; skillsSectionFilterAll: string; skillsSectionFilterCount: (label: string, count: number) => string; skillsSectionFilterLabel: string; skillsSectionFilterProject: string; skillsSectionFilterUser: string; skillsSectionFrom: (origin: 'extension' | 'plugin', by: string | undefined) => string; skillsSectionInPrompt: (tokens: string) => string; skillsSectionInPromptTitle: (tokens: string) => string; skillsSectionInstall: (count: string) => string; skillsSectionInstalling: (source: string) => string; skillsSectionKeep: string; skillsSectionLoading: string; skillsSectionNoFolder: string; skillsSectionNoMatch: (query: string) => string; skillsSectionNoneInScope: (scope: string) => string; skillsSectionPerPrompt: (tokens: string) => string; skillsSectionPerPromptTitle: string; skillsSectionPicked: (count: string) => string; skillsSectionProjectHint: string; skillsSectionReadFailed: (error: string) => string; skillsSectionRefresh: string; skillsSectionRefreshTitle: string; skillsSectionSaveFailed: (reason: string) => string; skillsSectionScanFailed: (error: string) => string; skillsSectionSearch: string; skillsSectionSearchLabel: string; skillsSectionSkillFile: (name: string) => string; skillsSectionSlice: (name: string, tokens: string) => string; skillsSectionUnmatched: (source: string) => string; skillsSectionUse: (name: string) => string; skillsSectionUserHint: string; skillsSectionWhenUsed: (tokens: string) => string; skillsSectionWhenUsedTitle: (tokens: string) => string }
```

**Returns** `{ skillsSectionClear: string; skillsSectionConfirmDelete: string; skillsSectionCount: (n: number) => string; skillsSectionDelete: (name: string) => string; skillsSectionDeleteTitle: (name: string) => string; skillsSectionDeleting: (name: string) => string; skillsSectionEdit: (name: string) => string; skillsSectionEditTitle: (dir: string) => string; skillsSectionEmpty: string; skillsSectionFilterAll: string; skillsSectionFilterCount: (label: string, count: number) => string; skillsSectionFilterLabel: string; skillsSectionFilterProject: string; skillsSectionFilterUser: string; skillsSectionFrom: (origin: 'extension' | 'plugin', by: string | undefined) => string; skillsSectionInPrompt: (tokens: string) => string; skillsSectionInPromptTitle: (tokens: string) => string; skillsSectionInstall: (count: string) => string; skillsSectionInstalling: (source: string) => string; skillsSectionKeep: string; skillsSectionLoading: string; skillsSectionNoFolder: string; skillsSectionNoMatch: (query: string) => string; skillsSectionNoneInScope: (scope: string) => string; skillsSectionPerPrompt: (tokens: string) => string; skillsSectionPerPromptTitle: string; skillsSectionPicked: (count: string) => string; skillsSectionProjectHint: string; skillsSectionReadFailed: (error: string) => string; skillsSectionRefresh: string; skillsSectionRefreshTitle: string; skillsSectionSaveFailed: (reason: string) => string; skillsSectionScanFailed: (error: string) => string; skillsSectionSearch: string; skillsSectionSearchLabel: string; skillsSectionSkillFile: (name: string) => string; skillsSectionSlice: (name: string, tokens: string) => string; skillsSectionUnmatched: (source: string) => string; skillsSectionUse: (name: string) => string; skillsSectionUserHint: string; skillsSectionWhenUsed: (tokens: string) => string; skillsSectionWhenUsedTitle: (tokens: string) => string }`

Source: [ui/src/settings/sections/skills/SkillList.tsx:50](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/skills/SkillList.tsx#L50)

### `withSpaceDefaults`

Function.

`space` with `next`'s defaults. Its fallback chain stays with a model:
kept when the model changes (without the new model itself), gone with it.

```ts
function withSpaceDefaults(space: Space, next: AgentDefaultsValue): Space
```

**Parameters**

- `space` (`Space`): The space.
- `next` (`AgentDefaultsValue`): Its new defaults.

**Returns** `Space`

Source: [ui/src/settings/sections/models/SpacesDefaultsSection.tsx:77](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/SpacesDefaultsSection.tsx#L77)

## Constants

### `DEFAULT_ACCOUNTS_SECTION_LABELS`

Constant.

The default English strings of the Accounts sections.

```ts
const DEFAULT_ACCOUNTS_SECTION_LABELS: { accountsAccountName: string; accountsAccountNamePlaceholder: string; accountsAddAccount: string; accountsApiKeyChip: string; accountsAuthenticated: string; accountsCancel: string; accountsClear: string; accountsClearConfirm: (provider: string) => string; accountsClearing: string; accountsConfigure: string; accountsConfigured: string; accountsEditConfig: string; accountsError: (error: SettingsError) => string; accountsFromExtension: string; accountsInUse: string; accountsKeepSecret: string; accountsKeyField: (provider: string) => string; accountsKeyPlaceholder: string; accountsNotAuthenticated: string; accountsOAuthChip: string; accountsReauth: string; accountsReauthTitle: (name: string) => string; accountsRemove: string; accountsRemoveConfirm: (provider: string, name: string, active: boolean) => string; accountsRemoveTitle: (name: string, provider: string) => string; accountsRemoving: string; accountsRename: string; accountsRenameCancel: string; accountsRenameCancelTitle: string; accountsRenameField: (name: string) => string; accountsRenamePlaceholder: string; accountsRenameSave: string; accountsRenameSaveTitle: string; accountsRenameTitle: (name: string) => string; accountsRenaming: string; accountsReplaceKey: string; accountsRequired: string; accountsSave: string; accountsSaveConfig: string; accountsSaving: string; accountsServerActive: string; accountsServerApiKey: string; accountsServerConfigured: string; accountsServerNotConfigured: string; accountsServerOAuth: (account: string | undefined) => string; accountsServerReadFailed: (host: string, reason: string) => string; accountsServerReading: (host: string) => string; accountsServerSetKey: string; accountsSetKey: string; accountsSignIn: string; accountsSignInBrowser: (service: string) => string; accountsSignInCancel: string; accountsSignInClose: string; accountsSignInCode: string; accountsSignInDevice: string; accountsSignInDone: (host: string) => string; accountsSignInPasteField: string; accountsSignInPastePlaceholder: string; accountsSignInSend: string; accountsSignInSending: (host: string) => string; accountsSignInStarting: (host: string) => string; accountsSignInWith: (account: string) => string; accountsSources: (provider: string) => string; accountsSwitching: string; accountsUse: string; accountsUseTitle: (source: string, provider: string) => string }
```

Source: [ui/src/settings/sections/providers/labels.ts:13](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/labels.ts#L13)

### `DEFAULT_APPEARANCE_SECTION_LABELS`

Constant.

The default English strings of the Appearance section.

```ts
const DEFAULT_APPEARANCE_SECTION_LABELS: { appearanceSectionAccent: string; appearanceSectionAccentCaption: string; appearanceSectionAccentCustom: string; appearanceSectionAccentCustomAria: string; appearanceSectionAccentTheme: string; appearanceSectionActive: string; appearanceSectionAppIcon: string; appearanceSectionCodeAuto: string; appearanceSectionCodeDark: string; appearanceSectionCodeLight: string; appearanceSectionCodeTheme: string; appearanceSectionCodeThemeOf: (slot: string) => string; appearanceSectionContrast: string; appearanceSectionDarkTheme: string; appearanceSectionFontChat: string; appearanceSectionFontChatDefault: string; appearanceSectionFontChatDescription: string; appearanceSectionFontCode: string; appearanceSectionFontCodeDefault: string; appearanceSectionFontCodeDescription: string; appearanceSectionFontInterface: string; appearanceSectionFontInterfaceDefault: string; appearanceSectionFontInterfaceDescription: string; appearanceSectionFontOf: (label: string) => string; appearanceSectionFontPrompt: string; appearanceSectionFontPromptDefault: string; appearanceSectionFontPromptDescription: string; appearanceSectionFonts: string; appearanceSectionFontSample: string; appearanceSectionFontsCurated: string; appearanceSectionFontsInstalled: (count: number) => string; appearanceSectionFontsShowAll: string; appearanceSectionFontsUnavailable: string; appearanceSectionInterfaceSize: string; appearanceSectionInterfaceSizeDescription: string; appearanceSectionLightTheme: string; appearanceSectionMode: string; appearanceSectionModeCaption: string; appearanceSectionModeDark: string; appearanceSectionModeLight: string; appearanceSectionModeSystem: string; appearanceSectionMotion: string; appearanceSectionMotionCaption: string; appearanceSectionMotionFull: string; appearanceSectionMotionOff: string; appearanceSectionMotionReduced: string; appearanceSectionMotionSystem: string; appearanceSectionNoThemes: string; appearanceSectionPanelAnimation: string; appearanceSectionPanelAnimationPlain: string; appearanceSectionPanelAnimationSprings: string; appearanceSectionReset: string; appearanceSectionResetDescription: string; appearanceSectionResetLabel: string; appearanceSectionSizeChat: string; appearanceSectionSizeCode: string; appearanceSectionSizePrompt: string; appearanceSectionSizes: string; appearanceSectionSprings: string; appearanceSectionSpringsNeedsFull: string; appearanceSectionSpringsOff: string; appearanceSectionSpringsOn: string; appearanceSectionTextContrast: string; appearanceSectionTextContrastDescription: string; appearanceSectionTitle: string }
```

Source: [ui/src/settings/sections/appearance/labels.ts:8](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/appearance/labels.ts#L8)

### `DEFAULT_CATALOG_SHARED_LABELS`

Constant.

The default English strings shared by the catalog sections.

```ts
const DEFAULT_CATALOG_SHARED_LABELS: { catalogError: (error: SettingsError) => string; catalogOpen: (name: string) => string; catalogReveal: (name: string) => string; catalogScope: string; catalogScopeProject: string; catalogScopeUser: string }
```

Source: [ui/src/settings/sections/shared/labels.ts:9](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/shared/labels.ts#L9)

### `DEFAULT_CLAUDE_IMPORT_LABELS`

Constant.

The default English strings of the Claude Code import dialog.

```ts
const DEFAULT_CLAUDE_IMPORT_LABELS: { claudeImportAgentsTitle: string; claudeImportAllProjects: string; claudeImportAlready: (n: number) => string; claudeImportCommands: string; claudeImportCommandsDetail: string; claudeImportCommandsTitle: string; claudeImportConversations: string; claudeImportCopied: (n: number) => string; claudeImportDescription: string; claudeImportDone: string; claudeImportEmpty: (n: number) => string; claudeImportFailed: (error: string) => string; claudeImportFailedCount: (n: number) => string; claudeImportHostNote: (server: string) => string; claudeImportImported: (n: number) => string; claudeImportImporting: string; claudeImportLooking: string; claudeImportMcps: string; claudeImportMcpsDetail: string; claudeImportNone: string; claudeImportProjectCounts: (project: number, all: number) => string; claudeImportRun: string; claudeImportSkills: string; claudeImportSkillsDetail: string; claudeImportSkipped: (n: number) => string; claudeImportSkippedTitle: string; claudeImportTitle: string; claudeImportTranscripts: (n: number) => string }
```

Source: [ui/src/settings/sections/claude-import/labels.ts:7](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/claude-import/labels.ts#L7)

### `DEFAULT_CREATE_EXTENSION_LABELS`

Constant.

The default English strings of the create-extension dialog.

```ts
const DEFAULT_CREATE_EXTENSION_LABELS: { createExtensionCancel: string; createExtensionClose: string; createExtensionCreated: string; createExtensionCreatedTitle: string; createExtensionCreating: string; createExtensionDescription: string; createExtensionName: string; createExtensionNameHint: string; createExtensionNamePlaceholder: string; createExtensionNoFolder: string; createExtensionOpen: string; createExtensionOpening: string; createExtensionProjectPath: string; createExtensionScope: string; createExtensionScopeProject: string; createExtensionScopeUser: string; createExtensionSubmit: string; createExtensionTitle: string; createExtensionTrust: string; createExtensionUserPath: string }
```

Source: [ui/src/settings/sections/extensions/create-labels.ts:6](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/create-labels.ts#L6)

### `DEFAULT_EDITOR_SECTION_LABELS`

Constant.

The default English strings of the Files & editor section.

```ts
const DEFAULT_EDITOR_SECTION_LABELS: { editorSectionBrackets: string; editorSectionBracketsDescription: string; editorSectionCompletion: string; editorSectionCompletionDescription: string; editorSectionDetecting: string; editorSectionDiagnostics: string; editorSectionDiagnosticsLsp: string; editorSectionDiagnosticsMode: string; editorSectionDiagnosticsModeDescription: string; editorSectionDiagnosticsOff: string; editorSectionDiagnosticsTools: string; editorSectionEdit: string; editorSectionEditDescription: string; editorSectionEditing: string; editorSectionHovers: string; editorSectionHoversDescription: string; editorSectionIdle: string; editorSectionIdleDescription: string; editorSectionLsp: string; editorSectionOpenIn: string; editorSectionOpenInDescription: string; editorSectionOpenInEditor: string; editorSectionOpening: string; editorSectionOpenInPanel: string; editorSectionReset: string; editorSectionResetDescription: string; editorSectionResetLabel: string; editorSectionRounded: string; editorSectionRun: string; editorSectionRunDescription: string; editorSectionRunOpen: string; editorSectionRunSave: string; editorSectionSave: string; editorSectionSaveBlur: string; editorSectionSaveDescription: string; editorSectionSaveManual: string; editorSectionServerAbsent: string; editorSectionServerCommand: (fallback: string) => string; editorSectionServerCommandOf: (label: string) => string; editorSectionServerFailed: string; editorSectionServerFound: (detail: string | undefined) => string; editorSectionServerLog: (log: string) => string; editorSectionServerMissing: string; editorSectionServerRunning: (open: number, busy: string | undefined) => string; editorSectionServersFor: string; editorSectionServersNoSession: string; editorSectionServersRefresh: string; editorSectionSurround: string; editorSectionSurroundBoth: string; editorSectionSurroundBrackets: string; editorSectionSurroundDescription: string; editorSectionSurroundOff: string; editorSectionSurroundQuotes: string; editorSectionTabSize: string; editorSectionTimeout: string; editorSectionTimeoutDescription: string; editorSectionTitle: string; editorSectionToolAbsent: string; editorSectionToolMissing: string; editorSectionToolReady: string; editorSectionToolsIn: string; editorSectionToolsNoSession: string; editorSectionTreeLeft: string; editorSectionTreeRight: string; editorSectionTreeSide: string; editorSectionTreeSideDescription: string; editorSectionWrap: string }
```

Source: [ui/src/settings/sections/editor/labels.ts:8](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/labels.ts#L8)

### `DEFAULT_ENABLED_LIST_SECTION_LABELS`

Constant.

The default English strings of the enabled list section.

```ts
const DEFAULT_ENABLED_LIST_SECTION_LABELS: { enabledListEmpty: (noun: string) => string; enabledListNote: (noun: string) => string; enabledListNoun: (key: SettingsEnabledListKey) => string; enabledListOne: (key: SettingsEnabledListKey) => string; enabledListTitle: (host: string) => string; enabledListUnset: (one: string, noun: string, host: string) => string }
```

Source: [ui/src/settings/sections/enabled-list/labels.ts:10](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/enabled-list/labels.ts#L10)

### `DEFAULT_ENVIRONMENTS_SECTION_LABELS`

Constant.

The default English strings of the Environments section.

```ts
const DEFAULT_ENVIRONMENTS_SECTION_LABELS: { environmentsSectionAlwaysOn: string; environmentsSectionClear: string; environmentsSectionConnected: string; environmentsSectionDefault: string; environmentsSectionDefaultChip: string; environmentsSectionDefaultHint: string; environmentsSectionFromEnv: (name: string) => string; environmentsSectionHidden: string; environmentsSectionLoading: string; environmentsSectionNotAvailable: string; environmentsSectionNotReady: string; environmentsSectionOffered: string; environmentsSectionSecretPlaceholder: string; environmentsSectionSecretReplace: string; environmentsSectionSecretSaved: string; environmentsSectionSecretUnset: string; environmentsSectionTest: string; environmentsSectionTesting: string; environmentsSectionTurnOff: (label: string) => string; environmentsSectionTurnOn: (label: string) => string; environmentsSectionUsingEnv: (name: string) => string }
```

Source: [ui/src/settings/sections/environments/labels.ts:6](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/environments/labels.ts#L6)

### `DEFAULT_EXTENSION_OPTIONS_LABELS`

Constant.

The default English strings of the extension options.

```ts
const DEFAULT_EXTENSION_OPTIONS_LABELS: { extensionOptionsAdminOnly: string; extensionOptionsEmpty: (sentence: string) => string; extensionOptionsFailed: (error: SettingsError) => string; extensionOptionsNone: string; extensionOptionsReset: (label: string) => string; extensionOptionsResetTitle: string; extensionOptionsRun: string; extensionOptionsRunning: string; extensionOptionsRunningStatus: string; extensionOptionsUnset: string }
```

Source: [ui/src/settings/sections/extensions/options-labels.ts:9](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/options-labels.ts#L9)

### `DEFAULT_EXTENSIONS_SECTION_LABELS`

Constant.

The default English strings of the Extensions section.

```ts
const DEFAULT_EXTENSIONS_SECTION_LABELS: { extensionsSectionAccessHint: string; extensionsSectionBrowseCount: (count: number) => string; extensionsSectionBrowseEmpty: string; extensionsSectionBrowseEmptyHint: string; extensionsSectionBrowseFilter: string; extensionsSectionBrowseNoMatch: string; extensionsSectionBrowseVersion: (version: string) => string; extensionsSectionBuild: string; extensionsSectionCancel: string; extensionsSectionChangeOrigin: string; extensionsSectionChangeOriginBusy: string; extensionsSectionChangeOriginField: string; extensionsSectionChangeOriginFound: string; extensionsSectionChangeOriginHint: string; extensionsSectionChangeOriginMismatch: (name: string) => string; extensionsSectionChangeOriginSubmit: string; extensionsSectionChangeOriginTitle: (name: string) => string; extensionsSectionClear: string; extensionsSectionConfirmRemove: string; extensionsSectionCreate: string; extensionsSectionDefaultSource: string; extensionsSectionDefaultSourceDescription: string; extensionsSectionEdit: string; extensionsSectionEmpty: string; extensionsSectionErrorBadge: string; extensionsSectionInstall: string; extensionsSectionInstalled: string; extensionsSectionInstalling: (source: string) => string; extensionsSectionInstallPicked: (count: number) => string; extensionsSectionKeep: string; extensionsSectionNameField: string; extensionsSectionNamePlaceholder: string; extensionsSectionNoFolder: string; extensionsSectionPicked: (count: number) => string; extensionsSectionProjectHint: string; extensionsSectionRemove: string; extensionsSectionRemoveTitle: (dir: string) => string; extensionsSectionRemoving: (name: string) => string; extensionsSectionScopeProject: string; extensionsSectionScopeUser: string; extensionsSectionSource: (source: string, version: string | undefined) => string; extensionsSectionSourceField: string; extensionsSectionSourcePlaceholder: string; extensionsSectionUnreachable: string; extensionsSectionUpdate: string; extensionsSectionUpdateBusy: string; extensionsSectionUpdateFrom: (origin: string) => string; extensionsSectionUpdateMenu: (name: string) => string; extensionsSectionUpdateTitle: string; extensionsSectionUpdating: (name: string) => string; extensionsSectionUserHint: string }
```

Source: [ui/src/settings/sections/extensions/labels.ts:7](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/labels.ts#L7)

### `DEFAULT_HOST_CATALOG_LABELS`

Constant.

The default English strings of the host catalog section.

```ts
const DEFAULT_HOST_CATALOG_LABELS: { hostCatalogCancel: string; hostCatalogEmpty: (host: string, kind: SettingsCatalogKind) => string; hostCatalogInstall: string; hostCatalogInstallLabel: (noun: string) => string; hostCatalogInstallPlaceholder: (noun: string) => string; hostCatalogNoInstalls: (host: string) => string; hostCatalogNoun: (kind: SettingsCatalogKind) => string; hostCatalogOne: (kind: SettingsCatalogKind) => string; hostCatalogReadFailed: (host: string, kind: SettingsCatalogKind, error: string) => string; hostCatalogReading: (host: string, kind: SettingsCatalogKind) => string; hostCatalogRefresh: string }
```

Source: [ui/src/settings/sections/host-catalog/labels.ts:25](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/host-catalog/labels.ts#L25)

### `DEFAULT_INSTRUCTIONS_SECTION_LABELS`

Constant.

The default English strings of the Instructions section.

```ts
const DEFAULT_INSTRUCTIONS_SECTION_LABELS: { instructionsSectionBlockedByProfile: (path: string) => string; instructionsSectionBlockedByScope: (path: string) => string; instructionsSectionCreate: string; instructionsSectionCreateOverrideTitle: string; instructionsSectionCreating: string; instructionsSectionEditPrompt: string; instructionsSectionEstimateTitle: string; instructionsSectionLoading: string; instructionsSectionMoreLines: (hidden: number, hasFile: boolean) => string; instructionsSectionNoContext: string; instructionsSectionNoSession: string; instructionsSectionNotLoaded: string; instructionsSectionReload: string; instructionsSectionShadowed: (path: string) => string; instructionsSectionShare: (percent: number) => string; instructionsSectionShareTitle: string; instructionsSectionSlice: (label: string, tokens: string) => string; instructionsSectionTokens: (tokens: string) => string; instructionsSectionTokensTitle: (tokens: string) => string; instructionsSectionTotal: (tokens: string) => string }
```

Source: [ui/src/settings/sections/instructions/labels.ts:6](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/instructions/labels.ts#L6)

### `DEFAULT_KEYBINDINGS_SECTION_LABELS`

Constant.

The default English strings of the Keybindings section.

```ts
const DEFAULT_KEYBINDINGS_SECTION_LABELS: { keybindingsSectionAnnotate: string; keybindingsSectionApp: string; keybindingsSectionArtifacts: string; keybindingsSectionBack: string; keybindingsSectionBrowse: string; keybindingsSectionCancel: string; keybindingsSectionCloseTab: string; keybindingsSectionCompact: string; keybindingsSectionCopyId: string; keybindingsSectionCycleAgent: string; keybindingsSectionDelete: string; keybindingsSectionDetails: string; keybindingsSectionEdit: string; keybindingsSectionEffort: string; keybindingsSectionExportJson: string; keybindingsSectionExportMarkdown: string; keybindingsSectionFavorite: string; keybindingsSectionFind: string; keybindingsSectionForward: string; keybindingsSectionGenerateTitle: string; keybindingsSectionHistoryNext: string; keybindingsSectionHistoryPrev: string; keybindingsSectionKeybindings: string; keybindingsSectionMainSession: string; keybindingsSectionMention: string; keybindingsSectionModel: string; keybindingsSectionNewLine: string; keybindingsSectionNewSession: string; keybindingsSectionNewTerminal: string; keybindingsSectionPalette: string; keybindingsSectionPanelNext: string; keybindingsSectionPanelPrev: string; keybindingsSectionPanels: string; keybindingsSectionPrompt: string; keybindingsSectionReload: string; keybindingsSectionReloading: string; keybindingsSectionSearch: string; keybindingsSectionSend: string; keybindingsSectionSession: string; keybindingsSectionSessionActions: string; keybindingsSectionSettings: string; keybindingsSectionSidebar: string; keybindingsSectionSkill: string; keybindingsSectionSplitDown: string; keybindingsSectionSplitRight: string; keybindingsSectionTabNext: string; keybindingsSectionTabPrev: string; keybindingsSectionTerminal: string; keybindingsSectionTitle: string; keybindingsSectionTodos: string; keybindingsSectionUsage: string; keybindingsSectionZoomIn: string; keybindingsSectionZoomOut: string; keybindingsSectionZoomReset: string }
```

Source: [ui/src/settings/sections/keybindings/labels.ts:8](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/labels.ts#L8)

### `DEFAULT_LOGS_SECTION_LABELS`

Constant.

The default English strings of the Logs section.

```ts
const DEFAULT_LOGS_SECTION_LABELS: { logsSectionClear: string; logsSectionCount: (n: number) => string; logsSectionEmpty: string; logsSectionFilter: string; logsSectionFilterLabel: string; logsSectionFollow: string; logsSectionFollowLabel: string; logsSectionLevel: string; logsSectionLevelLabel: string; logsSectionNoMatch: string }
```

Source: [ui/src/settings/sections/logs/labels.ts:6](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/logs/labels.ts#L6)

### `DEFAULT_MCP_SECTION_LABELS`

Constant.

The default English strings of the MCP servers section.

```ts
const DEFAULT_MCP_SECTION_LABELS: { mcpSectionAdd: string; mcpSectionAddCancel: string; mcpSectionAdvancedOAuth: string; mcpSectionAdvancedOAuthHint: string; mcpSectionBadge: (badge: 'error' | 'needs-auth' | 'authorizing' | 'authed' | 'key-refused' | 'bootstrap-error') => string; mcpSectionCallbackPort: string; mcpSectionCallbackPortPlaceholder: string; mcpSectionCancel: string; mcpSectionClientId: string; mcpSectionClientSecret: string; mcpSectionCollapse: (server: string) => string; mcpSectionCollapseTitle: string; mcpSectionCommand: string; mcpSectionCommandPlaceholder: string; mcpSectionConfigFile: (server: string) => string; mcpSectionConfirmRemove: string; mcpSectionConnected: string; mcpSectionCouldNotConnect: string; mcpSectionDisable: string; mcpSectionDismiss: string; mcpSectionEmpty: string; mcpSectionEmptyHint: string; mcpSectionEmptyUserHint: string; mcpSectionEnable: string; mcpSectionEnabled: (name: string) => string; mcpSectionEnv: string; mcpSectionEnvPlaceholder: string; mcpSectionError: (error: SettingsError) => string; mcpSectionExpand: (server: string) => string; mcpSectionExpandTitle: string; mcpSectionHeaders: string; mcpSectionHeadersPlaceholder: string; mcpSectionKeep: string; mcpSectionKeyRefused: string; mcpSectionLoading: string; mcpSectionName: string; mcpSectionNamePlaceholder: string; mcpSectionNeedsClient: string; mcpSectionNeedsSignIn: string; mcpSectionNoDescription: string; mcpSectionNoTools: string; mcpSectionOpening: string; mcpSectionOpenPage: string; mcpSectionProjectHint: string; mcpSectionRedirect: string; mcpSectionRedirectNote: string; mcpSectionRedirectUrl: (port: string) => string; mcpSectionRedirectUrlAny: string; mcpSectionRefresh: string; mcpSectionRefreshTitle: string; mcpSectionRemove: string; mcpSectionRemoveTitle: (server: string, path: string) => string; mcpSectionReplaces: string; mcpSectionRestart: string; mcpSectionRestarting: string; mcpSectionRestartTitle: string; mcpSectionRunningPerSession: string; mcpSectionRunningShared: (sessions: number) => string; mcpSectionRunningTitle: string; mcpSectionSavedToUser: string; mcpSectionScopes: string; mcpSectionShared: string; mcpSectionSharedHint: string; mcpSectionSharedSwitch: (name: string) => string; mcpSectionSignIn: string; mcpSectionSignInAgain: string; mcpSectionSignOut: string; mcpSectionStarting: string; mcpSectionSubmit: string; mcpSectionTest: string; mcpSectionTestAll: string; mcpSectionTestAllTitle: string; mcpSectionTesting: string; mcpSectionTestingAll: string; mcpSectionToolCount: (on: number, total: number) => string; mcpSectionToolsListed: (age: string) => string; mcpSectionTransport: string; mcpSectionTransportTitle: (transport: string) => string; mcpSectionUrl: string; mcpSectionUrlPlaceholder: string; mcpSectionUserHint: string; mcpSectionWhen: (age: string) => string }
```

Source: [ui/src/settings/sections/mcp/labels.ts:14](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/mcp/labels.ts#L14)

### `DEFAULT_MODEL_ROWS_LABELS`

Constant.

The default English strings of the model rows.

```ts
const DEFAULT_MODEL_ROWS_LABELS: { modelRowsAccountSignedOut: string; modelRowsAgentMissing: (fallback: string) => string; modelRowsAgentReset: string; modelRowsApprovals: string; modelRowsBuild: string; modelRowsClear: (title: string, label: string) => string; modelRowsCompaction: string; modelRowsCompactionDescription: string; modelRowsCompactionMain: string; modelRowsCompactionReset: string; modelRowsDecision: string; modelRowsDecisionDescription: string; modelRowsDecisionFirst: string; modelRowsDecisionListFailed: (error: string) => string; modelRowsDecisionNone: string; modelRowsDecisionReset: string; modelRowsDecisionResetLabel: string; modelRowsDecisionTestTitle: string; modelRowsDefaultAgent: string; modelRowsDefaultModel: string; modelRowsDone: string; modelRowsDuration: (ms: number) => string; modelRowsEffort: string; modelRowsEffortReset: string; modelRowsEffortResetSpace: string; modelRowsFailed: (reason: string | undefined, message: string | undefined) => string; modelRowsFailedTarget: (target: string) => string; modelRowsLastUsed: string; modelRowsLoading: string; modelRowsModelReset: string; modelRowsModelResetSpace: string; modelRowsNewSessions: string; modelRowsNewSessionsInSpace: string; modelRowsNoMatch: string; modelRowsPickDialog: (label: string) => string; modelRowsPickLabel: (model: string, provider: string) => string; modelRowsRetry: string; modelRowsSearchLabel: string; modelRowsSearchPlaceholder: string; modelRowsSelected: string; modelRowsStartOn: (where: string) => string; modelRowsStartWith: (where: string) => string; modelRowsTest: string; modelRowsTesting: string; modelRowsTestNeedsPick: string; modelRowsTestTitle: string; modelRowsText: string; modelRowsTextAutomatic: (model: string) => string; modelRowsTextDescription: string; modelRowsTextReset: string; modelRowsTheDefault: string; modelRowsWorks: string }
```

Source: [ui/src/settings/sections/models/labels.ts:8](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/labels.ts#L8)

### `DEFAULT_PERFORMANCE_SECTION_LABELS`

Constant.

The default English strings of the Performance section and overlay.

```ts
const DEFAULT_PERFORMANCE_SECTION_LABELS: { perfBusy: (pct: string) => string; perfBusyHint: string; perfChannelDirection: (direction: PerfChannelDirection) => string; perfChannels: string; perfChannelsEmpty: string; perfColBusy: string; perfColCalls: string; perfColCpu: string; perfColFrames: string; perfColHeap: string; perfColMemory: string; perfColP95: string; perfColSelf: string; perfColShare: string; perfColTotal: string; perfColWorst: string; perfCores: (cores: number) => string; perfCpu: string; perfExport: string; perfExported: string; perfExporting: string; perfFrames: string; perfFramesEmpty: string; perfGpu: string; perfGpuHint: string; perfHud: string; perfHudClose: string; perfHudOpen: string; perfHudTop: (label: string) => string; perfInsideCpu: string; perfInsideMemory: string; perfLag: string; perfLagHint: string; perfLaunched: string; perfLaunchedTitle: string; perfMainBusy: string; perfMcpPerSession: string; perfMcpShared: (sessions: number) => string; perfMcpTitle: (name: string) => string; perfMemory: string; perfOrigin: (origin: PerfOrigin) => string; perfOsThread: (id: string, label: string) => string; perfPlus: (value: string) => string; perfProcesses: string; perfProcessKind: (kind: PerfProcessKind) => string; perfProcessTitle: (pid: number, detail?: string) => string; perfProfile: string; perfProfileBusy: string; perfProfileFailed: (detail?: string) => string; perfProfileLength: string; perfProfileMain: string; perfProfileRecord: string; perfProfileRecording: (s: number) => string; perfProfileSeconds: (s: number) => string; perfProfileTarget: string; perfProfileWindow: string; perfReset: string; perfResident: string; perfReveal: string; perfSelf: string; perfSelfHint: (commandMs: string) => string; perfSessions: string; perfSessionsEmpty: string; perfSessionUntitled: string; perfShowThreads: (label: string) => string; perfSince: (time: string) => string; perfThreadKind: (kind: 'main' | 'renderer' | 'worker' | 'renderer-worker') => string; perfThreads: string; perfThreadsLoading: string; perfThreadsNone: string; perfUnavailable: string; perfWaiting: string; perfWatchFailed: (detail?: string) => string }
```

Source: [ui/src/settings/sections/performance/labels.ts:36](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/labels.ts#L36)

### `DEFAULT_PLUGINS_SECTION_LABELS`

Constant.

The default English strings of the Plugins section.

```ts
const DEFAULT_PLUGINS_SECTION_LABELS: { pluginsSectionEmpty: string; pluginsSectionLoadedBy: (extension: string) => string; pluginsSectionLooking: string; pluginsSectionMcps: (n: number) => string; pluginsSectionRejected: string; pluginsSectionRejectedAdds: string; pluginsSectionRejectedTitle: (path: string) => string; pluginsSectionScanFailed: (error: string) => string; pluginsSectionSkills: (n: number) => string; pluginsSectionVersionTitle: (path: string, version: string) => string }
```

Source: [ui/src/settings/sections/plugins/labels.ts:8](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/plugins/labels.ts#L8)

### `DEFAULT_SKILLS_SECTION_LABELS`

Constant.

The default English strings of the Skills section.

```ts
const DEFAULT_SKILLS_SECTION_LABELS: { skillsSectionClear: string; skillsSectionConfirmDelete: string; skillsSectionCount: (n: number) => string; skillsSectionDelete: (name: string) => string; skillsSectionDeleteTitle: (name: string) => string; skillsSectionDeleting: (name: string) => string; skillsSectionEdit: (name: string) => string; skillsSectionEditTitle: (dir: string) => string; skillsSectionEmpty: string; skillsSectionFilterAll: string; skillsSectionFilterCount: (label: string, count: number) => string; skillsSectionFilterLabel: string; skillsSectionFilterProject: string; skillsSectionFilterUser: string; skillsSectionFrom: (origin: 'extension' | 'plugin', by: string | undefined) => string; skillsSectionInPrompt: (tokens: string) => string; skillsSectionInPromptTitle: (tokens: string) => string; skillsSectionInstall: (count: string) => string; skillsSectionInstalling: (source: string) => string; skillsSectionKeep: string; skillsSectionLoading: string; skillsSectionNoFolder: string; skillsSectionNoMatch: (query: string) => string; skillsSectionNoneInScope: (scope: string) => string; skillsSectionPerPrompt: (tokens: string) => string; skillsSectionPerPromptTitle: string; skillsSectionPicked: (count: string) => string; skillsSectionProjectHint: string; skillsSectionReadFailed: (error: string) => string; skillsSectionRefresh: string; skillsSectionRefreshTitle: string; skillsSectionSaveFailed: (reason: string) => string; skillsSectionScanFailed: (error: string) => string; skillsSectionSearch: string; skillsSectionSearchLabel: string; skillsSectionSkillFile: (name: string) => string; skillsSectionSlice: (name: string, tokens: string) => string; skillsSectionUnmatched: (source: string) => string; skillsSectionUse: (name: string) => string; skillsSectionUserHint: string; skillsSectionWhenUsed: (tokens: string) => string; skillsSectionWhenUsedTitle: (tokens: string) => string }
```

Source: [ui/src/settings/sections/skills/labels.ts:7](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/skills/labels.ts#L7)

### `KEYBINDING_ROW_COUNT`

Constant.

How many rows [`KEYBINDING_SECTIONS`](https://zidane.si/docs/reference/ui-settings.md#KEYBINDING_SECTIONS) lists (a page's search count).

```ts
const KEYBINDING_ROW_COUNT: number
```

Source: [ui/src/settings/sections/keybindings/rows.ts:105](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/rows.ts#L105)

### `KEYBINDING_SECTIONS`

Constant.

The groups Settings › Keybindings shows, in order. Every catalog action has a row.

```ts
const KEYBINDING_SECTIONS: readonly KeybindingGroup[]
```

Source: [ui/src/settings/sections/keybindings/rows.ts:31](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/rows.ts#L31)

## Interfaces

### `AgentDefaultsRowsProps`

Interface.

Props for [`AgentDefaultsRows`](https://zidane.si/docs/reference/ui-settings.md#AgentDefaultsRows).

```ts
interface AgentDefaultsRowsProps
```

**Properties**

- `className?` (`string`): Extra classes on each row.
- `cwd` (`string | null`): The folder whose agents and models are listed (`null`: none).
- `inherited?` (`AgentDefaultsValue`): A space's rows: the host's defaults, what an unset row falls back to; set rows clear back to them.
- `onChange` (`(next: AgentDefaultsValue) => void`): Sets them.
- `style?` (`CSSProperties`): Inline styles on each row.
- `value` (`AgentDefaultsValue`): The defaults.

Source: [ui/src/settings/sections/models/AgentDefaults.tsx:74](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/AgentDefaults.tsx#L74)

### `AgentDefaultsValue`

Interface.

The defaults the rows edit.

```ts
interface AgentDefaultsValue
```

**Properties**

- `agentId` (`string | undefined`): The agent profile, `undefined`: Build (or the inherited one).
- `effort` (`'off' | 'max' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'adaptive' | undefined`): The reasoning effort, `undefined`: the last used.
- `model` (`ModelPickRef | null`): The model, `null`: the last used (or the inherited one).
- `modelOptions` (`Record<string, boolean> | undefined`): Every option set, on or off; `undefined`: the last used.

Source: [ui/src/settings/sections/models/AgentDefaults.tsx:33](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/AgentDefaults.tsx#L33)

### `AppearanceSectionProps`

Interface.

Props for [`AppearanceSection`](https://zidane.si/docs/reference/ui-settings.md#AppearanceSection).

```ts
interface AppearanceSectionProps
```

**Properties**

- `appIcon?` (`ReactNode`): The app icon picker (a desktop app's): shown as the App icon group after Accent. Absent: no such group.
- `className?` (`string`): Extra classes on the root.
- `onReset?` (`() => void`): Runs after Reset appearance restored the preferences (the app restores what it owns, the app icon).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/appearance/AppearanceSection.tsx:53](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/appearance/AppearanceSection.tsx#L53)

### `ApprovalModeRowProps`

Interface.

Props for [`ApprovalModeRow`](https://zidane.si/docs/reference/ui-settings.md#ApprovalModeRow).

```ts
interface ApprovalModeRowProps extends ModelRowBase
```

**Properties**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `onChange` (`(value: ApprovalMode) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`ApprovalMode`): `Settings.approvalMode`.

Source: [ui/src/settings/sections/models/ModelRows.tsx:307](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L307)

### `ChoiceRowProps`

Interface.

Props for [`ChoiceRow`](https://zidane.si/docs/reference/ui-settings.md#ChoiceRow).

```ts
interface ChoiceRowProps
```

**Properties**

- `className?` (`string`): Classes merged on the row's button.
- `disabled?` (`boolean`): Read-only here: inert, its value shown.
- `onChange` (`(value: string | number | boolean | readonly string[] | Record<string, readonly string[]> | Record<string, unknown> | Record<string, boolean> | Space[] | EnvironmentSettings | Record<string, Record<string, unknown>> | undefined) => void`): An option was picked (not called for the current one).
- `row` (`SettingsChoice`): The catalog choice the row draws (label, description, options).
- `style?` (`CSSProperties`): Inline styles on the row's button.
- `unavailable?` (`string`): Why the host can't apply the setting: the row is inert, shows it as unavailable, and this note replaces its description.
- `value` (`unknown`): The setting's value: the option it names is shown.

Source: [ui/src/settings/rows.tsx:73](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L73)

### `ClaudeImportDialogProps`

Interface.

Props for [`ClaudeImportDialog`](https://zidane.si/docs/reference/ui-settings.md#ClaudeImportDialog).

```ts
interface ClaudeImportDialogProps
```

**Properties**

- `activeServerName?` (`string`): The active chat runs on this server: the import still targets this computer, and says so.
- `className?` (`string`): Extra classes on the dialog's panel.
- `cwd` (`string | null`): The folder whose conversations "this project" counts (`null`: none).
- `onBack?` (`() => void`): Back to the settings page that opened it. Absent: no back button; Done closes.
- `onClose` (`() => void`): Dismisses the dialog.
- `onImported?` (`() => void | Promise<void>`): After an import ran (the app reads its session list again).
- `style?` (`CSSProperties`): Inline styles on the dialog's panel.

Source: [ui/src/settings/sections/claude-import/ClaudeImportDialog.tsx:37](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/claude-import/ClaudeImportDialog.tsx#L37)

### `CompactionModelRowProps`

Interface.

Props for [`CompactionModelRow`](https://zidane.si/docs/reference/ui-settings.md#CompactionModelRow).

```ts
interface CompactionModelRowProps extends ModelRowBase
```

**Properties**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `main` (`ModelPickRef`): The default model new sessions run on: what "main model" tests.
- `onChange` (`(value: string) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`string`): `Settings.compactionModel`: `"providerKey[@account]/modelId"`, or `''` for the main model.

Source: [ui/src/settings/sections/models/ModelRows.tsx:112](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L112)

### `ConversationPresetsRowProps`

Interface.

Props for [`ConversationPresetsRow`](https://zidane.si/docs/reference/ui-settings.md#ConversationPresetsRow).

```ts
interface ConversationPresetsRowProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `setSetting` (`<K extends keyof Settings>(key: K, value: Settings[K]) => void`): Writes one setting: "Use" a preset writes each of its settings.
- `settings` (`Settings`): The settings the "your settings" tab previews.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/models/ModelRows.tsx:352](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L352)

### `CreateExtensionDialogProps`

Interface.

Props for [`CreateExtensionDialog`](https://zidane.si/docs/reference/ui-settings.md#CreateExtensionDialog).

```ts
interface CreateExtensionDialogProps
```

**Properties**

- `className?` (`string`): Extra classes on the dialog's panel.
- `cwd` (`string | null`): The folder a project extension goes in. `null`: no project scope.
- `onCancel` (`() => void`): Back to the extensions list.
- `onClose` (`() => void`): Dismisses the dialog (X, Esc, done).
- `onOpen` (`(created: SettingsExtensionCreated) => Promise<void>`): Opens an authoring session on the new extension; a rejection shows in the dialog.
- `style?` (`CSSProperties`): Inline styles on the dialog's panel.

Source: [ui/src/settings/sections/extensions/CreateExtensionDialog.tsx:30](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/CreateExtensionDialog.tsx#L30)

### `DecisionModelRowProps`

Interface.

Props for [`DecisionModelRow`](https://zidane.si/docs/reference/ui-settings.md#DecisionModelRow).

```ts
interface DecisionModelRowProps extends ModelRowBase
```

**Properties**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `onChange` (`(value: string) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`string`): `Settings.decisionModel`: `"providerKey/modelId"`, or `''` for the first available.

Source: [ui/src/settings/sections/models/ModelRows.tsx:173](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L173)

### `EditorDiagnosticsTool`

Interface.

One project tool the diagnostics run, as found in a folder.

```ts
interface EditorDiagnosticsTool
```

**Properties**

- `detail?` (`string`): Why it is missing, or where it was found.
- `id` (`string`): The tool's id (what `diagnosticsDisabled` lists).
- `label` (`string`): Its name.
- `status` (`'ready' | 'missing' | 'absent'`): `ready`: configured and runnable; `missing`: configured, no binary; `absent`: not used by this project.

Source: [ui/src/settings/sections/editor/EditorSection.tsx:45](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/EditorSection.tsx#L45)

### `EditorLanguageServer`

Interface.

One language server, as found for a folder.

```ts
interface EditorLanguageServer
```

**Properties**

- `busy?` (`string`): What a running server is still doing ("Indexing 12/340").
- `detail?` (`string`): The command found, or why it is missing.
- `id` (`string`): The server's id (what `lspOverrides` is keyed by).
- `label` (`string`): Its name.
- `lastError?` (`string`): Why it failed to start or went down.
- `log?` (`string`): The tail of its log.
- `openDocuments?` (`number`): How many documents it has open.
- `status` (`'failed' | 'running' | 'ready' | 'missing' | 'absent'`): `running`: started for this folder; `ready`: found, not started; `failed`; `missing`: no binary; `absent`: not applicable.

Source: [ui/src/settings/sections/editor/EditorSection.tsx:57](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/EditorSection.tsx#L57)

### `EditorSectionProps`

Interface.

Props for [`EditorSection`](https://zidane.si/docs/reference/ui-settings.md#EditorSection).

```ts
interface EditorSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The active session's folder: the tool and server lists are for it. `null`: no session.
- `diagnosticsTools?` (`(cwd: string) => Promise<readonly EditorDiagnosticsTool[]>`): The project tools the diagnostics would run in a folder. Absent: no tool list.
- `intro?` (`ReactNode`): Shown above the groups (a tutorial card).
- `languageServers?` (`(cwd: string) => Promise<readonly EditorLanguageServer[]>`): The language servers known for a folder. Absent: no server list.
- `openIn?` (`{ onChange: (value: EditorOpenIn) => void; value: EditorOpenIn }`): Where clicked files open, and how to change it. Absent: no Opening › Open in row.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/editor/EditorSection.tsx:77](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/EditorSection.tsx#L77)

### `EnabledListSectionProps`

Interface.

Props for [`EnabledListSection`](https://zidane.si/docs/reference/ui-settings.md#EnabledListSection).

```ts
interface EnabledListSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `hostName` (`string`): The host's name, for the lines.
- `settingKey` (`SettingsEnabledListKey`): Which list.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/enabled-list/EnabledListSection.tsx:26](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/enabled-list/EnabledListSection.tsx#L26)

### `EnvironmentsSectionProps`

Interface.

Props for [`EnvironmentsSection`](https://zidane.si/docs/reference/ui-settings.md#EnvironmentsSection).

```ts
interface EnvironmentsSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder new sessions would start in (`null`: none; kinds are described without one).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/environments/EnvironmentsSection.tsx:58](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/environments/EnvironmentsSection.tsx#L58)

### `ExtensionActionRowProps`

Interface.

Props for [`ExtensionActionRow`](https://zidane.si/docs/reference/ui-settings.md#ExtensionActionRow).

```ts
interface ExtensionActionRowProps
```

**Properties**

- `busy?` (`boolean`): This row's run is going: the button spins.
- `description?` (`string`): Help text under the label.
- `disabled?` (`boolean`): The button is off (another row's run is going).
- `label` (`string`): The action's label.
- `needsScope?` (`'chat' | 'admin' | null`): The token scope this client lacks to run it: the button is off, restricted ("Admin only").
- `status?` (`{ error?: boolean; text: string }`): The status line under the label (a run's result, a passive probe).
- `onRun` (`() => void`): Runs the action (the Run button).

Source: [ui/src/settings/sections/extensions/ExtensionConfigRows.tsx:39](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionConfigRows.tsx#L39)

### `ExtensionConfigRowProps`

Interface.

Props for [`ExtensionConfigRow`](https://zidane.si/docs/reference/ui-settings.md#ExtensionConfigRow).

```ts
interface ExtensionConfigRowProps
```

**Properties**

- `item` (`WireExtensionConfigItem`): The setting, as the host describes it.
- `lock?` (`ReactNode`): What a locked row shows beside its label (a lock chip).
- `locked?` (`boolean`): Shown, not editable (a declarative config entry sets it).
- `maskSecrets?` (`boolean`): A `secret` string is a password input.
- `modelCatalog?` (`readonly ModelListEntry[] | null`): The composer's model catalog for `model` items (`null` while loading or not asked).
- `modelCatalogFailed?` (`boolean`): The catalog could not load: `model` items take a free input.
- `switchRole?` (`boolean`): A boolean row is a `switch` (its checked state and name for assistive tech) instead of a plain button.
- `value` (`ExtensionConfigValue`): Its effective value.
- `onWrite` (`(value: ExtensionConfigValue) => void`): Writes a new value (an edit in the row).

Source: [ui/src/settings/sections/extensions/ExtensionConfigRows.tsx:103](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionConfigRows.tsx#L103)

### `ExtensionOptionsSectionProps`

Interface.

Props for [`ExtensionOptionsSection`](https://zidane.si/docs/reference/ui-settings.md#ExtensionOptionsSection).

```ts
interface ExtensionOptionsSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose enabled extensions' options show (`null`: none).
- `style?` (`CSSProperties`): Inline styles on the root.
- `visible?` (`boolean`): Whether the section is on screen: the passive probes run only then. Default: true.

Source: [ui/src/settings/sections/extensions/ExtensionOptionsSection.tsx:86](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionOptionsSection.tsx#L86)

### `ExtensionPick`

Interface.

An extension picked in the browser: what installs it.

```ts
interface ExtensionPick extends SourcePick
```

**Properties**

- `install` (`{ extension?: string; source: string }`): What `catalog.install` takes: the source spec, and the extension in it.
- `key` (`string`, from `SourcePick`): Identifies the pick among all picks, from any source.
- `label` (`string`): Its display name.
- `name` (`string`): Its name, the folder it installs as.

Source: [ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx:33](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx#L33)

### `ExtensionSourceBrowserProps`

Interface.

Props of [`ExtensionSourceBrowser`](https://zidane.si/docs/reference/ui-settings.md#ExtensionSourceBrowser).

```ts
interface ExtensionSourceBrowserProps
```

**Properties**

- `browse` (`(input: string) => Promise<ExtensionSourceListing>`): Lists a source (`SettingsExtensionsHost.browse`).
- `className?` (`string`): Extra classes on the browser.
- `images?` (`SkillSourceImages`): Where the avatars come from. Defaults to GitHub.
- `initial?` (`string`): The source to open at once. Default: `DEFAULT_EXTENSION_SOURCE`.
- `installed?` (`readonly string[]`): Names of the extensions already installed: their rows say so and stay checked.
- `onToggle` (`(picks: readonly ExtensionPick[], on: boolean) => void`): Picks or unpicks extensions: one row, or a whole source.
- `picks` (`readonly ExtensionPick[]`): The extensions picked so far, from any source.
- `style?` (`CSSProperties`): Inline styles on the root element.

Source: [ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx:90](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionSourceBrowser.tsx#L90)

### `ExtensionsSectionProps`

Interface.

Props for [`ExtensionsSection`](https://zidane.si/docs/reference/ui-settings.md#ExtensionsSection).

```ts
interface ExtensionsSectionProps
```

**Properties**

- `children?` (`ReactNode`): Under the list, in the same scroll (the extensions' options).
- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose project extensions show with the user's (`null`: none picked, nothing listed).
- `onCreateExtension?` (`() => void`): Opens the app's create-extension flow. Absent: no Create button.
- `onEdit?` (`(extension: SettingsExtension) => Promise<void>`): Opens an authoring session on an extension's folder (the app closes Settings). Absent: no Edit.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/extensions/ExtensionsSection.tsx:77](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionsSection.tsx#L77)

### `HostCatalogSectionProps`

Interface.

Props for [`HostCatalogSection`](https://zidane.si/docs/reference/ui-settings.md#HostCatalogSection).

```ts
interface HostCatalogSectionProps
```

**Properties**

- `children?` (`ReactNode`): Under the extensions list, in the same scroll (the extensions' settings, as on This computer's page).
- `className?` (`string`): Extra classes on the root.
- `cwd?` (`string | null`): The session's folder on the host (adds its project scope); absent: the host user's scope.
- `hostName` (`string`): The host's name, in the copy.
- `kind` (`HostCatalogSectionKind`): Which catalog.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/host-catalog/HostCatalogSection.tsx:105](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/host-catalog/HostCatalogSection.tsx#L105)

### `InstructionsSectionProps`

Interface.

Props for [`InstructionsSection`](https://zidane.si/docs/reference/ui-settings.md#InstructionsSection).

```ts
interface InstructionsSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `localFiles?` (`boolean`): The session's files are on this device: offer to show them in the file manager. Default: true.
- `renderMarkdown?` (`(text: string) => ReactNode`): Renders an expanded instruction's text. Default: the kit's `Markdown` as a document.
- `sessionId` (`string | null`): The session whose prompt shows (`null`: none open).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/instructions/InstructionsSection.tsx:61](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/instructions/InstructionsSection.tsx#L61)

### `KeybindingGroup`

Interface.

One group of rows under a title.

```ts
interface KeybindingGroup
```

**Properties**

- `rows` (`readonly KeybindingRow[]`): Its rows, in order.
- `title` (`'keybindingsSectionTitle' | 'keybindingsSectionEdit' | 'keybindingsSectionReload' | 'keybindingsSectionReloading' | 'keybindingsSectionPrompt' | 'keybindingsSectionSend' | 'keybindingsSectionNewLine' | 'keybindingsSectionHistoryPrev' | 'keybindingsSectionHistoryNext' | 'keybindingsSectionMention' | 'keybindingsSectionSkill' | 'keybindingsSectionSession' | 'keybindingsSectionNewSession' | 'keybindingsSectionMainSession' | 'keybindingsSectionBrowse' | 'keybindingsSectionDetails' | 'keybindingsSectionCycleAgent' | 'keybindingsSectionModel' | 'keybindingsSectionEffort' | 'keybindingsSectionTodos' | 'keybindingsSectionArtifacts' | 'keybindingsSectionCancel' | 'keybindingsSectionSessionActions' | 'keybindingsSectionGenerateTitle' | 'keybindingsSectionCompact' | 'keybindingsSectionExportMarkdown' | 'keybindingsSectionExportJson' | 'keybindingsSectionCopyId' | 'keybindingsSectionFavorite' | 'keybindingsSectionDelete' | 'keybindingsSectionPanels' | 'keybindingsSectionPanelNext' | 'keybindingsSectionPanelPrev' | 'keybindingsSectionTabNext' | 'keybindingsSectionTabPrev' | 'keybindingsSectionCloseTab' | 'keybindingsSectionSplitRight' | 'keybindingsSectionSplitDown' | 'keybindingsSectionFind' | 'keybindingsSectionSearch' | 'keybindingsSectionTerminal' | 'keybindingsSectionNewTerminal' | 'keybindingsSectionAnnotate' | 'keybindingsSectionApp' | 'keybindingsSectionPalette' | 'keybindingsSectionSidebar' | 'keybindingsSectionBack' | 'keybindingsSectionForward' | 'keybindingsSectionUsage' | 'keybindingsSectionSettings' | 'keybindingsSectionKeybindings' | 'keybindingsSectionZoomIn' | 'keybindingsSectionZoomOut' | 'keybindingsSectionZoomReset'`): The group's title key.

Source: [ui/src/settings/sections/keybindings/rows.ts:23](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/rows.ts#L23)

### `KeybindingRow`

Interface.

One row: a catalog action (its bound keys come from the merged map) or a literal `spec`.

```ts
interface KeybindingRow
```

**Properties**

- `action?` (`KeyAction`): A canonical action id, resolved through the merged bindings.
- `extra?` (`string`): One more key that also triggers the action, shown as another alternative.
- `label` (`'keybindingsSectionTitle' | 'keybindingsSectionEdit' | 'keybindingsSectionReload' | 'keybindingsSectionReloading' | 'keybindingsSectionPrompt' | 'keybindingsSectionSend' | 'keybindingsSectionNewLine' | 'keybindingsSectionHistoryPrev' | 'keybindingsSectionHistoryNext' | 'keybindingsSectionMention' | 'keybindingsSectionSkill' | 'keybindingsSectionSession' | 'keybindingsSectionNewSession' | 'keybindingsSectionMainSession' | 'keybindingsSectionBrowse' | 'keybindingsSectionDetails' | 'keybindingsSectionCycleAgent' | 'keybindingsSectionModel' | 'keybindingsSectionEffort' | 'keybindingsSectionTodos' | 'keybindingsSectionArtifacts' | 'keybindingsSectionCancel' | 'keybindingsSectionSessionActions' | 'keybindingsSectionGenerateTitle' | 'keybindingsSectionCompact' | 'keybindingsSectionExportMarkdown' | 'keybindingsSectionExportJson' | 'keybindingsSectionCopyId' | 'keybindingsSectionFavorite' | 'keybindingsSectionDelete' | 'keybindingsSectionPanels' | 'keybindingsSectionPanelNext' | 'keybindingsSectionPanelPrev' | 'keybindingsSectionTabNext' | 'keybindingsSectionTabPrev' | 'keybindingsSectionCloseTab' | 'keybindingsSectionSplitRight' | 'keybindingsSectionSplitDown' | 'keybindingsSectionFind' | 'keybindingsSectionSearch' | 'keybindingsSectionTerminal' | 'keybindingsSectionNewTerminal' | 'keybindingsSectionAnnotate' | 'keybindingsSectionApp' | 'keybindingsSectionPalette' | 'keybindingsSectionSidebar' | 'keybindingsSectionBack' | 'keybindingsSectionForward' | 'keybindingsSectionUsage' | 'keybindingsSectionSettings' | 'keybindingsSectionKeybindings' | 'keybindingsSectionZoomIn' | 'keybindingsSectionZoomOut' | 'keybindingsSectionZoomReset'`): The row's label key.
- `spec?` (`string`): A literal binding, for keys outside the catalog.

Source: [ui/src/settings/sections/keybindings/rows.ts:11](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/rows.ts#L11)

### `KeybindingsSectionProps`

Interface.

Props for [`KeybindingsSection`](https://zidane.si/docs/reference/ui-settings.md#KeybindingsSection).

```ts
interface KeybindingsSectionProps
```

**Properties**

- `actions?` (`ReactNode`): More header actions after Edit in file and Reload (a desktop app's "Show in Finder").
- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/keybindings/KeybindingsSection.tsx:30](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/KeybindingsSection.tsx#L30)

### `LogsSectionProps`

Interface.

Props for [`LogsSection`](https://zidane.si/docs/reference/ui-settings.md#LogsSection).

```ts
interface LogsSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/logs/LogsSection.tsx:41](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/logs/LogsSection.tsx#L41)

### `McpSectionProps`

Interface.

Props for [`McpSection`](https://zidane.si/docs/reference/ui-settings.md#McpSection).

```ts
interface McpSectionProps
```

**Properties**

- `actions?` (`ReactNode`): More header actions after Test all, Refresh and Add server (a desktop app's "Show in Finder").
- `className?` (`string`): Extra classes on the root.
- `cwd?` (`string | null`): The folder whose servers to list. `null`, absent or `''`: the user's servers only.
- `intro?` (`ReactNode`): Above the list (an app's tutorial card).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/mcp/McpSection.tsx:60](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/mcp/McpSection.tsx#L60)

### `ModelListEntry`

Interface.

A model the list offers.

```ts
interface ModelListEntry
```

**Properties**

- `modelId` (`string`): The model's id: what a pick stores.
- `modelName?` (`string`): The catalog's display name.
- `providerKey` (`string`): The provider's key.
- `providerLabel` (`string`): The provider's name, on the row's chip.
- `searchCorpus?` (`string`): What the search matches (lowercase); absent: the provider, id and name.

Source: [ui/src/settings/sections/models/ModelListPicker.tsx:21](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelListPicker.tsx#L21)

### `ModelListPickerProps`

Interface.

Props for [`ModelListPicker`](https://zidane.si/docs/reference/ui-settings.md#ModelListPicker).

```ts
interface ModelListPickerProps
```

**Properties**

- `anchor` (`HTMLElement | null`): The element it hangs under (right-aligned).
- `catalog` (`readonly ModelListEntry[] | null`): The catalog (`null` while loading). Deduped by model id.
- `className?` (`string`): Extra classes on the surface.
- `multi` (`boolean`): Toggle rows instead of picking one.
- `onClose` (`() => void`): Closes the popover.
- `onPick` (`(ids: string[]) => void`): The whole new selection: exactly one id in single mode.
- `open` (`boolean`): Whether the popover is open.
- `selected` (`readonly string[]`): The stored ids, in pick order.

Source: [ui/src/settings/sections/models/ModelListPicker.tsx:35](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelListPicker.tsx#L35)

### `ModelPickFieldProps`

Interface.

Props for [`ModelPickField`](https://zidane.si/docs/reference/ui-settings.md#ModelPickField).

```ts
interface ModelPickFieldProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `clearTitle` (`string`): The clear button's tooltip.
- `cwd` (`string | null`): The folder whose models are listed (`null`: none).
- `description` (`string`): What the row sets.
- `emptyLabel` (`string`): The chip while nothing is picked ("last used", "main model").
- `fallback` (`ModelPickRef | null`): The model the empty chip stands for, tested while nothing is picked; `null`: Test waits for a pick.
- `hostId?` (`string | null`): A server's settings: its models and accounts (`null`: this computer).
- `label` (`string`): The row's name.
- `onChange` (`(pick: ModelPickRef | null) => void`): Sets the pick (`null`: clears it).
- `style?` (`CSSProperties`): Inline styles on the root.
- `value` (`ModelPickRef | null`): The pick, `null` while unset.

Source: [ui/src/settings/sections/models/ModelPickField.tsx:64](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelPickField.tsx#L64)

### `ModelTestButtonProps`

Interface.

Props for [`ModelTestButton`](https://zidane.si/docs/reference/ui-settings.md#ModelTestButton).

```ts
interface ModelTestButtonProps
```

**Properties**

- `className?` (`string`): Extra classes.
- `disabled?` (`boolean`): Nothing to test (no model to name), or the row can't run now.
- `onTest` (`() => void`): Runs the Test.
- `state` (`ModelTestState | null`): The Test's state.
- `title` (`string`): Its tooltip.

Source: [ui/src/settings/sections/models/model-test.tsx:53](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/model-test.tsx#L53)

### `ModelTestLineProps`

Interface.

Props for [`ModelTestLine`](https://zidane.si/docs/reference/ui-settings.md#ModelTestLine).

```ts
interface ModelTestLineProps
```

**Properties**

- `className?` (`string`): Extra classes.
- `result` (`SettingsModelTest`): How the Test went.

Source: [ui/src/settings/sections/models/model-test.tsx:87](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/model-test.tsx#L87)

### `PerformanceHudProps`

Interface.

Props for [`PerformanceHud`](https://zidane.si/docs/reference/ui-settings.md#PerformanceHud).

```ts
interface PerformanceHudProps
```

**Properties**

- `className?` (`string`): Extra classes on the card (its position: `fixed bottom-3 right-3` by default).
- `host` (`SettingsPerformanceHost`): Where the figures come from.
- `onClose?` (`() => void`): Shows a close button.
- `onOpen?` (`() => void`): Shows a button that opens the full page.
- `style?` (`CSSProperties`): Inline styles on the card.

Source: [ui/src/settings/sections/performance/PerformanceHud.tsx:23](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/PerformanceHud.tsx#L23)

### `PerformanceSectionProps`

Interface.

Props for [`PerformanceSection`](https://zidane.si/docs/reference/ui-settings.md#PerformanceSection).

```ts
interface PerformanceSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/performance/PerformanceSection.tsx:58](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/PerformanceSection.tsx#L58)

### `PerfSparklineProps`

Interface.

Props for [`PerfSparkline`](https://zidane.si/docs/reference/ui-settings.md#PerfSparkline).

```ts
interface PerfSparklineProps
```

**Properties**

- `className?` (`string`): Extra classes on the svg (size, colour).
- `max?` (`number`): The top of the scale. Default: the series' own peak (at least 1).
- `span?` (`number`): Points kept on the axis (fewer values start further right). Default: the series' length.
- `style?` (`CSSProperties`): Inline styles on the svg.
- `values` (`readonly number[]`): Oldest first.

Source: [ui/src/settings/sections/performance/PerfSparkline.tsx:8](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/PerfSparkline.tsx#L8)

### `PluginsSectionProps`

Interface.

Props for [`PluginsSection`](https://zidane.si/docs/reference/ui-settings.md#PluginsSection).

```ts
interface PluginsSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose project plugins show with the user's (`null`: none picked).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/plugins/PluginsSection.tsx:34](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/plugins/PluginsSection.tsx#L34)

### `PreferenceSectionOverrides`

Interface.

What a preference section's descriptor may change from the layout's.

```ts
interface PreferenceSectionOverrides
```

**Properties**

- `description?` (`string`): Under the title. Default: the layout page's description.
- `group?` (`string`): The nav group. Default: the layout page's parent.
- `title?` (`string`): The nav and header title. Default: the layout page's label.

Source: [ui/src/settings/sections/descriptors.tsx:28](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/descriptors.tsx#L28)

### `ProvidersSectionProps`

Interface.

Props for [`ProvidersSection`](https://zidane.si/docs/reference/ui-settings.md#ProvidersSection).

```ts
interface ProvidersSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `confirm?` (`AccountsConfirm`): Asks before Clear and Remove. Default: no question.
- `cwd?` (`string | null`): The folder whose extension providers count. `null` or absent: built-ins only.
- `intro?` (`ReactNode`): Above the list (an app's tutorial card).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/providers/ProvidersSection.tsx:50](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ProvidersSection.tsx#L50)

### `SelectRowOption`

Interface.

One option of a [`SelectRow`](https://zidane.si/docs/reference/ui-settings.md#SelectRow).

```ts
interface SelectRowOption<T>
```

**Type parameters**

- `T`

**Properties**

- `description?` (`string`): What it does, under its label in the menu.
- `disabled?` (`boolean`): Offered but not pickable now.
- `hint?` (`string`): The option's tooltip (why it is disabled).
- `icon?` (`string`): A glyph class (`i-ph-hand`), before its label in the menu and the chip.
- `label` (`string`): Its label, in the menu and the value chip.
- `value` (`T`): The value it sets.

Source: [ui/src/settings/rows.tsx:112](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L112)

### `SelectRowProps`

Interface.

Props for [`SelectRow`](https://zidane.si/docs/reference/ui-settings.md#SelectRow).

```ts
interface SelectRowProps<T>
```

**Type parameters**

- `T`

**Properties**

- `className?` (`string`): Classes merged on the row's button.
- `description?` (`ReactNode`): The row's description.
- `disabled?` (`boolean`, default `false`): Read-only here: inert, its value shown.
- `label` (`string`): The row's label, also the menu's name.
- `onChange` (`(value: T) => void`): An option was picked (not called for the current one).
- `options` (`readonly SelectRowOption<T>[]`): The options, in menu order.
- `style?` (`CSSProperties`): Inline styles on the row's button.
- `unavailable?` (`string`): Why the host can't apply the setting: the row is inert, shows it as unavailable, and this note replaces its description.
- `value` (`T`): The value now: its option is checked and named on the chip.

Source: [ui/src/settings/rows.tsx:128](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L128)

### `ServerProvidersSectionProps`

Interface.

Props for [`ServerProvidersSection`](https://zidane.si/docs/reference/ui-settings.md#ServerProvidersSection).

```ts
interface ServerProvidersSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `hostName` (`string`): The server's name, for the lines.
- `intro?` (`ReactNode`): Above the list (an app's tutorial card), as on This computer's Accounts.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/providers/ServerProvidersSection.tsx:28](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ServerProvidersSection.tsx#L28)

### `ServerSignInProps`

Interface.

Props for [`ServerSignIn`](https://zidane.si/docs/reference/ui-settings.md#ServerSignIn).

```ts
interface ServerSignInProps
```

**Properties**

- `begin` (`() => SignInFlow`): Starts the sign-in; called once, on mount.
- `className?` (`string`): Extra classes on the root.
- `hostName` (`string`): The server's name, for the lines.
- `label` (`string`): What is being signed in to, for the lines.
- `onClose` (`() => void`): Closes the strip (Cancel or Close).
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/providers/ServerSignIn.tsx:23](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ServerSignIn.tsx#L23)

### `SettingFocusProps`

Interface.

Props for [`SettingFocus`](https://zidane.si/docs/reference/ui-settings.md#SettingFocus).

```ts
interface SettingFocusProps
```

**Properties**

- `children` (`ReactNode`): The row.
- `id` (`string`): The row's id: what a search entry's `key` or a deep link's focus names.

Source: [ui/src/settings/section.tsx:43](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L43)

### `SettingsFrameProps`

Interface.

What the frame around the settings draws.

```ts
interface SettingsFrameProps
```

**Properties**

- `children` (`ReactNode`): The open section's body (or the search results).
- `description?` (`string`): The open section's description.
- `footer?` (`ReactNode`): What the app pinned under the nav.
- `headerActions` (`ReactNode`): The open section's header actions (and the app's).
- `lead?` (`ReactNode`): The open section's mark, before its title and description (`SettingsSection.lead`).
- `nav` (`ReactNode`): The section nav.
- `onClose?` (`() => void`): Leaves the settings, when the app can.
- `search` (`ReactNode`): The search field.
- `title` (`string`): The open section's title (empty with no sections).

Source: [ui/src/settings/SettingsShell.tsx:37](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsShell.tsx#L37)

### `SettingsHeadingTextProps`

Interface.

Props for [`SettingsHeadingText`](https://zidane.si/docs/reference/ui-settings.md#SettingsHeadingText).

```ts
interface SettingsHeadingTextProps
```

**Properties**

- `className?` (`string`): Extra classes on the root.
- `style?` (`CSSProperties`): Inline styles on the root.
- `text` (`string`): The text.

Source: [ui/src/settings/SettingsHeadingText.tsx:14](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsHeadingText.tsx#L14)

### `SettingsHostSwitcherProps`

Interface.

Props for [`SettingsHostSwitcher`](https://zidane.si/docs/reference/ui-settings.md#SettingsHostSwitcher).

```ts
interface SettingsHostSwitcherProps
```

**Properties**

- `className?` (`string`): Extra classes on the trigger.
- `hosts` (`readonly HostView[]`): This computer first, then the servers.
- `onChange` (`(hostId: string) => void`): A host was picked.
- `style?` (`CSSProperties`): Inline styles on the trigger.
- `value` (`string`): The shown host's id.

Source: [ui/src/settings/SettingsHostSwitcher.tsx:18](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsHostSwitcher.tsx#L18)

### `SettingsNavProps`

Interface.

Props for [`SettingsNav`](https://zidane.si/docs/reference/ui-settings.md#SettingsNav).

```ts
interface SettingsNavProps
```

**Properties**

- `active` (`string`): The open section's id.
- `className?` (`string`): Classes merged on the tablist.
- `counts?` (`Readonly<Partial<Record<string, number>>>`): How many settings (or listed things) each section holds; absent or 0: no count.
- `onSelect` (`(id: string) => void`): Opens a section (a click, or ↑/↓ on the focused tab).
- `sections` (`readonly Pick<SettingsSection, 'icon' | 'group' | 'id' | 'title' | 'mark' | 'monogram'>[]`): The sections the shell offers.
- `style?` (`CSSProperties`): Inline styles on the tablist.

Source: [ui/src/settings/SettingsNav.tsx:80](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsNav.tsx#L80)

### `SettingsPanelActionsProps`

Interface.

Props for [`SettingsPanelActions`](https://zidane.si/docs/reference/ui-settings.md#SettingsPanelActions).

```ts
interface SettingsPanelActionsProps
```

**Properties**

- `actions?` (`ReactNode`): The section's header buttons (Refresh, Add…): the accent one rightmost.

Source: [ui/src/settings/section.tsx:149](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L149)

### `SettingsPanelBodyProps`

Interface.

Props for [`SettingsPanelBody`](https://zidane.si/docs/reference/ui-settings.md#SettingsPanelBody).

```ts
interface SettingsPanelBodyProps
```

**Properties**

- `children` (`ReactNode`): The section's rows.
- `className?` (`string`): Classes merged on the reading column.
- `fill?` (`boolean`, default `false`): The page itself never scrolls: the column takes the full height as a
  flex column, so a body can pin its controls on top and give one region
  (a log list) its own scroll.
- `scrollLabel?` (`string`): Names the scrolling region and puts it in the tab order, for a body
  with nothing focusable in it (read-only rows), so the keyboard can
  still scroll it. Ignored with `fill`.
- `style?` (`CSSProperties`): Inline styles on the reading column.

Source: [ui/src/settings/section.tsx:96](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L96)

### `SettingsPanelProps`

Interface.

Props for [`SettingsPanel`](https://zidane.si/docs/reference/ui-settings.md#SettingsPanel).

```ts
interface SettingsPanelProps
```

**Properties**

- `children` (`ReactNode`): The body: one [`SettingsPanelBody`](https://zidane.si/docs/reference/ui-settings.md#SettingsPanelBody), plus any fixed rows above it.
- `className?` (`string`): Classes merged on the column.
- `style?` (`CSSProperties`): Inline styles on the column.

Source: [ui/src/settings/section.tsx:73](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L73)

### `SettingsProviderProps`

Interface.

Props for [`SettingsProvider`](https://zidane.si/docs/reference/ui-settings.md#SettingsProvider).

```ts
interface SettingsProviderProps
```

**Properties**

- `children` (`ReactNode`): The components that read from `host`.
- `host` (`SettingsHost`): The host the settings components read from and write through.
- `hostName?` (`string`): The server whose settings `host` holds, by name: the descriptions and tutorials that would name this
  computer name it instead. Absent: this computer's settings.
- `labels?` (`Partial<{ settingsAdminOnly: string; settingsBlockedTitle: (requirement: string) => string; settingsClose: string; settingsCopyCommand: string; settingsDurabilityUnavailable: string; settingsError: (error: SettingsError) => string; settingsHostSwitcher: string; settingsHostSwitcherTrigger: (host: string) => string; settingsKilled: (env: string) => string; settingsKilledTitle: (env: string) => string; settingsLoading: string; settingsNavLabel: string; settingsNoResults: (query: string) => string; settingsRestrictedEmpty: string; settingsRetry: string; settingsSearchLabel: string; settingsSearchPlaceholder: string; settingsServerStart: string; settingsTitle: string; settingsUnavailable: string }>`): Overrides for the settings components' strings. Keys you leave out keep the default English label.

Source: [ui/src/settings/SettingsProvider.tsx:33](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L33)

### `SettingsRowsPageProps`

Interface.

Props for [`SettingsRowsPage`](https://zidane.si/docs/reference/ui-settings.md#SettingsRowsPage).

```ts
interface SettingsRowsPageProps
```

**Properties**

- `actions?` (`readonly SettingsAction[]`): The app's actions (`{ action }` rows): a row opening a flow of the app's own.
- `className?` (`string`): Classes merged on the page's column.
- `customRows?` (`Readonly<Partial<Record<SettingsCustomRowId, () => ReactNode>>>`): The app's custom rows, called on every render; `null` hides the row.
- `durabilityUnavailable?` (`boolean`, default `false`): The host's session store has no durability (memory, file map): Crash recovery shows as unavailable and is inert.
- `killSwitches?` (`readonly string[]`): Kill-switch env vars engaged where the agent runs: a toggle gated by one is inert.
- `notes?` (`Readonly<Partial<Record<SettingsSectionNoteId, () => ReactNode>>>`): A note under a section (`note`), by its id.
- `page` (`SettingsSectionsPage`): The layout page to draw.
- `renderRow?` (`(key: keyof Settings, values: Settings) => ReactNode`): The app's own row for a catalog key; `undefined` keeps the kit's toggle or choice row.
- `rowExtra?` (`(key: string) => ReactNode`): Drawn after each catalog row, inside its focus target (where the value came from…).
- `server?` (`boolean`, default `false`): Editing a server's settings: the page's `localOnly` parts (this computer's) are left out.
- `spaces?` (`() => ReactNode`): The Spaces section (`{ panel: 'spaces' }`).
- `spacesOnServer?` (`boolean`, default `false`): The app's spaces live in the server's settings (the web app's do): Spaces stays while `server`.
- `style?` (`CSSProperties`): Inline styles on the page's column.

Source: [ui/src/settings/SettingsRowsPage.tsx:42](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsRowsPage.tsx#L42)

### `SettingsSectionState`

Interface.

What [`useSettingsSection`](https://zidane.si/docs/reference/ui-settings.md#useSettingsSection) returns.

```ts
interface SettingsSectionState
```

**Properties**

- `id` (`string`): The section's id (`''` outside a shell).
- `select` (`(id: string, focus?: string | null) => void`): Opens a section, optionally landing on (and highlighting) the row with `data-setting-focus={focus}`.
- `visible` (`boolean`): This section is the open one (a kept-mounted body stays mounted while hidden).

Source: [ui/src/settings/section.tsx:12](https://github.com/Tahul/zidane/blob/main/ui/src/settings/section.tsx#L12)

### `SettingsShellProps`

Interface.

Props for [`SettingsShell`](https://zidane.si/docs/reference/ui-settings.md#SettingsShell).

```ts
interface SettingsShellProps
```

**Properties**

- `className?` (`string`): On the default frame's root.
- `counts?` (`Readonly<Partial<Record<string, number>>>`): How many settings (or listed things) each section holds, drawn in the nav.
- `extraSearch?` (`readonly SettingsSearchHit[]`): More search entries (things inside a section the section's own `search` can't list up front).
- `footer?` (`ReactNode`): Pinned under the nav (the app version, a setup link).
- `headerActions?` (`(state: { active: string; searching: boolean }) => ReactNode`): The app's own header controls, beside the open section's.
- `initialFocus?` (`string`): The row to land on and highlight (its `data-setting-focus` id).
- `initialSection?` (`string`): The section to open on. Default: the first. An id the shell doesn't hold opens the first.
- `onClose?` (`() => void`): Leaves the settings: the default frame's back button and Esc.
- `onSelect?` (`(id: string) => void`): Tells the app which section is open (after a nav pick, a search pick or `select`).
- `renderFrame?` (`(frame: SettingsFrameProps) => ReactNode`): Draws the frame. Default: [`SettingsFrame`](https://zidane.si/docs/reference/ui-settings.md#SettingsFrame).
- `sections` (`readonly SettingsSection[]`): The sections, in nav order (a grouped one after its entry).
- `style?` (`CSSProperties`): On the default frame's root.

Source: [ui/src/settings/SettingsShell.tsx:59](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsShell.tsx#L59)

### `SettingsTutorialProps`

Interface.

Props for [`SettingsTutorial`](https://zidane.si/docs/reference/ui-settings.md#SettingsTutorial).

```ts
interface SettingsTutorialProps
```

**Properties**

- `actions?` (`ReactNode`): Buttons that need the page's state. They come after the page's own action.
- `className?` (`string`): Extra classes on the block.
- `topic` (`TutorialTopic`): What the page is about.

Source: [ui/src/settings/SettingsTutorial.tsx:16](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsTutorial.tsx#L16)

### `SettingsValues`

Interface.

The settings as `useSettings` hands them, with their writers.

```ts
interface SettingsValues
```

**Properties**

- `setSetting` (`<K extends keyof Settings>(key: K, value: Settings[K]) => void`): Writes one setting through the host (nothing without `update`; a refused write is dropped).
- `settings` (`Settings`): Every setting: the host's document, or the defaults until it is read.
- `toggle` (`(key: BooleanSettingKey) => void`): Flips a boolean setting.

Source: [ui/src/settings/SettingsProvider.tsx:71](https://github.com/Tahul/zidane/blob/main/ui/src/settings/SettingsProvider.tsx#L71)

### `SkillsSectionProps`

Interface.

Props for [`SkillsSection`](https://zidane.si/docs/reference/ui-settings.md#SkillsSection).

```ts
interface SkillsSectionProps
```

**Properties**

- `actions?` (`ReactNode`): More header actions after Refresh (a desktop app's "Show the skills folder").
- `className?` (`string`): Extra classes on the root.
- `cwd` (`string | null`): The folder whose project skills show with the user's (`null`: none picked, nothing listed).
- `onEdit?` (`(skill: SkillConfig) => Promise<void>`): Opens an authoring session on a skill's folder (the app closes Settings). Absent: no Edit.
- `style?` (`CSSProperties`): Inline styles on the root.

Source: [ui/src/settings/sections/skills/SkillsSection.tsx:37](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/skills/SkillsSection.tsx#L37)

### `SpacesDefaultsSectionProps`

Interface.

Props for [`SpacesDefaultsSection`](https://zidane.si/docs/reference/ui-settings.md#SpacesDefaultsSection).

```ts
interface SpacesDefaultsSectionProps
```

**Properties**

- `className?` (`string`): Extra classes on each space's rows.
- `cwd` (`string | null`): The folder whose agents and models the rows list (`null`: none).
- `style?` (`CSSProperties`): Inline styles on each space's rows.

Source: [ui/src/settings/sections/models/SpacesDefaultsSection.tsx:15](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/SpacesDefaultsSection.tsx#L15)

### `TextModelRowProps`

Interface.

Props for [`TextModelRow`](https://zidane.si/docs/reference/ui-settings.md#TextModelRow).

```ts
interface TextModelRowProps extends ModelRowBase
```

**Properties**

- `className?` (`string`, from `ModelRowBase`): Extra classes on the root.
- `cwd` (`string | null`, from `ModelRowBase`): The folder whose models are listed (`null`: none).
- `hostId?` (`string | null`, from `ModelRowBase`): A server's settings: its models (`null`: this computer).
- `main` (`ModelPickRef`): The default model new sessions run on; the automatic chip names its provider's pick.
- `onChange` (`(value: string) => void`): Sets it.
- `style?` (`CSSProperties`, from `ModelRowBase`): Inline styles on the root.
- `value` (`string`): `Settings.textModel`: `"providerKey[@account]/modelId"`, or `''` for automatic.

Source: [ui/src/settings/sections/models/ModelRows.tsx:71](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/ModelRows.tsx#L71)

### `ToggleRowProps`

Interface.

Props for [`ToggleRow`](https://zidane.si/docs/reference/ui-settings.md#ToggleRow).

```ts
interface ToggleRowProps
```

**Properties**

- `blockedBy?` (`string`): Label of the `row.requires` setting while it is off: the row renders inert, keeps its description, and its title names the setting.
- `className?` (`string`): Classes merged on the row's button.
- `disabled?` (`boolean`): Read-only here (the host can't write): inert, its value shown.
- `heldOn?` (`string`): Why another setting holds the row on whatever its value says (`toggleHeldOn`): the row renders on and inert with this note.
- `killedBy?` (`string`): The row's kill-switch env var while it is engaged: the feature is off whatever the setting says, so the row is inert and names it.
- `onToggle` (`() => void`): Flips the setting (not called while the row is inert).
- `row` (`SettingsToggle`): The catalog toggle the row draws (label, description, gates).
- `style?` (`CSSProperties`): Inline styles on the row's button.
- `value` (`boolean`): The setting's value.

Source: [ui/src/settings/rows.tsx:17](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L17)

### `ValueChipProps`

Interface.

Props for [`ValueChip`](https://zidane.si/docs/reference/ui-settings.md#ValueChip).

```ts
interface ValueChipProps
```

**Properties**

- `children` (`ReactNode`): The value's label.
- `className?` (`string`): Classes merged on the chip.
- `muted?` (`boolean`, default `false`): It names a default left unset ("last used", "automatic (Haiku)") or an unavailable setting.
- `style?` (`CSSProperties`): Inline styles on the chip.
- `title?` (`string`): The chip's tooltip.

Source: [ui/src/settings/rows.tsx:221](https://github.com/Tahul/zidane/blob/main/ui/src/settings/rows.tsx#L221)

## Types

### `AccountsConfirm`

Type.

Asks the user to confirm; resolves with the answer.

```ts
type AccountsConfirm = (options: ConfirmOptions) => Promise<boolean>
```

Source: [ui/src/settings/sections/providers/ProvidersSection.tsx:44](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/ProvidersSection.tsx#L44)

### `AccountsSectionLabels`

Type.

The shape of the Accounts sections' label dictionary.

```ts
type AccountsSectionLabels = typeof DEFAULT_ACCOUNTS_SECTION_LABELS
```

Source: [ui/src/settings/sections/providers/labels.ts:160](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/providers/labels.ts#L160)

### `AppearanceSectionLabels`

Type.

The shape of the Appearance section's label dictionary.

```ts
type AppearanceSectionLabels = typeof DEFAULT_APPEARANCE_SECTION_LABELS
```

Source: [ui/src/settings/sections/appearance/labels.ts:77](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/appearance/labels.ts#L77)

### `CatalogSharedLabels`

Type.

The shape of the shared catalog label dictionary.

```ts
type CatalogSharedLabels = typeof DEFAULT_CATALOG_SHARED_LABELS
```

Source: [ui/src/settings/sections/shared/labels.ts:31](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/shared/labels.ts#L31)

### `ClaudeImportLabels`

Type.

The shape of the Claude Code import dialog's label dictionary.

```ts
type ClaudeImportLabels = typeof DEFAULT_CLAUDE_IMPORT_LABELS
```

Source: [ui/src/settings/sections/claude-import/labels.ts:42](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/claude-import/labels.ts#L42)

### `CreateExtensionLabels`

Type.

The shape of the create-extension dialog's label dictionary.

```ts
type CreateExtensionLabels = typeof DEFAULT_CREATE_EXTENSION_LABELS
```

Source: [ui/src/settings/sections/extensions/create-labels.ts:31](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/create-labels.ts#L31)

### `EditorOpenIn`

Type.

Where a clicked file, folder or diff opens.

```ts
type EditorOpenIn = 'editor' | 'panel'
```

Source: [ui/src/settings/sections/editor/EditorSection.tsx:42](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/EditorSection.tsx#L42)

### `EditorSectionLabels`

Type.

The shape of the Files & editor section's label dictionary.

```ts
type EditorSectionLabels = typeof DEFAULT_EDITOR_SECTION_LABELS
```

Source: [ui/src/settings/sections/editor/labels.ts:84](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/editor/labels.ts#L84)

### `EnabledListSectionLabels`

Type.

The shape of the enabled list section's label dictionary.

```ts
type EnabledListSectionLabels = typeof DEFAULT_ENABLED_LIST_SECTION_LABELS
```

Source: [ui/src/settings/sections/enabled-list/labels.ts:37](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/enabled-list/labels.ts#L37)

### `EnvironmentsSectionLabels`

Type.

The shape of the Environments section's label dictionary.

```ts
type EnvironmentsSectionLabels = typeof DEFAULT_ENVIRONMENTS_SECTION_LABELS
```

Source: [ui/src/settings/sections/environments/labels.ts:31](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/environments/labels.ts#L31)

### `ExtensionConfigValue`

Type.

A setting's value as a row shows and writes it.

```ts
type ExtensionConfigValue = boolean | number | string
```

Source: [ui/src/settings/sections/extensions/ExtensionConfigRows.tsx:36](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/ExtensionConfigRows.tsx#L36)

### `ExtensionOptionsLabels`

Type.

The shape of the extension options' label dictionary.

```ts
type ExtensionOptionsLabels = typeof DEFAULT_EXTENSION_OPTIONS_LABELS
```

Source: [ui/src/settings/sections/extensions/options-labels.ts:33](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/options-labels.ts#L33)

### `ExtensionsSectionLabels`

Type.

The shape of the Extensions section's label dictionary.

```ts
type ExtensionsSectionLabels = typeof DEFAULT_EXTENSIONS_SECTION_LABELS
```

Source: [ui/src/settings/sections/extensions/labels.ts:64](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/extensions/labels.ts#L64)

### `HostCatalogLabels`

Type.

The shape of the host catalog section's label dictionary.

```ts
type HostCatalogLabels = typeof DEFAULT_HOST_CATALOG_LABELS
```

Source: [ui/src/settings/sections/host-catalog/labels.ts:44](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/host-catalog/labels.ts#L44)

### `HostCatalogSectionKind`

Type.

The catalogs [`HostCatalogSection`](https://zidane.si/docs/reference/ui-settings.md#HostCatalogSection) draws.

```ts
type HostCatalogSectionKind = Exclude<SettingsCatalogKind, 'mcps'>
```

Source: [ui/src/settings/sections/host-catalog/HostCatalogSection.tsx:58](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/host-catalog/HostCatalogSection.tsx#L58)

### `InstructionsSectionLabels`

Type.

The shape of the Instructions section's label dictionary.

```ts
type InstructionsSectionLabels = typeof DEFAULT_INSTRUCTIONS_SECTION_LABELS
```

Source: [ui/src/settings/sections/instructions/labels.ts:33](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/instructions/labels.ts#L33)

### `KeybindingsSectionLabelKey`

Type.

A key of [`KeybindingsSectionLabels`](https://zidane.si/docs/reference/ui-settings.md#KeybindingsSectionLabels) that names a string (a row or a group).

```ts
type KeybindingsSectionLabelKey = keyof KeybindingsSectionLabels
```

Source: [ui/src/settings/sections/keybindings/labels.ts:74](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/labels.ts#L74)

### `KeybindingsSectionLabels`

Type.

The shape of the Keybindings section's label dictionary.

```ts
type KeybindingsSectionLabels = typeof DEFAULT_KEYBINDINGS_SECTION_LABELS
```

Source: [ui/src/settings/sections/keybindings/labels.ts:71](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/keybindings/labels.ts#L71)

### `LogsSectionLabels`

Type.

The shape of the Logs section's label dictionary.

```ts
type LogsSectionLabels = typeof DEFAULT_LOGS_SECTION_LABELS
```

Source: [ui/src/settings/sections/logs/labels.ts:20](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/logs/labels.ts#L20)

### `McpSectionLabels`

Type.

The shape of the MCP servers section's label dictionary.

```ts
type McpSectionLabels = typeof DEFAULT_MCP_SECTION_LABELS
```

Source: [ui/src/settings/sections/mcp/labels.ts:193](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/mcp/labels.ts#L193)

### `ModelRowsLabels`

Type.

The shape of the model rows' label dictionary.

```ts
type ModelRowsLabels = typeof DEFAULT_MODEL_ROWS_LABELS
```

Source: [ui/src/settings/sections/models/labels.ts:119](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/labels.ts#L119)

### `ModelTestState`

Type.

A Test's state: running, or how it went.

```ts
type ModelTestState = SettingsModelTest | 'testing'
```

Source: [ui/src/settings/sections/models/model-test.tsx:23](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/models/model-test.tsx#L23)

### `PerformanceSectionLabels`

Type.

The shape of the Performance section's label dictionary.

```ts
type PerformanceSectionLabels = typeof DEFAULT_PERFORMANCE_SECTION_LABELS
```

Source: [ui/src/settings/sections/performance/labels.ts:113](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/performance/labels.ts#L113)

### `PluginsSectionLabels`

Type.

The shape of the Plugins section's label dictionary.

```ts
type PluginsSectionLabels = typeof DEFAULT_PLUGINS_SECTION_LABELS
```

Source: [ui/src/settings/sections/plugins/labels.ts:23](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/plugins/labels.ts#L23)

### `SkillsSectionLabels`

Type.

The shape of the Skills section's label dictionary.

```ts
type SkillsSectionLabels = typeof DEFAULT_SKILLS_SECTION_LABELS
```

Source: [ui/src/settings/sections/skills/labels.ts:54](https://github.com/Tahul/zidane/blob/main/ui/src/settings/sections/skills/labels.ts#L54)

## Re-exports

These names are documented on the entry point that owns them.

- [zidane-ui/settings/headless](https://zidane.si/docs/reference/ui-settings-headless.md): [`SettingsSearchEntry`](https://zidane.si/docs/reference/ui-settings-headless.md#SettingsSearchEntry), [`SettingsSection`](https://zidane.si/docs/reference/ui-settings-headless.md#SettingsSection)
