aether-wisp 0.4.21

A terminal UI for AI coding agents via the Agent Client Protocol (ACP)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Wisp settings management and theme loading.

Wisp has two tiers of configuration:

1. **Wisp settings** — persisted in `~/.wisp/settings.json` (or `$WISP_HOME/settings.json`). Controls UI preferences via [`WispSettings`], including theme, content padding, and status-line segments.
2. **Agent settings** — model, reasoning effort, MCP servers, etc. These are advertised by the agent over ACP and edited through the in-app [`SettingsOverlay`]overlay::SettingsOverlay.

# Theme resolution

1. [`load_or_create_settings`] reads (or creates) the settings file.
2. [`load_theme`] checks [`ThemeSettings::file`]WispSettings for a `.tmTheme` filename.
3. [`resolve_theme_file_path`] validates the filename (must be a bare basename, no path traversal) and resolves it to `~/.wisp/themes/<name>`.
4. [`tui::Theme::load_from_path`]tui::Theme::load_from_path parses the file, falling back to the default theme on error.

# Status-line resolution

1. [`resolve_status_line_settings`] resolves optional [`StatusLineSettings`] from the Wisp settings file.
2. Launchers provide the default [`StatusLineSettings`] to use when no status-line settings are present; standalone Wisp includes the `agent` segment, while Aether-backed launches omit it unless configured explicitly.