nextv2.0.0
Configuration

theme.yaml

Every field in theme.yaml: the interface's colors, density, diff and board settings, and how a legacy palette key is read.

This page lists every field in theme.yaml, the file that holds the interface's appearance.

config/theme.yaml
surface: ink
accent: violet
colour_amount: full
mode: dark
density: compact
diff:
  layout: split
board:
  group_by: repo
editor: code

Settings › Appearance writes this file. A save changes only the keys it sends, and a key the file leaves out takes its default. When a file sets surface, a missing accent is none and a missing colour_amount is subtle. A file that sets colour_amount: mono must leave accent out or set it to none; Kraft refuses a file that pairs mono with another accent.

FieldTypeDefaultMeaning
surfacegraphite, slate, ink, sand or mossinkThe base colors of the page.
accentnone, blue, violet, green, amber or rosevioletThe accent color.
colour_amountmono, subtle or fullfullHow much color the surfaces, the accent and the status colors carry. mono leaves only gray.
modelight, dark or systemdarkThe color mode.
densitycompact or comfortablecompactHow tightly rows and text are spaced.
code_scheme.lightauto, none or solarized-lightautoThe syntax colors in review diffs in light mode.
code_scheme.darkauto, none, solarized-dark, monokai or draculaautoThe syntax colors in review diffs in dark mode.
diff.layoutunified or splitunifiedThe layout of the review page's diff.
diff.colourstheme, safe or plainthemeThe colors of the review page's diff: status colors (theme), colorblind-safe blue and orange (safe), or marks only (plain).
diff.show_whitespacebooleantrueShow whitespace changes. false hides lines that differ only in whitespace.
diff.word_highlightbooleantrueHighlight changed words: a stronger tint on the words that changed inside a line.
diff.wrap_linesbooleanfalseWrap long lines. false scrolls sideways.
diff.one_file_at_a_timebooleantrueShow one file at a time, with the file tree beside it.
board.group_bystatus, repo or chainstatusWhat the board groups items by. Before 2.0, template meant chain. It is still read as chain.
board.show_doneinteger, at least 15How many of the newest done items the board's Done group lists before show all N.
board.open_inpeek or fullpeekWhether opening an item shows the side panel (peek) or the item page (full).
editorcode, cursor, zed or obsidianunsetThe editor a document's Open in editor uses. Left out, it is KRAFT_EDITOR, else the system's default app.

palette is legacy

A palette key in an old file (nocturne, rose, forest, amber or slate) is converted once at startup into the three keys that draw the same look, and Kraft saves the original as theme.yaml.pre-2.0. A palette that reappears, from an old browser tab's save or a hand edit, is read as it was and converted the same way at the next start.

The conversion sets colour_amount to the file's own value, else full. With colour_amount: mono, accent is none instead of the one in the table:

palettesurfaceaccent
nocturne, roseinkviolet
forestmossgreen
ambersandamber
slateslateblue

A file that already sets its own surface only loses the palette. A file that does not parse or holds a value Kraft does not know is left alone. The upgrade, the backup names and how to restore one are in Upgrade from 1.4.

Copyright © 2026