9. Theme and appearance
[!ref]
Full details in the User Manual, "Theme and appearance".
9.1 Three themes
| Mode |
Trigger |
Look |
system |
Follow OS |
Auto-switch |
light |
Light |
Pure grey + warm white |
dark |
Dark |
OKLCH blue + high contrast |
9.2 Key colours (user-visible)
| Role |
Light |
Dark |
| Brand |
Deep blue |
Light blue |
| Accent / link |
Blue |
Light blue |
| Success |
Green |
Green |
| Warning |
Amber |
Amber |
| Error |
Red |
Red |
9.3 Fonts
| Role |
Default |
| UI |
System UI font |
| Mono |
System mono (SF Mono / Consolas / JetBrains Mono …) |
| Size |
Small / Medium / Large (default Medium) |
The quick menu at the top-right of the header gathers four appearance sliders, same-source-synced with the Settings pages:
| Slider |
Tiers |
Corresponding setting |
| Theme |
system / light / dark |
Settings → General → Theme |
| Layout |
Sidebar / Top tabs |
Settings → General → Project workspace & session layout (workspace_display_mode) |
| Density |
Normal / Compact |
Settings → General → Message density (message_density) |
| Language |
简 / 繁 / EN (hover for the full language name) |
Settings → General → Language (language); takes effect immediately and is persisted |
9.5 Session strip layout
The session strips cover file changes, memory, todos, plan, goal, Pending (live guidance), Marked, Routines (session routines), result draft, attached materials, suggested tasks, self-check gate and other items, and switch automatically between two forms based on window width:
| Form |
Trigger |
Presentation |
row |
Narrow window, or always when density = Compact (full tier) |
A horizontal row above the input box, wrapping when too wide; expands into a popover that opens upward |
rail |
Wide window (by message-area width: from the content-width cap + 284 px, i.e. "Standard" ≥ 1484 px, "Wide" ≥ 1684 px; "Full width" never uses rail) |
A vertical status stack at the top-right of the message area, 236 px wide |
- In the rail form, a strip expands into a stacked drawer on the right: fixed-position, no scrim, doesn't squeeze the body text, 680 px wide; it is anchored to the rail as a whole, so the drawer stays put when you switch between strips, and it opens leftwards or rightwards depending on the space available on either side.
- On very wide windows a drawer slot is permanently reserved and "content + rail + drawer" is centred as a whole, so opening and closing the drawer never shifts the main content.
- Switching form only changes position; it never changes the content width.