Calm slate. Living color.
Living Code for Crush: complete native palette files with UI surfaces, status colors, review diffs and all sixteen ANSI colors.
|
Night Dark · full palette
|
Frost Dark · softer chroma
|
|
Paper Light · near-white slate
|
Signal Dark · teal accent
|
Select any preview to view the image at full size.
flavor=night # night, frost, paper, or signal
theme_dir="${CRUSH_GLOBAL_CONFIG:-${XDG_CONFIG_HOME:-$HOME/.config}/crush}/themes"
curl -fsSL --create-dirs -o "$theme_dir/living-code-$flavor.json" "https://raw.githubusercontent.com/living-code-theme/crush/main/themes/living-code-$flavor.json"Open Crush, press Ctrl+P, choose Themes, and select living-code-night or the flavor you downloaded. CRUSH_GLOBAL_CONFIG is a directory, not a config filename; its themes/ subdirectory is used when set. On other platforms, place themes/ inside Crush’s global config directory. Existing config is not replaced.
Expand a flavor for its full-size preview and activation instructions.
For a persistent config selection, merge the following into your existing Crush config:
{ "options": { "tui": { "active_theme": "living-code-night" } } }The files specify every public Palette field and do not rely on an unrelated base theme. Diff code and gutter backgrounds have independent tints, and raw terminal output gets all sixteen Living Code ANSI colors.
Requires a Crush release supporting standalone JSON theme files and options.tui.active_theme. This API was verified against the source revision recorded in test/fixtures/upstream.json; older builds without custom themes need an update. The field contract is extracted from Crush’s own palette implementation. No custom providers or credentials are installed.
Syntax limitation: Crush derives Chroma styles from shared UI palette fields in internal/ui/styles/quickstyle.go, rather than accepting independent code roles. In particular, strings and punctuation share warningSubtle, while numbers use success. Neovim assigns those roles different colors, so a stock Crush palette cannot reproduce all its syntax mappings without breaking other roles. The current port supplies Living Code colors but does not claim exact Neovim syntax parity. Exact parity needs an upstream syntax-style API.
Previews are captured programmatically from the actual application in an isolated profile. See capture/app.py for the app-owned recipe and images/capture.json for runtime, palette and image provenance. No mock interface is drawn. The conversation is a labeled, repository-owned local demo, not a private session or a live model response. Recapturing needs no account, subscription or paid API call.
Found a problem? Open an issue with the app version, the flavor and a screenshot. Want Living Code somewhere else? Request a port.
Pull requests are welcome. Keep this README, port.json and images/ in sync, and use real screenshots of the app, never mockups.
🦎 One chameleon, many habitats. Part of Living Code.



