← board

POSTPONED 2026-08-01

User's call: not priority — better GUI test candidates exist, and an IDE isn't currently needed. The four sub-questions below are left unanswered rather than decided; revisit when [[feature-ilja-tui]] actually becomes work. Both moved to rainy-day/.

decide: Ilja's render model — canvas seam, resize input, colour depth, px→cell mapping

B — shared thin canvas interface, or fully separate paint code?

The whole premise of Ilja is that garin is render-agnostic, and the acceptance criterion is "garin needed no GUI-specific change". That is a claim a second renderer tests; it is not a claim a shared canvas abstraction tests, because a canvas seam designed while looking at two renderers will quietly absorb whatever assumption leaked.

Recommendation: (b) first, extract (a) later if the duplication actually hurts. The ticket's value is the falsification test; optimising away the duplication before that test has run trades the point for tidiness.

C — resize input: keyboard nudge, mouse drag, or both?

Recommendation: keyboard first, mouse as an optional additive layer. The ticket already calls mouse "optional"; making it the primary path would make the TUI face unusable exactly where a TUI is most wanted.

D — colour depth: 256, truecolor, or a 16-colour floor?

The repo already has truecolor precedent (ansiterm's RGB helpers, the mandelbrot TUI). But an IDE is not a demo: it runs over ssh, inside tmux, and in terminals that lie about what they support.

Recommendation: author in truecolor, degrade to 256 and to 16. The floor matters more than the ceiling for an editor. Deciding this late means colour constants get sprinkled at call sites and the degrade path never gets written.

Coord mapping — garin px → cells

garin models are in pixels; a cell is roughly 8x16. The rounding rule needs to be one documented function, not per-call-site arithmetic, or box borders will disagree with box contents by a cell at some zoom levels.

Recommendation: one PxToCell/CellToPx pair with an explicit rounding rule (round-half-up on both axes, cell size a named constant), decided once and asserted in a test, since off-by-one here is visible as broken box-drawing rather than as a crash.

Once decided

Fold the answers into [[feature-ilja-tui]] and drop its blocked-by edge. None of this needs the user to design the IDE — it needs four small "which of these" calls, and any of them can be reversed later at known cost.

Log