DocsMore
Appearance and themes
On web and desktop, open Settings → Appearance to choose a theme and follow the system appearance or stay in light or dark mode. To use different themes for light and dark mode, select the corresponding preview within each theme. Appearance preferences are saved separately on each device or browser.
On web and desktop, use Change theme in the command palette to select a theme without leaving chat. Press Cmd+Option+A on macOS or Ctrl+Alt+A on Windows/Linux to open the theme picker directly. Use Change appearance in the command palette to choose System, Light, or Dark independently of the theme. Cmd+Option+Shift+A on macOS or Ctrl+Alt+Shift+A on Windows/Linux cycles through those modes. Customize these shortcuts under Settings → Keybindings.
Composer context
Git-backed projects show branch and worktree controls below the composer while you create a thread. The controls retreat as the composer docks after you send the first message.
Turn on Composer context to keep those controls visible after the thread starts. This preference applies to the web and desktop clients.
Motion
The main sidebar, right panel, and terminal drawer open and close immediately by default. Move the Panel animations slider above 0 ms to add motion, up to 400 ms, unless reduced motion is enabled in your operating system. Moving between threads always snaps to the selected thread's panel state without replaying its transitions.
Custom themes
On web and desktop, choose Create theme to adjust a palette, or import a Moonfold or VS Code theme. The theme editor's color picker lets you select an area of the app to find the color to change. Export your theme as JSON to share it.
Environment themes
Environment themes and defaults come from the server serving your web app or the desktop app's main local environment. Additional connections do not use them.
Select a published theme in Settings → Appearance to follow its palette as the server updates it. Duplicate makes an independent copy you can edit. A saved custom theme with the same ID takes precedence. If the server stops publishing the selected theme, Moonfold falls back to its standard theme.
Run this on the server to set a default and switch connected clients to it:
moonfold theme set nightfall
Clients that are offline apply it when they reconnect. Each client applies the setting
once; choosing another theme afterward sticks until the next
moonfold theme set. Run the command again to reapply it, even if the name is
unchanged.
moonfold theme clear removes the default without changing anyone's
current theme. moonfold theme show lists the default and published themes.
Publish a theme
Save a theme exported from Moonfold into ~/.moonfold/userdata/themes/ on the
server, or the themes directory under your custom state directory. The
filename supplies the theme ID: nightfall.json can be selected with
moonfold theme set nightfall. Keep the filename stable when updating its
colors. Do not use system, light, dark, or a
built-in theme's ID.
For an integration that generates a palette, this shorter format also works:
{
"name": "Nightfall",
"appearance": "dark",
"canvas": "#1a1b26",
"accent": "#7aa2f7",
"colors": {
"terminalSelection": "#292e42",
"error": "#f7768e"
}
}
Set appearance to light or dark and supply hex
colors for canvas and accent. Moonfold generates the rest. The
optional colors overrides use the names in the theme editor's advanced
view.
Write updates to a temporary file and rename it into place so clients never read a partial theme. Invalid files are not published.