fontina0.2.0

Next: 0007 — Project license: GPL-3.0-or-later,  Previous: 0005 — WOFF and WOFF2 decoding,  Up: Architecture decision records

0006 — CLI first; the desktop shell is deferred

Status: accepted, 2026-09-03

Context

M1 was planned as a Tauri 2 + Svelte desktop app. Building it means a Node toolchain, WebKitGTK on Linux, code signing and notarisation, and a second UI codebase, for one benefit: truthful font previews. Meanwhile every feature the app needs (activation, watched folders, tags, collections, facets) has to exist in the core and the CLI anyway.

Decision

M1 ships as a CLI plus a ratatui TUI (fontina ui). Previews are rendered in the terminal: harfrust for shaping, skrifa for outlines, a coverage rasteriser, and the kitty, iTerm2 and sixel image protocols with a half-block fallback. ADR 0003 (Tauri for a graphical shell) stays accepted but moves to M3, and only if the TUI leaves a real gap.

Consequences

One binary, no runtime, Linux-first testing in real terminals. The core grows a render module and two dependencies (harfrust, ab_glyph_rasterizer); the CLI grows ratatui and crossterm. Complex-script previews are correct because shaping is HarfBuzz-grade, not because a browser did it. People who want a window get the HTML specimen today and, possibly, a thin shell later.