The Settings modal¶
Audience. Daily user.
When to read this. You want to change something — your theme, your shell, the repos on the Code pane, an agent launcher — and you'd rather click than hand-edit JSON. Or you set a value and it didn't take, and you need to understand which file won.
Open it from File → Settings (or Ctrl+,). It's a full-viewport modal, not a popover. Everything it edits is plain JSON on disk — the modal is a convenience over the same two files documented in Config files; nothing here is exclusive to the UI.
Two tabs, two files¶
The modal has exactly two tabs, and the tab you're on decides which file your edits land in:
| Tab | Writes to | Holds |
|---|---|---|
| Global | settings.json in the OS user-data directory (per-machine) |
Your machine-wide defaults + the active conception path and recents list. |
| This conception | <conception>/.condash/settings.json (per-tree, per-host) |
Overrides for this conception only. |
Both files share the same schema. The active conception path and the recents list are Global-only — they describe your machine, not any one tree.
Which sections live where¶
The left rail lists the sections of the current tab:
- Global — Recent conceptions · Appearance · Terminal · Agents
- This conception — Workspace · Repositories · Open with · Appearance · Terminal · Agents
Three sections — Appearance, Terminal, Agents — appear on both tabs. Those are the inheritable ones: set a default on Global, override it per tree on This conception. The conception-only sections (Workspace, Repositories, Open with) appear on This conception because overriding them per machine makes no sense.
| Section | Tab(s) | Config key(s) | Guide |
|---|---|---|---|
| Recent conceptions | Global | (managed outside the file) | Configure the conception path |
| Workspace | This conception | workspace_path, worktrees_path |
Repositories and open-with buttons |
| Repositories | This conception | repositories |
Repositories and open-with buttons |
| Open with | This conception | open_with |
Repositories and open-with buttons |
| Appearance | Both | theme, cardMinWidth |
— |
| Terminal | Both | terminal |
Embedded terminal |
| Agents | Both | agents |
Agent CLIs and model providers |
App identity (#handle, retired_apps, aliases) is edited inline in the Repositories section — see Applications and handles.
How inheritance works¶
For an inheritable key, the rule is top-level replace: if This conception sets the key, its value replaces the Global value wholesale — arrays replace arrays, objects replace objects, no deep merge. The one documented exception is terminal, which merges one level deep so a conception that customises terminal.logging keeps your per-machine terminal.screenshot_dir and shortcuts (see Config files → terminal).
On the This conception tab, each inheritable control carries a badge telling you whether the value is inherited from Global or overridden here. A per-conception diff view collapses the sections that fully inherit, so you see at a glance what this tree actually changes.
A small dirty pip next to a section label means you have unsaved edits in it. The modal remembers the last tab and section you were on, so reopening lands you where you left off.
What it does not edit¶
Layout state (leftView, branch filters, tree-expansion), the welcome-screen dismissal, and the recents list are written by the app as you use it — they live in the same files but have no Settings section. For the exhaustive key list, see Config files → All config keys.
→ Prefer editing the JSON directly? Every key, with defaults and the override model, is in Config files.