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.
One modal, two files¶
There are no tabs. The modal is a single scrolling surface; the left rail groups its sections under two scope headers, one per file. Every setting has exactly one home — the two files have disjoint schemas, so a setting is never in both, and there is nothing to override or inherit. The scope header decides which file the sections under it write to:
| Scope group | Writes to | Holds |
|---|---|---|
| Personal · this machine | settings.json in the OS user-data directory (per-machine) |
Everything personal to you and this machine — appearance, terminal, launchers, open-with, the dashboard — plus the active conception path and recents list. |
| This conception | <conception>/.condash/settings.json (per-tree, per-host) |
Only what describes this tree: its workspace / worktree paths, its repo list, and its task config. |
Each section also carries a scope chip naming the file it writes. The active conception path and the recents list are personal-only — they describe your machine, not any one tree.
Which sections live where¶
The left rail lists every section once, under its scope group:
- Personal · this machine — Recent conceptions · Appearance · Terminal · Launchers · Open with · Dashboard
- This conception — Workspace & paths · Repositories
| Section | Scope group | Config key(s) | Guide |
|---|---|---|---|
| Recent conceptions | Personal | (managed outside the file) | Configure the conception path |
| Appearance | Personal | theme, uiFonts, cardMinWidth |
— |
| Terminal | Personal | terminal |
Embedded terminal |
| Launchers | Personal | agents |
Agent CLIs and model providers |
| Open with | Personal | open_with |
Repositories and open-with buttons |
| Dashboard | Personal | dashboard |
Config files → Dashboard |
| Workspace & paths | This conception | workspace_path, worktrees_path, long_lived_branches |
Repositories and open-with buttons |
| Repositories | This conception | repositories |
Repositories and open-with buttons |
App identity (#handle, retired_apps, aliases) is edited inline in the Repositories section — see Applications and handles.
One home per setting — no inheritance¶
Because the two files have disjoint schemas, there is no override and no inheritance: a setting reads from its one owning file, full stop. There are no inheritance badges, no Reset to global buttons, and no per-conception diff view — all of that went away with the scope-partition revamp. A setting written to the wrong file by an older condash is relocated to its owning file automatically the next time you open the conception (see Config files → Scope-partition migration).
A small dirty pip next to a section label means that section has unsaved edits. Stage as many edits as you like across both files, then Save to flush them to disk (each file through its own atomic CAS write) or Discard to drop them. The rail highlights whichever section is currently in view as you scroll.
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 settings.json 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 which file owns it, is in Config files.