Perkins
Tech stack: Go License: (see repo)
What it does
Section titled “What it does”Perkins is a terminal pixel-art editor that draws with braille characters — eight dots per cell — to get sub-cell resolution inside an otherwise standard text grid. Input is a vim-motion + mouse hybrid; an in-app help overlay (?) is the canonical place to learn the bindings; and there’s a built-in image→ASCII path so the user can paste raster art straight in and edit it as braille pixels. It’s a small but pointed UX study in “how to break the cell grid without leaving it.”
Aspirational features for KN-86
Section titled “Aspirational features for KN-86”- Braille rendering for sub-cell resolution. A standard text cell is 8×8 (KN-86 logical) or 12×24 (physical); braille gives you a 2×4 sub-grid inside each cell. For KN-86 this is the right answer for:
- CIPHER-LINE waveforms (oscilloscope / spectrum on the 256×64 OLED).
- Sparklines inside the main 80×25 grid (e.g. battery curve, signal strength, reputation history).
- Map / topography rendering on cart surfaces that need finer detail than one glyph per tile.
- In-app help overlay (
?). A single keypress brings up “here’s everything you can do here.” KN-86 has a context-sensitive TERM key, multiple modules, and per-surface bindings — a universal?overlay would dramatically lower onboarding cost. Worth promoting to a runtime affordance, not a per-cart feature. - Image → ASCII conversion. Not a likely v1 KN-86 feature, but the idea (a sprite import pipeline that maps raster art into the CP437 + braille glyph budget) is a viable cart-author tool. Sits naturally next to the existing 8×8 glyph tooling.
- Vim-motion + mouse hybrid. Mouse is irrelevant on KN-86 hardware, but the principle (“two muscle-memory inputs, neither forced”) translates: arrow keys + numpad-as-cursor for KN-86’s no-mouse environment.
UX / interaction patterns
Section titled “UX / interaction patterns”- Braille glyphs as drawing primitives. Each cell is treated as a 2×4 dot matrix; user presses paint a dot, not a cell.
?opens a modal help layer. Discoverable, always available, doesn’t pollute the chrome.- Vim motions for navigation, mouse for direct placement. Power users keep their hands home; casual users point and click.
Visual style
Section titled “Visual style”- Braille mosaic as the canvas. Sub-cell pixel grid that still respects the underlying text-mode constraints.
- Minimal chrome. The drawing area is the UI.
Screenshot
Section titled “Screenshot”
The shot in place is the ? help-menu view — useful because it shows both the braille canvas (in the background) and the in-app help overlay pattern that’s the strongest borrowable affordance.
Notes / open questions for KN-86
Section titled “Notes / open questions for KN-86”- Braille rendering is the single biggest borrowable trick here. Worth a dedicated ADR or runtime-spec note: “Sub-cell rendering on KN-86 uses Unicode braille glyphs (U+2800–U+28FF) as a sanctioned escape hatch from the 8×8 / 12×24 cell.” Open question: which subset of glyphs ships in the Press Start 2P + CP437 font, and what gets layered in via the planned ~2000-glyph Unicode subset (
software/api-reference/grammars/character-set.md). - A universal
?help overlay is a strong candidate firmware-internal feature alongside the Bare Deck Terminal and REPL. Cart authors register a help table; firmware composes them. - The image→ASCII conversion is mostly an authoring-tool inspiration — likely belongs in
tools/later (alongsidetools/gen_font_12x24.py), not in the runtime.