Theme Hierarchy
Themes are applied in the following order of precedence:- Workspace override: Per-workspace theme in Settings → Appearance → Workspace Themes
- App default: Selected in Settings → Appearance → Default Theme
- Theme override file:
~/.craft-agent/theme.json- Override specific colors - Preset themes:
~/.craft-agent/themes/{name}.json- Complete theme packages
Workspace Themes
Each workspace can have its own color theme that overrides the app default. This lets you visually distinguish between different projects or contexts.Configuring Workspace Themes
- Open Settings → Appearance
- In the Default Theme section, set your app-wide default
- In the Workspace Themes section, select a theme for each workspace:
- Use Default - Inherits the app default theme
- Custom theme - Select a specific preset
Theme changes apply immediately across all windows. If you have multiple windows open with the same workspace, they all update in real-time.
Storage Location
Workspace theme preferences are stored in the workspace config:colorTheme is omitted or undefined, the workspace inherits the app default.
This is the workspace-specific default theme. It overrides the app default for new and existing sessions in that workspace.
6-Color System
| Color | Purpose | Usage |
|---|---|---|
background | Surface/page background | Light/dark surface color |
foreground | Text and icons | Primary text color |
accent | Brand color, Execute mode | Highlights, active states, purple UI elements |
info | Warnings, Ask mode | Amber indicators, attention states |
success | Connected status | Green checkmarks, success states |
destructive | Errors, delete actions | Red alerts, failed states |
Theme Override File
Create~/.craft-agent/theme.json to override specific colors:
Dark Mode Support
Thedark object provides optional overrides for dark mode. When the user’s system is in dark mode:
- Base colors (top-level) are used as defaults
- Any colors defined in
darkoverride the base colors
Preset Themes
Preset themes are complete theme packages stored at~/.craft-agent/themes/. Each preset is a JSON file with theme colors and metadata.
Preset Theme Schema
Preset Metadata Fields
| Field | Description |
|---|---|
name | Display name for the theme |
description | Short description |
author | Theme creator |
license | License type (MIT, etc.) |
source | URL to original theme |
supportedModes | Array of "light", "dark", or both |
shikiTheme | Syntax highlighting theme (light/dark variants) |
Installing Preset Themes
- Download or create a theme JSON file
- Save it to
~/.craft-agent/themes/{name}.json - Select the theme in Settings → Appearance
Scenic Mode
Scenic mode displays a full-window background image with glass-style panels. This creates a visually immersive experience.Enabling Scenic Mode
Scenic Mode Properties
| Property | Description |
|---|---|
mode | Set to "scenic" (default is "solid") |
backgroundImage | Image filename (relative to theme file) or URL |
Surface Colors for Glass Panels
Scenic mode benefits from semi-transparent surface colors:| Color | Purpose |
|---|---|
paper | AI messages, cards, elevated content |
navigator | Left sidebar background |
input | Input field background |
popover | Dropdowns, modals, context menus |
popoverSolid | Guaranteed 100% opaque popover background |
Scenic themes automatically force dark mode for better contrast with background images.
Color Formats
Any valid CSS color format is supported:| Format | Example |
|---|---|
| Hex | #8b5cf6, #8b5cf6cc (with alpha) |
| RGB | rgb(139, 92, 246), rgba(139, 92, 246, 0.8) |
| HSL | hsl(262, 83%, 58%) |
| OKLCH | oklch(0.58 0.22 293) |
| Named | purple, rebeccapurple |
Recommendation: Use OKLCH for perceptually uniform colors that look consistent across light and dark modes.
OKLCH Reference
OKLCH format:oklch(lightness chroma hue)
| Component | Range | Description |
|---|---|---|
| Lightness | 0-1 | 0 = black, 1 = white |
| Chroma | 0-0.4 | 0 = gray, higher = more saturated |
| Hue | 0-360 | Color wheel angle |
- Red: ~25
- Orange: ~70
- Yellow: ~100
- Green: ~145
- Cyan: ~195
- Blue: ~250
- Purple: ~293
- Pink: ~330
Examples
Minimal: Just change accent color
Custom brand colors
High contrast theme
Live Updates
Theme changes are applied immediately - no restart needed. Edit theme.json and the UI updates automatically.Troubleshooting
Theme not applying
Theme not applying
- Verify JSON syntax is valid
- Check file is in correct location (
~/.craft-agent/theme.jsonfor overrides,~/.craft-agent/themes/for presets) - Ensure color values are valid CSS colors
Colors look wrong in dark mode
Colors look wrong in dark mode
- Add explicit
darkoverrides - OKLCH colors may need higher lightness values for dark mode
- Check if preset has
supportedModesthat excludes your current mode
Background image not showing
Background image not showing
- Ensure
modeis set to"scenic" - Check image path is relative to theme file or a valid URL
- Verify image file exists and is readable
Tips
Start with just accent
Start with just accent
Changing only the accent color is the quickest way to personalize the app.
Use OKLCH for predictability
Use OKLCH for predictability
OKLCH colors behave more consistently across light/dark modes than hex or RGB.
Test in both modes
Test in both modes
Always check your theme in both light and dark modes to ensure readability.
Keep contrast accessible
Keep contrast accessible
Ensure sufficient contrast between foreground and background colors.