Interface design principles

Keep the glyph primary and the application state legible.

StatusCurrent design guidance
StabilityApply with judgment to the current interface

Runebender is a dense working tool for type design. Controls should remain stable while values change, and decoration should never obscure the active glyph. Other editors are references to evaluate, not feature lists to copy.

Use named roles

Colors come from installed .theme.toml files and are resolved through src/application/view/theme.rs. The theme guide names the Base UI and Rainbow palettes. Spacing, sizes, radii, strokes, and type come from src/application/view/design.rs. Repeated controls belong in src/application/view/recipes.rs. A new color needs a named role in every built-in theme.

Keep the interface steady

Check the actual result

For ordinary interface changes, inspect only the default theme (currently Gray). Check other themes at the same size when working on themes or when explicitly requested. A headless capture shows the rendered widget tree but does not prove pointer, keyboard, IME, accessibility, or GPU behavior. Run a native interaction check when the change affects those paths. The repository’s AGENTS.md and CI define the current code checks.