Canvas · essays/omega-app — visual_identity.md

OMEGA plan, re-read

Per-layer filter_mode works. App runs smooth at 1440×900. Phase 1 cleared to start: canvas + selectable element, hit testing, text layout.

phase-1engine2026-04-17 · 14:02

Friction, yesterday. Mode hierarchy still ambiguous — where does canvas/edit sit next to vim normal/insert/visual? Flag before touching Lua.

visual_identity — decisions

bg #24273a // Macchiato base, slightly bluer than blog
text #dadada // primary — matches blog exactly
ui IBM Plex Sans // blog
code Cascadia Code // NeoVim
pad 4–8px // mid-dense; tiny text normal
rad 0–2px // no rounded cards
border 1px // never 2px
shadow none // depth via bg-tint

Triple use

dev environment (daily driver)

a327ex.com (engine → WASM)

interactive essays (inline views)

Same engine. Same textures. Same layout primitives. Nothing in here is throwaway.

log · engine commit b7c1e4

+ Layer filter_mode per-instance
+ Font atlas carries own filter
~ Sprite UV snap gated on aa
Global u_aa_width set per-frame