Design system
Case study

active · Selected build

Hue Theme

A portable design-token system that carries three Huế-inspired moods across editors, terminals, developer tools, and writing software.

Three Hue Theme palettes flowing through a semantic token contract into generated adapters
Status
active
Latest release
v0.3.8
Last activity
4 Sep 2026
License
MIT

Why I built it

Theme files tend to drift. A terminal changes, an editor falls behind, and the same color starts carrying different meaning in different tools. Hue Theme treats that as a systems problem rather than a collection of palettes.

The visual direction comes from Huế: rain-dark navy, river green, incense gold, and the pale blue light of the imperial city. The engineering goal is portability without flattening that identity.

The system

The repository has three layers. Primitive tokens hold authored colors and cultural notes. A versioned semantic contract names durable roles such as surface.canvas, text.primary, and syntax.keyword. Adapters translate those roles into each host API.

That contract currently reaches Neovim, tmux, Ghostty, ChatGPT and Codex, Fish and Tide, Yaak, bat, lazygit, delta, Inkdrop, herdr, and tuicr. Neovim and tmux are also released from generated subtrees, while registry-backed tools keep their own publishing step.

Decisions that matter

  • Every adapter declares the token families it supports or deliberately omits.
  • Generated artifacts are never edited by hand.
  • Body text, interactive boundaries, and focus states are checked against WCAG contrast targets.
  • Typography remains under host control; Hue owns color and semantic intent.
  • Release verification happens at the distribution channel, not only in the working tree.

What it demonstrates

Hue Theme is the shared visual substrate for this site and my daily terminal environment. More importantly, it is an example of using a small stable contract to keep many independently evolving integrations coherent.

Read more

All posts
  1. Glowing geometric rules transforming into structured JSON objects