Skip to content

KN-86 Inspiration Set

This folder is reference material, not engineering spec. The aim is to give every future spec / ADR / design conversation a shared corpus to point at — so “make it feel like X” lands with the same meaning across writers. Nothing here is a committed feature; promotion to a spec or ADR is a separate step.

The folder lives at the repo root (outside docs/) so it isn’t rendered by the Starlight sync (scripts/sync-from-docs.mjs) into the four-pillar reference site — but it is versioned in git and travels with the repo.

The set is organized in four groupings here in inspiration/ plus two sibling folders for build- and research-level references:

  • Batch 1 — TUI software references. UX patterns, layout discipline, resilience instincts.
  • Batch 2 — Hardware and aesthetic references. Physical devices, community moodboards, palette resources for KN-86’s visual identity, form factor, color story.
  • Batch 3 — TUI apps and retro software. The contemporary keyboard-driven music players, dashboards, and recreations that define KN-86’s UX bar, plus the foundational retro-software touchstones (VisiCalc, Civilization 1991, Gorillas QBASIC) that are the historical anchors.
  • Sister-product research — Design references for KN-9x products other than KN-86 (the KN-90S Statline, KN-90T Toneline, KN-92 Gridline).

Sibling folder ../prototype/ carries concrete build references — the TUI frameworks and libraries that are candidate tech-stack choices (Bubble Tea, Lip Gloss, termbox2, asciinator) plus the physical-build hardware references (QRPπ, Pelican 1170 print models, the Printables cyberdeck search).

Sibling folder ../research/ carries the Batch 4 implementation-technique references — TUI widget libraries (termui, blessed-contrib), minimalist C rendering cores (tuibox), the Lisp-to-terminal bridge (cl-termbox2), the “make a Lisp” blueprints (mal, BuildYourOwnLisp), Emacs-derived keyboard philosophy (EXWM, webmacs, xiki, history.el, writeroom-mode, emacs-request, pallet), retro effects (BOOTSTRA.386, NES.css, no-more-secrets, loopy), and runtime patterns (game-programming-patterns).

The three-folder split: inspiration tells you what the device should feel like; prototype tells you what to build it from; research tells you how to build the pieces in between (the rendering pipeline, the scripting layer, the keyboard model, the signature effects, the runtime patterns).

Batch 5 records a major hardware-path decision: the KN-86 will use a Ferris Sweep rather than a fully custom keyboard. See ../prototype/keyboard-decision.md for the decision and its rationale. The Batch 5 entries add the Sweep (../prototype/ferris-sweep.md) and the holykeebs Buyer’s Guide (../prototype/holykeebs-buyers-guide.md) to the build path; archive the custom-keyboard knowledge (GOLEM hub, plate manufacturing, KMK firmware, KMK guide, universal60plate) to research/ as background; and add three cyberdeck/macropad STL references to inspiration/ for shell aesthetic (Adamow cyberdeck, TechNIK cyberdeck, Stream Deck macropad).

Batch 6 introduces a fourth sibling folder, ../effect/ — visual-effect / rendering-technique references and KN-86-internal specs. The central deliverable is the KN-86 ASCII Effect Spec distilled from react-video-ascii’s prop matrix and libcaca’s engine reference. The four-folder split now reads inspiration (feel) / prototype (build) / research (how) / effect (visual-effect grammar). Batch 6 also adds two Ferris Sweep hardware reinforcements to prototype/ — a printable case for the Sweep v2 and an ergonomically sculpted Choc keycap set — confirming the Batch-5 keyboard decision with concrete supporting parts.

ProjectTechOne-lineFile
PulseDeckRust / RatatuiRetrowave terminal radio player with a cassette-deck UI.pulsedeck.md
GloomberbTypeScript / OpenTUIBloomberg-style finance terminal with a mnemonic command bar.gloomberb.md
NetWatchRustNetwork-forensics TUI with a nine-tab numbered dashboard.netwatch.md
GolazoGo / Charm stackLive football-match TUI built around a master/detail + headline-scoreline pattern.golazo.md
PerkinsGoBraille-character pixel-art editor with sub-cell resolution and a ? help overlay.perkins.md
BAEPythonMinimal two-column bash-alias editor — friction-removal as a feature.bae.md
Cowsay in C++C++Classic cowsay port — captured for the ASCII speech-bubble primitive only.cowsay-cpp.md
OpenTUIZig core + TS bindingsTUI framework (the substrate for Gloomberb and OpenCode), evaluated as a potential KN-86 foundation.opentui.md
ZorkMDL (Lisp) → Z-machine bytecodeThe 1980 Infocom interactive-fiction archetype — the historical precedent for Lisp-authored carts on a portable bytecode VM.zork.md
Vehicle TUI ConceptAnonymous community concept imageTUI applied to a fixed-envelope automotive infotainment screen — the closest visual analogue to KN-86’s own situation (a TUI that is the product UI).vehicle-tui-concept.md

Batch 2 — Hardware & aesthetic references (KN-86)

Section titled “Batch 2 — Hardware & aesthetic references (KN-86)”
ReferenceTypeOne-lineFile
Penkesu ComputerOpen-source hardwarePi Zero 2 W + 1280×400 ultrawide + 48-key ortholinear Kailh Choc handheld in a GBA-SP-hinged off-white clamshell.penkesu.md
The Cyberdeck CafeCommunity gallery / blogThe cyberdeck-builder scene’s de facto moodboard — neon-on-dark, rugged panels, “Surviving the Sprawl” lifestyle posts.cyberdeck-cafe.md
Casio Organizer RetrofitHackaday article / build1995 Casio SF-5580 retrofitted with a Pi Zero + 480×800 LCD + Pico-driven 82-key membrane. Function-key-as-domain idiom.casio-organizer-retrofit.md
OS ModelsPixel-art / palette referenceImgur album of animated OS-themed Python-TUI palette demos. Named palettes, ANSI grids, color-picker UIs, amber-on-black.os-models.md

Contemporary TUI applications worth studying for UX, plus the historical software anchors that established the keyboard-first idioms KN-86 inherits from. Pairs with the prototype-tech-stack candidates in ../prototype/.

ReferenceTechOne-lineFile
rs-pugRust / RatatuiYouTube/SoundCloud/local music player with Lua plugins, 5 JSON themes, SQLite storage, Smart Queue autoplay.rs-pug.md
audiumRust / RatatuiKeyboard-first music player; 15 themes with live preview + transparency, plain-JSON portable library, LRC lyrics overlay.audium.md
cliampGo / Bubble TeaWinamp-inspired terminal music player with real spectrum visualizer, parametric EQ, Lua plugins.cliamp.md
AetherTuneRust / RatatuiInternet radio TUI with real 16-band FFT visualizer (~94 fps), CRT boot/power-off animations, 8 themes including default CRT, fully remappable keybinds.aethertune.md
octoscopeGo / Bubble TeaTabbed auto-refreshing GitHub dashboard. 7 themes including phosphor and amber CRT — direct lineage for KN-86’s amber. Drill-in detail views, live “change pulse” border flashes.octoscope.md

Retro / historical software (UX touchstones — referenced not run)

Section titled “Retro / historical software (UX touchstones — referenced not run)”
ReferenceEraOne-lineFile
l123Modern (recreates 1993)Faithful Rust recreation of Lotus 1-2-3 R3.4a for DOS — slash menus, three-line control panel, 13 live modes, first-character input rule, F-key workflow, optional DOS/green/amber CRT themes, modern .xlsx engine underneath. Single strongest keyboard-first interaction-model reference in the entire corpus.l123.md
VisiCalc1979The original spreadsheet — keyboard-driven grid UI archetype.visicalc-archive.md
Sid Meier’s Civilization1991Dense 16-color DOS strategy UI — information-density discipline.civilization-1991.md
Gorillas QBASIC1990Bundled with MS-DOS QBASIC; chunky-DOS-game aesthetic + “source code shipped with the app” learnability model.gorillas-qbasic.md
ReferenceTypeOne-lineFile
4TRKCompact desktop music workstationTracker / groovebox music workstation — 8 drum + 3 flex tracks, tape FX, many themes + theme editor, dual screen modes (studio 640 / classic 320), deep CRT effects. Strongest single aesthetic match for KN-86’s Deckline identity.4trk.md
x0xb0x Synth KitDIY hardware synthTB-303 clone PCB kit by Ladyada (Limor Fried) — DIY-kit / open-hardware ethos and panel/PCB aesthetic lineage.x0xb0x.md

Batch 5 — Hardware build decision (cyberdeck STLs + macropad)

Section titled “Batch 5 — Hardware build decision (cyberdeck STLs + macropad)”

The Batch 5 aesthetic references — printable STL cyberdecks and a macropad — that inform the shell language the KN-86 enclosure should land in. The actual build-path decisions and the archived custom-keyboard knowledge live in ../prototype/ and ../research/ respectively.

ReferenceTypeOne-lineFile
My Cyberdeck (Adamow)Free Printables STLTactical-cyberpunk silhouette STL; reference for the KN-86 Pelican-1170 bezel insert aesthetic.cyberdeck-adamow.md
TechNIK Cyberdeck (Nik Reitmann)Free Printables STLAlternate-silhouette cyberdeck — different hinge geometry, different screen-mount; the second of two STL references that triangulate the KN-86 shell aesthetic.cyberdeck-technik.md
Stream Deck / Macro Keyboard (Dante)Free Printables STLAuxiliary macropad form-factor; optional v2+ accessory alongside the Ferris Sweep, bound to KN-86-application verbs.stream-deck-macropad.md

Batch 7 — Tactical sports sims + database UX archetype (2026-06-07)

Section titled “Batch 7 — Tactical sports sims + database UX archetype (2026-06-07)”

Three inspiration entries from Batch 7 (../synthesis.md §10): two tactical OODA-loop football sims that cluster with the existing Strat-O-Matic CFB as KN-90S Statline inputs, plus a 1988 menu-driven database tool that doubles as a candidate KN-9x “DM Sidearm” sister-product concept.

ReferenceEra / PublisherOne-lineFile
NFL Challenge1985 / Xor CorporationEarliest mature tactical OODA football sim. Menu-driven play-calling, text play-by-play + minimal X’s-and-O’s, editable plain-text rosters. Historical anchor of the tactical-sports-sim cluster.nfl-challenge.md
NFL Pro League Football1991 / Micro SportsRefined tactical OODA UX — formation grid × play menu call-sheet. Reads cleanly as a screen-design-rule reference.nfl-pro-league-1991.md
Dungeon Master’s Assistant Vol I1988 / SSI/TSRMenu-driven D&D-DM database tool — 1000+ encounters, 1300+ monsters, editable. UI archetype for KN-86 cart database surfaces (AUDIT, The Vault, Black Ledger). Also a candidate KN-9x “DM Sidearm” sister-product concept.dungeon-masters-assistant.md

Batch 8 — Deckline-core TUI corpus (2026-06-12)

Section titled “Batch 8 — Deckline-core TUI corpus (2026-06-12)”

The largest single capture: 49 production TUIs across inspiration/, research/, and effect/, distilled into two synthesis docs — ../synthesis-batch8.md (UI pattern catalog / single-color adaptation / ambient mode / LISP integration) and ../synthesis-batch8-architecture.md (library shortlist verdict + (draw-keyboard) / (draw-framebuffer) proposals + libuv pattern-only). The 36 inspiration/ entries are grouped by cluster below; the research/ and effect/ entries live in their sibling indexes (../research/index.md, ../effect/index.md). Canon throughout: 128×75 per ADR-0027.

ReferenceTechOne-lineFile
csvlensRustless-style CSV viewer — read-only table rendering + selection-mode cycling + frozen columns.csvlens.md
sc-imC / ncurses + LuaVim-modal spreadsheet with an embedded Lua interpreter driving the grid — the architecture anchor for “how a scripting language wires into a cell-grid app.”sc-im.md
sheetsuiRust / RatatuiConsole spreadsheet (sc-im-inspired) — the clean engine/UI split reference (ironcalc engine under a Ratatui front-end).sheetsui.md
VisiDataPythonThe fullest terminal tabular multitool — typed-column indicators, sheet-stack navigation, transformation pipeline.visidata.md
logradarRustMulti-source log-stream TUI — the corpus’s highest single-color value: Unicode-block sparklines + glyph status icons + a named-color-role (Mono) theme.logradar.md
ReferenceTechOne-lineFile
caps-logC++Terminal journaling on a calendar — the cleanest multi-panel calendar layout + six named border styles.caps-log.md
calcurePythonCalendar + task TUI — month-grid + task-panel split, icon-from-keyword convention.calcure.md
chronosGo / HuhVim calendar with a zoomable intraday time-grid — the batch’s density-control reference (zoom-as-row-semantics) + form-based event editing.chronos.md
clipseGo / Bubble TeaClipboard-manager TUI — the list + preview-pane + top-filter pattern and a clean JSON theme schema.clipse.md
mynavGoWorkspace/session navigator — two-panel navigator + live-preview launcher + breadcrumb hierarchy.mynav.md
mcflyRustNeural-ranked shell-history search — the full-screen ranked-result overlay (the command-palette pattern).mcfly.md
ReferenceTechOne-lineFile
hackernews-TUIRustTerminal Hacker News browser — the cleanest hierarchical drill-in/back-out nav + link-overlay reading.hackernews-tui.md
newsboatC++Terminal RSS/Atom reader — 3-level list→item→reader hierarchy, unread badges, filter-query language.newsboat.md
w3mCText-mode web browser + pager — HTML→text table/frame rendering in a constrained grid; inline-image protocol concept.w3m.md
browshGo / FirefoxText-mode browser rendering full web pages — the half-block pixel-rendering reference (brightness per half-cell).browsh.md
bookokratRustTerminal EPUB/PDF/DJVU reader — split library/TOC + reader layout, TOC-tree navigation, zen/focus mode.bookokrat.md
ReferenceTechOne-lineFile
microGo / LuaModern terminal editor — strongest reference for the context-sensitive bottom key-hint bar + a clean namespaced Lua plugin layer.micro.md
Microsoft EditRustDOS-Editor homage — the dropdown-menu-bar / dialog system AND a from-scratch immediate-mode framebuffer TUI on a plain C ABI.microsoft-edit.md
makiCMinimal modal editor — the NAV/INS mode toggle and an explicitly battery-conscious design thesis.maki.md
ninoCTiny kilo-lineage editor — a minimal-C core that grew tabs/splits/file-explorer without losing the kilo shape.nino.md
orbitonGoConfig-free VT100-limited editor — hard terminal-capability constraints, a “portal” cross-file cut/paste primitive, a built-in mini-game.orbiton.md
durdrawPythonASCII/ANSI/Unicode art and animation editor — the strongest model for a KN-86 cart-art authoring tool (canvas + ░▒▓█ palette + frame timeline).durdraw.md
ReferenceTechOne-lineFile
Brogue: Community EditionCMinimalist ASCII roguelike — the single most valuable single-color reference in the corpus (glyph/inversion/shading grammar).brogue-ce.md
PHP Terminal GameBoy EmulatorPHPFull GameBoy emulator rendering to a terminal — direct proof-of-concept for KN-86’s “the terminal runs a real handheld game” premise.php-gameboy.md
Midnight CommanderC / ncursesThe canonical dual-panel file manager — the reference for KN-86’s F-key bar (Row 74) and dual-panel layout.mc.md
desktop-tuiRustA TUI “desktop environment” with overlapping windows + taskbar — window-management reference for single-color chrome.desktop-tui.md
tvtermC++ / Turbo VisionTerminal-emulator-in-terminal — the canonical retro windowed-TUI framework study.tvterm.md
maze-tuiRustMaze build/solve visualizer — box-drawing wall-style catalog + step/speed animation controls.maze-tui.md
ReferenceTechOne-lineFile
lineC++ / Lua-LPegCLI MIDI sequencer + live-coding pattern language — the LISP-integration apex (a line phrase maps one-to-one onto a Fe s-expression); primary Toneline sequencer reference.line.md
cmusCConsole music player — numeric view-switching, compact status bar, library/queue separation.cmus.md
upianoPython / TextualA playable piano keyboard in the terminal — the Toneline piano/keyboard widget + slider components reference.upiano.md
wavesGoTUI music player — F-key multi-view switching, library hierarchy, queue + undo/redo.waves.md
asakRustCross-platform audio recorder/player — mode-selector splash, waveform-with-playhead, live-monitor recording workflow.asak.md
valveFMGoVintage FM internet-radio TUI — the tune-dial / tuner UI metaphor for audio controls.valvefm.md
ReferenceTechOne-lineFile
TypeincPython / ncursesTyping-speed game whose signature affordance is an on-screen keyboard widget mirroring the physical keys — the A4 (draw-keyboard) source.typeinc.md
typing-game-cliNodeTyping game with a race-against-a-fast-robot mode — the ghost-competitor mechanic + a KN-86 typing-game cart concept.typing-game-cli.md

References in this folder that target a KN-9x sister product, not KN-86 itself. Captured here because the inspiration folder is the right home for not-yet-spec design references regardless of which product they target — when each sister product gets scoped, the relevant entries should be linked from its concept doc.

ReferenceTarget productOne-lineFile
Strat-O-Matic CFBKN-90S StatlineSports-sim dense-data-table UI — the closest contemporary digital analogue to what the Statline’s fantasy-sports management UX needs to be.strat-o-matic-college-football.md
NFL Challenge + NFL Pro League Football (also Batch 7 entries above)KN-90S StatlineTactical OODA-loop sports-sim cluster — completes the trio of Statline UX references.nfl-challenge.md + nfl-pro-league-1991.md
Dungeon Master’s Assistant Vol I (also Batch 7 entry above)Candidate KN-9x “DM Sidearm” concept (no concept doc yet)Tabletop RPG DM database sidearm — a portable rugged single-purpose tool that runs all night without distraction.dungeon-masters-assistant.md

Cross-cutting reference:

  • features-matrix.md — every recurring pattern as a row, every Batch 1 project as a column, with a “KN-86 aspirational?” verdict on the right. Batch 2 and sister-product references are aesthetic/hardware moodboard material rather than TUI-feature patterns, so they are referenced from the visual-identity brief below rather than from the matrix.

The set splits in two. Zork (and the Z-machine) is the architectural north — the 1980 precedent for everything KN-86 is doing structurally: a Lisp dialect for authoring, a portable and memory-disciplined runtime (KN-86 realizes this as a tree-walking interpreter; the AOT-bytecode half is deferred), a cartridge artifact carrying the work, and a taut text voice that is the UI. The other eight are contemporary UX reference — what good TUI craft looks like in 2025–2026, what patterns recur, what the bar is for keyboard-first, theme-aware, resilient terminal interfaces.

Reading across the contemporary eight, a few patterns keep showing up — these are what should define the KN-86 Deckline identity at the surface:

  1. Keyboard-first command model. All eight commit to keys over menus. KN-86 is already there by hardware constraint (31 physical keys, no pointer), but the framing — every surface is a keymap, the keymap is discoverable in-band — is the doctrine to commit to.
  2. Multiple focus / layout modes. PulseDeck cycles three layouts on one key. NetWatch tabs by digit. Golazo swaps focus with Tab. KN-86 should pick a small, fixed set of modes per surface and a single key to cycle them — not freeform window management.
  3. First-class theme system. PulseDeck (6) and NetWatch (7) both make themes a named, cyclable, persistent setting. KN-86 is monochrome amber, so this becomes “aesthetic modes” rather than “color themes” — glyph treatment, CIPHER-LINE animation profile, scanline/ghost overlay — but the mechanism (a registry, a cycle key, a persisted choice in nosh-config.toml) transfers.
  4. Visualizers + sparklines as inline primitives. PulseDeck’s spectrum/scope, NetWatch’s sparkline/heatmap/Gantt rows, Golazo’s stat bars. None of them are separate “graph mode” — they live inside the data view. CIPHER-LINE is KN-86’s natural home for the heavier visualizers; the main 80×25 grid can carry sparklines and stat bars with box-drawing + braille.
  5. Resilience / graceful degradation as doctrine, not feature. NetWatch surfaces capability tiers in-band and never crashes. PulseDeck buffers, fades, undoes, and refuses to draw on a too-small terminal. KN-86 has analogous states (no cart, no microSD, coprocessor offline, low battery, emulator window too small) — they should be handled with the same posture: show what you have, label what you don’t.
  6. Persistent session state. PulseDeck, NetWatch, Gloomberb, BAE — all of them survive a restart. KN-86 already has Universal Deck State (ADR-0011); the inspiration set reinforces that scope (handle / credits / reputation / cartridge history / phase chain) is exactly right.
  7. Plugin / extensibility story. Gloomberb is the heavy example; OpenTUI is the substrate. KN-86 has the capability-cartridge model, which fills the same niche through different mechanics — but the vocabulary (pane / tab / command / status-widget / data-provider) is useful for sharpening the Bare Deck Terminal brief.

Eighteen projects closest in spirit to where KN-86 should land. The first is historical and architectural; the rest are split between contemporary UX (Batches 1 + 3), physical-build prototype (Batch 3 hardware refs + Batch 5 keyboard decision + Batch 6 case/keycaps reinforcement), implementation-technique research (Batch 4 + Batch 5 archived custom-keyboard knowledge), and visual-effect grammar (Batch 6).

  1. Zork (and the Z-machine) (Batch 1) — the deepest single architectural resonance. Lisp-authored carts on a portable, memory-disciplined runtime; pure-text experience on a fixed-grid terminal; cartridge / box / feelies as part of the work; second-person, present-tense, taut prose voice. KN-86’s KEC Lisp + Fe interpreter + cart-shell + CIPHER stack is the Z-machine pattern, four decades on — though KN-86 tree-walks Lisp source rather than compiling to bytecode (the AOT-bytecode half is deferred; see ADR-0004 amendment). Cite explicitly in ADR-0001 and ADR-0004 background sections.
  2. l123 (Batch 3) — the single strongest keyboard-first interaction-model reference in the entire corpus. Slash menus, three-line control panel, 13-mode indicator, first-character input rule, F-key verb workflow, F1 context help (824 pages shipped in the binary), authenticity contract backed by 232 acceptance transcripts, optional DOS/green/amber CRT themes, strict layered Rust architecture. Read end-to-end before touching KN-86’s runtime interaction model.
  3. AetherTune (Batch 3) — the single strongest runtime-architecture reference of the contemporary apps. Real 16-band FFT visualizer pipeline at ~94 fps (CAVA-inspired), CRT boot + power-off identity animations, 8 themes, fully remappable keybindings, graceful capability degradation (simulated visualizer when audio capture absent), clean src/ui/ module split. The CIPHER-LINE visualizer should be modeled on this pipeline.
  4. 4TRK (Batch 3)strongest single aesthetic match for KN-86’s Deckline identity. Compact desktop music workstation, dual screen modes (studio 640 / classic 320), many themes + theme editor, deep CRT effects, tape-emulation FX. Read the screenshots, then read them again.
  5. PulseDeck (Batch 1) — the deck identity, the theme registry, the audition/commit split, the visualizers, the resilience instincts. Borrow most heavily here for the cassette-deck visual lineage.
  6. NetWatch (Batch 1) — the numbered-tab dashboard, the graceful-degradation doctrine, the sparkline-everywhere aesthetic, the live-cycle-and-persist theme model. The Bare Deck Terminal should feel like NetWatch’s Dashboard tab, in amber.
  7. Gloomberb (Batch 1) — the dense multi-pane discipline and the mnemonic command bar. The TERM key should feel like Gloomberb’s Ctrl+P.
  8. QRPπ (Batch 3, ../prototype/)the single closest physical-build reference. All-in-one weatherproof digital-mode radio deck in a Pelican 1170 case with three 3D-printed inserts (bottom keyboard, top panel, screen bezel), unmodified shell, ortholinear keyboard, display in the lid. KN-86’s hardware build structure should follow this almost line-for-line.
  9. mal — Make a Lisp (Batch 4, ../research/)the canonical blueprint for building a small embedded Lisp. 11 steps, 89 host-language implementations, the lingua-franca curriculum for “implement a Lisp in language X.” Direct prior-art citation for ADR-0001 / ADR-0004 / ADR-0005. The scaffold for KN-86’s cart-authoring tutorial.
  10. EXWM + webmacs (Batch 4, ../research/) — the strongest contemporary statements of the “keyboard-driven everything, one environment” philosophy. EXWM at the WM level, webmacs at the per-application level. The north star for the universal-verb-set + nEmacs REPL surface (ADR-0016).
  11. termui + blessed-contrib (Batch 4, ../research/)the widget-catalog reference. Sparkline, gauge, plot, table, tabs, braille canvas, carousel, LCD display, rolling log, donut. The inventory NoshAPI should expose to cart Lisp as drawing primitives. The carousel idea (auto-rotating dashboard views) is the standout single takeaway — pilot for the Bare Deck Terminal idle state.
  12. BOOTSTRA.386 (Batch 4, ../research/) — the aesthetic + boot-animation identity reference. DOS WIMP re-skin + configurable ANSI-art boot/flyby animation. Direct cite for the v0.1 KN-86 boot animation in AMBER + Press Start 2P + CP437, with configurable speed and repeat behavior in nosh-config.toml.
  13. Ferris Sweep — holykeebs (Batch 5, ../prototype/)the keyboard. 34-key split, RP2040 controller, hotswap sockets + diodes, low-profile choc spacing, MBK low-profile keycaps. Replaces the custom 31-key keyboard plan from ADR-0024. Order from holykeebs as a soldered kit per the Buyer’s Guide BOM checklist.
  14. holykeebs Buyer’s Guide (Batch 5, ../prototype/)the BOM. The configuration matrix turned into the actual order checklist (build tier, controller, sockets, switches, pointing device vs OLED constraint, plates, case).
  15. GOLEM (Batch 5, ../research/)the custom-keyboard knowledge base (archived as background per the Sweep decision) and the vintage-terminal-keyboard gallery (actively used as KN-86 keycap-legend / TUI typography reference). Reuters ‘85, Tatung ‘84, IBM 5155 Model F, Kaypro 10, Epson HX-20/40, DEC LK-201.
  16. Adamow + TechNIK cyberdecks (Batch 5, ./)the shell aesthetic. Two free Printables STL cyberdecks that triangulate the tactical-cyberpunk silhouette family the KN-86 Pelican-1170 bezel inserts should land in.
  17. react-video-ascii + libcaca (Batch 6, ../effect/)the ASCII visual language. react-video-ascii is the interaction-grammar north star (its prop matrix distills into the project-wide ASCII Effect Spec); libcaca is the on-device engine reference. The whole TUI shares one ASCII grammar defined here.
  18. Ferris Sweep v2 Case + Sculpted Choc keycaps (Batch 6, ../prototype/)the case + the touch. Bubbleology’s printable Sweep v2 case is the actionable enclosure for the chosen keyboard; mugika9’s sculpted Choc caps are the documented ergonomic alternative to canonical MBK. Both reinforce the Batch-5 Sweep decision with concrete supporting parts.

Tertiary but specific:

  • Golazo (Batch 1) for master/detail + headline-glyph identity object — a screen-design rule.
  • Perkins (Batch 1) for braille sub-cell rendering and the ? overlay — a primitive and a runtime feature.
  • OpenTUI (Batch 1) as the reference component inventory, not as a substrate.
  • Vehicle TUI Concept (Batch 1) for the Row 0 + Row 24 + bottom-bracketed-nav pattern realized at fixed-envelope hardware scale — the closest visual analogue to what KN-86 itself is.
  • octoscope (Batch 3) for the direct amber CRT theme lineage citation and the tabbed-dashboard reference architecture.
  • VisiCalc (Batch 3) as the historical anchor of the keyboard-first-grid lineage that runs VisiCalc → Lotus → l123 → KN-86.
  • Penkesu Computer (Batch 2) and Casio Organizer Retrofit (Batch 2) for hardware silhouette / function-key-as-domain validation.
  • tuibox (Batch 4) for the dirty-bit render-cache pattern and the C-core alternative path.
  • cl-termbox2 (Batch 4) as the proof-of-concept bridge from embedded Lisp to a real terminal — structural validation for ADR-0001 + ADR-0005.
  • xiki + history.el (Batch 4) for the expandable-tree-with-non-destructive-history REPL interaction model.
  • no-more-secrets (Batch 4) as the signature text-reveal transition effect — the third signature animation alongside the boot animation and CRT power-off.
  • Game Programming Patterns (Batch 4) — the runtime-pattern reference (Game Loop, Update Method, Command, Observer, State, Dirty Flag, Object Pool, Service Locator).
  • Stream Deck macropad (Dante) (Batch 5) — optional v2+ auxiliary input module bound to KN-86-application verbs; not part of the canonical v0.1 deck.
  • KMK firmware (Batch 5) — firmware fallback reference; KN-86 uses QMK + Vial on the Sweep’s RP2040 instead, but two specific KMK ideas (drag-drop CircuitPython workflow UX, NeoPixel diagnostic color codes) carry forward.

KN-86 visual identity brief (Batch 2 synthesis)

Section titled “KN-86 visual identity brief (Batch 2 synthesis)”

Distilled from the five hardware / aesthetic references. Not a spec — a directional brief for the visual identity, color story, form factor, typography, and data-density discipline KN-86 should ship behind. Where a value is already canonical (per CLAUDE.md’s Canonical Hardware Specification), the brief reinforces rather than restates.

Screen aspect ratio and layout proportions

Section titled “Screen aspect ratio and layout proportions”
  • Canonical: primary display is 1024×600 (~1.71:1), 80×25 text grid, 12×24 physical cells. Locked.
  • Direction (not a re-spec): the Penkesu Computer (1280×400, 3.2:1) is much more extreme than KN-86’s panel, but its existence validates the deck-style genre — most of the action happens horizontally, not vertically. Read every KN-86 screen layout as “spend the budget across, not down.” Long status strips on Row 0 and Row 24. Side-by-side master/detail in Rows 1–23. Wide stat-bar pairs. The Penkesu is the layout-discipline citation; the 1024×600 panel is the actual target. See penkesu.md.
  • CIPHER-LINE OLED (256×64 auxiliary, per Canonical Hardware Specification) is the truly ultrawide surface (4:1) — the Penkesu lesson applies hardest here.
  • Canonical default: amber #E6A020 on black #000000. Locked. Monochrome on the primary display.
  • Genre lineage: amber is inside the canonical cyberdeck palette family alongside cyan and magenta — see cyberdeck-cafe.md. When someone asks “why monochrome amber?”, the answer is “because it’s one of the colors the scene runs on,” and the Cyberdeck Cafe gallery is the evidence. Direct visual confirmation: os-models-3.png in os-models.md is essentially what KN-86 looks like.
  • Aesthetic-mode direction (not a v0.1 commitment): when KN-86 ships named aesthetic modes (the patterns from pulsedeck.md, netwatch.md, os-models.md), candidate roster, scoped tight:
    • AMBER — the canonical default (#E6A020 / #000000).
    • AMBER — warmer, more saturated red-orange shift; warm-mode reference is os-models-1.png.
    • CIPHER — slightly desaturated mid-luma amber for sustained reading sessions.
  • Aesthetic-mode mechanism: named, cyclable, persisted in nosh-config.toml. Adopt the OS Models “named palette as the unit” framing. Picker UI lives on the Bare Deck Terminal SYS tab, modeled on os-models-4.png (six-row two-column with a save row).
  • Aesthetic mode is not just color. On a monochrome device, “mode” means glyph treatment (Press Start 2P at 1×2 vs. native 12×24, ADR-0014 F1), box-art density, CIPHER-LINE animation profile, scanline / ghost overlay strength. See pulsedeck.md.
  • Tactical-cyberpunk side, not domestic-DIY side. Pelican-1170 shell + 3D-printed inset panels reads as member of the cyberdeck community and lands in the tactical/utilitarian lineage. Penkesu’s off-white “pencil case” is the other legitimate retro-handheld lineage; KN-86 is the tactical sibling, deliberately. Worth being explicit about which side of the line we sit on in marketing.
  • The silhouette is the affordance. Per the Casio organizer retrofit: the external shape should communicate the device before the screen does. The 14-function-key + 16-key phone-layout numpad + TERM key layout (Canonical Hardware Spec) is a retro-organizer / dispatch-deck silhouette, not a generic keyboard.
  • Photograph lived-in, not staged. Both the Cyberdeck Cafe lifestyle posts and the Casio retrofit’s photo style point at the same thing — KN-86 marketing images should look like the device is owned, not vacuum-cleaned. Coffee rings, desk patina, hand grease. This is a directive for marketing-plan.md and pr-faq.md.
  • Canonical: Press Start 2P + CP437 box-drawing, 8×8 bitmap source, 12×24 physical cell. Locked. (ADR-0014, ADR-0014 F1 for the native 12×24 glyph table.)
  • Genre fit: the retro pixel-font commitment is part of the cyberdeck genre’s vocabulary — every device in the Cyberdeck Cafe gallery that has a screen renders monospace pixel-fonts as the default. The choice reads as in-genre.
  • Function-key-as-domain typography (from the Casio retrofit): keycap legends carry the domain vocabulary (CALENDAR, SCHEDULE, …). KN-86’s keycap legend manifest is locked in ADR-0022; the retrofit confirms the idiom works and is recognizable to the audience.
  • The stat-sheet is a sanctioned cart-UI mode. Any KN-86 cart whose job is to be a stat sheet — faction standings, mission logs, dispatch tallies, reputation ledgers — should look like one without apology or decorative panes. Worth promoting to a first-class cart-authoring pattern in ui-patterns.md.
  • Three rules: (1) box-drawing borders, (2) monospace alignment, (3) color / intensity delta carries meaning, not vibe.
  • 80×25 is exactly the right size for tables in this idiom. The grid does the work a spreadsheet does on a PC.
  • (Note: the Strat-O-Matic entry in this folder is research for the KN-90S Statline, not KN-86 — but the data-density discipline above is the general lesson worth carrying over to KN-86 from a TUI craft perspective.)

The aesthetic / hardware direction above lines up directly with several already-noted Batch 1 patterns. The pairs to ship together:

Batch 1 patternBatch 2 evidence
Theme-as-aesthetic-modes (pulsedeck.md, netwatch.md)Named palettes (os-models.md); AMBER / AMBER / CIPHER roster from the brief above
Bare Deck Terminal “useful in 5 seconds” + SYS tab (netwatch.md)SYS-tab aesthetic-mode picker UI modeled on os-models-4.png
CIPHER voice style (zork.md failure-state prose)“Surviving the Sprawl” lifestyle voice (cyberdeck-cafe.md) — two reference corpora for the CIPHER tone target
Row 0 + Row 24 chrome contract (vehicle-tui-concept.md)Horizontal-density discipline (penkesu.md) — spend the budget across
Function-key-as-domain (already canonical; ADR-0016)Casio retrofit as the historical idiom citation

A tight reading of the brief, restricted to what’s plausibly v0.1:

  1. AMBER aesthetic mode only. Don’t ship AMBER / CIPHER yet — but architect the runtime to accept named modes from nosh-config.toml (no hardcoded palette constants outside the mode registry).
  2. Stat-sheet UI pattern documented in ui-patterns.md with three rules + worked example.
  3. Horizontal-density discipline added to screen-design-rules.md as “Layout proportions” — “spend the budget across, not down.”
  4. Marketing brief separate PR. The photographic direction (lived-in, not staged) belongs in marketing-plan.md / pr-faq.md, not engineering docs.

Unified Deckline brief (Batch 3 synthesis)

Section titled “Unified Deckline brief (Batch 3 synthesis)”

Two consolidated recommendations distilled from Batches 1, 2, and 3 together — one for the software north star, one for the hardware prototype path. Not a spec — a directional brief intended to be promoted into ADRs and runtime specs in follow-up PRs.

Application framework: Bubble Tea + Lip Gloss (Charm stack). Go runtime, Elm-style architecture (Model / Init / Update / View), cell-based renderer with diff, integrated keyboard + mouse + focus handling, adaptive/downsampled color so the same code renders correctly on the desktop emulator (true-color terminal) and on the device (Pi Zero 2 W framebuffer VT). Composable child models for the Bare Deck Terminal tabs, mission board, cart-content panes. Fallback path: termbox2 if Go integration costs prove too high or if we want to merge the application binary into the existing kn86-emulator/ C11 codebase.

Interaction model: l123 is the reference.

  • Slash-menu (/ or TERM-key) as the universal command surface — first-letter descent, Esc back, no chords. (l123)
  • Three-line control panel mapping onto KN-86’s Row 0 / Row 24 chrome contract, with the addition of a live mode indicator (READY / EDIT / MENU / WAIT / etc.) in Row 0 or Row 24. (l123)
  • First-character input rule — the first character typed in a context-free input decides what the entry is (verb → English imperative parser, Zork-style; expression → REPL; address → navigation hint). (l123 + Zork)
  • F-key workflow where every function key is a verb. KN-86’s 14-FN + TERM hardware is already this; l123 is the contemporary reference for how to design it well.
  • One key per action ethos. Every meaningful action is a single keypress; chords are reserved for power-user features. (audium)
  • Universal Ctrl-Break-equivalent abort. One key, any mode, back to READY.

Theme system: named aesthetic modes, persisted in nosh-config.toml, picker + editor on the SYS tab.

  • Roster sketch: AMBER (default — the canonical #E6A020 on #000000), AMBER (warmer red-orange shift), CIPHER (mid-luma desaturated for sustained reading). Architecture accepts arbitrary additions; v0.1 ships AMBER only. (Batch-2 visual-identity brief + OS Models)
  • Picker pattern modeled on AetherTune’s t cycler with live preview (AetherTune) and the 4TRK / OS Models color-picker UI for the editor.
  • CRT-theme lineage directly cited from octoscope’s phosphor and amber themes — KN-86’s AMBER mode is in the same naming family by intent, not by accident.
  • Aesthetic mode means more than color on a monochrome device — glyph treatment (ADR-0014 F1’s 12×24 native vs 8×8 scaled), CIPHER-LINE animation profile, scanline / phosphor-bleed overlay strength. (4TRK’s deep CRT-effects layer is the reference.)

Real-time visualizer pipeline: AetherTune’s 16-band FFT at ~94 fps, with CAVA-style gravity fall-off and automatic sensitivity — but driven by PSG output from the Pico 2 coprocessor (ADR-0017), not by system audio loopback. The CIPHER-LINE OLED is the natural home. Secondary visualizer surfaces (sparklines, A-vs-B stat bars) inside the main 80×25 grid use box-drawing + braille per PulseDeck / Perkins / NetWatch. Cross-link to cliamp for the in-band-not-modal placement discipline.

Tabbed dashboard layout for the Bare Deck Terminal: octoscope and NetWatch are the dual reference. Number-key-addressable tabs (15 for STATUS / CIPHER / LAMBDA / LINK / SYS, matching the phone-numpad input model), drill-in detail views from list items, live “change pulse” border flashes on new data arrival (octoscope), capability-tier badge in chrome for graceful degradation (NetWatch).

Plugin / extensibility story. KN-86 cartridges are not plugins — they’re capability modules (ADR-0001). But the contemporary references (rs-pug, cliamp) converge on Lua as the desktop-tooling extension language. Adopt Lua for desktop tooling around KN-86 (cart authoring helpers, emulator debug-overlay extensions, F12-style panel plugins) — not for the on-device runtime.

Persistence: human-editable text formats throughout (audium). nosh-config.toml for config; JSON for portable exports; plaintext for log/history; per-cart save files on the SD card (already specified in ADR-0019); Universal Deck State on the device microSD (already specified in ADR-0011). No binary blobs where a text format suffices.

Image rendering: asciinator’s halfblock--with-fg-bg-color technique for the desktop emulator; shade-mode rendering against the amber palette on the device (monochrome). NoshAPI primitive: (draw-image path :mode 'shade).

Reference architecture: AetherTune’s src/ui/ split + l123’s strict layered Rust workspace. KN-86’s runtime should isolate ui/ from data sources behind a stable trait (NoshAPI is already this for cart Lisp; the application should follow the same discipline internally). Engine-agnostic UI; UI-agnostic engine.

Chassis: Pelican 1170 Protector Case (Canonical Hardware Spec — locked). The closest single existing build is QRPπ — read that entry end-to-end before committing any further bezel work.

Inserts: three to five custom 3D-printed inset panels seated on Pelican foam, case unmodified. Pattern from QRPπ:

  • Bottom: 31-key key plate insert (custom — KN-86’s phone-layout numpad + 14-FN + TERM)
  • Lid: primary display bezel (1024×600 Elecrow IPS panel)
  • Body: CIPHER-LINE OLED bezel (256×64 SSD1322, mounted above the keyboard)
  • Body: cartridge-slot retainer (SD-card-in-sled per ADR-0019)
  • Top/side: port cutout panel (power, programming, optional aux)

Print material: PETG preferred over PLA for travel resilience, per community consensus across pelican-1170-prints.md references. Material remains TBD per Canonical Hardware Spec until bring-up validation.

Parametric starting point: the Printables “Pelican Case 1170 Insert Template — Parametric” (../prototype/pelican-1170-prints.md). Fork it and override the component cutouts rather than authoring from a blank file.

Pelican foam carries the internal volume. Pi Zero 2 W, Pico 2 coprocessor, the battery pack (3× 18650 on a Waveshare UPS Module 3S per ADR-0038), internal USB hub bridge for the SD-card-as-USB-mass-storage cartridge interface (ADR-0019), cabling. Printed inserts carry only the user-visible surfaces.

Keyboard: custom 31-key mechanical PCB per ADR-0018, Kailh Choc v1 switches + MBK keycaps, Adafruit KB2040 controller (ADR-0024) running QMK. Penkesu Computer validates the small-form ortholinear Choc + MBK pairing at handheld scale.

Silhouette identity: tactical-cyberpunk, not domestic-DIY. The Cyberdeck Cafe + QRPπ + Printables cyberdeck gallery converge on the same posture — visible fasteners, integrated antenna stubs (if applicable), rugged panel surfaces, deliberate exposure of hardware. KN-86 belongs in this lineage. (Penkesu’s off-white “pencil case” aesthetic is the other legitimate retro-handheld lineage — KN-86 deliberately doesn’t go there.)

Open-hardware / DIY ethos as a downstream commitment (x0xb0x). By v1.0 or shortly after: published BOM, buildable-from-instructions documentation, sled openable for SD-card service, system image flashable from a standard SD card, no special tooling required.

A tight reading of the brief, restricted to what’s plausibly v0.1:

  1. Application stack: Bubble Tea + Lip Gloss; one Bubble Tea binary running on the device VT and the desktop emulator equivalently.
  2. AMBER aesthetic mode only, but the runtime accepts named modes from nosh-config.toml — no hardcoded palette constants outside the mode registry.
  3. Slash-menu (TERM key) entered universal verb dispatch, with the meta-command verb set (SAVE, LOOK, INVENTORY, SCORE) from the Batch-1 Zork synthesis.
  4. Mode indicator in Row 0 or Row 24.
  5. Stat-sheet UI pattern documented in docs/software/cartridges/authoring/ui-patterns.md with three rules + worked example.
  6. Horizontal-density discipline added to docs/software/cartridges/authoring/screen-design-rules.md — “spend the budget across, not down.”
  7. ? universal help overlay as a runtime-internal affordance (Perkins).
  8. Numbered-tab navigation on the Bare Deck Terminal mapped to the phone numpad (NetWatch + octoscope).
  9. CIPHER-LINE PSG visualizer modeled on AetherTune’s FFT pipeline.
  10. CRT boot + power-off animations as identity branding (AetherTune).
  11. Hardware prototype: QRPπ-derived insert structure seated in Pelican 1170 foam, three printed panels at minimum, no case modification.
  12. Authenticity contract for the runtime, written in docs/software/runtime/ and backed by acceptance transcripts under kn86-emulator/tests/ (l123’s discipline applied to KN-86).

The Batch-3 synthesis above committed to Bubble Tea + Lip Gloss as the application stack, AetherTune’s FFT pipeline as the visualizer reference, and QRPπ as the hardware build template. Batch 4 extends those commitments with the how-to-build-it layer — the rendering core’s design pattern, the embedded scripting layer’s structure, the interaction model’s keyboard discipline, the signature aesthetic effects, and the runtime patterns that compose the whole.

1. Rendering core — confirmed: Bubble Tea + Lip Gloss; widgets from termui / blessed-contrib inventory

Section titled “1. Rendering core — confirmed: Bubble Tea + Lip Gloss; widgets from termui / blessed-contrib inventory”

The Batch-3 recommendation stands: Bubble Tea + Lip Gloss as the primary stack (Go, Elm architecture, cell-based render-with-diff). Batch 4 strengthens the recommendation by providing two specific alternatives and a widget inventory:

  • Compared to a C core (tuibox + termbox2 + KEC Lisp bindings via cl-termbox2 pattern): the C path is real and viable, particularly because cl-termbox2 demonstrates the Lisp-to-terminal bridge works end-to-end. But the C path requires hand-rolling widgets, hand-rolling event dispatch, hand-rolling theming, hand-rolling color downsampling. Bubble Tea + Lip Gloss ships all of that. The C path stays in the doc as the fallback for if Go integration costs prove too high, with tuibox’s UI→Screen→Box dirty-bit render cache as the structural model.
  • Compared to widget libraries (termui, blessed-contrib): termui is Go, blessed-contrib is Node. Neither is the right substrate — Bubble Tea + Lip Gloss is more modern and more actively developed. But the widget inventories of both are exactly the right reference for what NoshAPI (ADR-0005) should expose to cart Lisp.

Widgets to adopt (in NoshAPI surface design, sourced from termui + blessed-contrib catalog):

WidgetSourceUse case
Sparklinetermui + blessed-contribBattery curve in Row 0, reputation history in cart surfaces, FFT band history on CIPHER-LINE
Gaugetermui + blessed-contribMission progress, cart resource bars, battery
Braille canvastermuiSub-cell rendering escape hatch (cf. Perkins precedent)
Tabletermui + Lip GlossStat-sheet UI pattern (per the Batch-2 data-density discipline)
TabstermuiBare Deck Terminal tab strip
Plot (line/scatter)termuiCart-content time-series surfaces
LCD displayblessed-contribBig-glyph headline identity object (cf. Golazo)
Rolling log viewerblessed-contribMission event log, dispatch transmissions, CIPHER history
Carousel (standout)blessed-contribBare Deck Terminal idle-state auto-rotation through STATUS / CIPHER / LAMBDA / LINK / SYS tabs

The carousel is the standout single takeaway: a Bare Deck Terminal that idles into a slow auto-rotation across its tabs gives the device an ambient information-radiator quality. Pilot it. Make it configurable in nosh-config.toml (rotate-interval, rotate-disable). Compose with octoscope’s live “change pulse” border flash on data arrival — the carousel rotates, the change-pulse interrupts and flashes when something needs attention.

2. Scriptability — embedded Lisp config/macro layer

Section titled “2. Scriptability — embedded Lisp config/macro layer”

The Batch-3 brief committed to KEC Lisp as the cart-authoring language (ADR-0001 / ADR-0004). Batch 4 confirms and extends:

  • Pedagogy reference: mal. The 11-step structure is the right scaffold for the KN-86 cart-authoring tutorial. Cite mal directly in the ADR-0001 / ADR-0004 / ADR-0005 prior-art sections.
  • C-implementation reference: BuildYourOwnLisp. The fallback path if Fe ever proves wrong-fit. The mpc parser-combinator library is also worth knowing about independent of the Lisp decision.
  • Structural validation: cl-termbox2. Proof-of-concept that a small embedded Lisp + cell-based terminal renderer + FFI between them composes into a working TUI. KN-86 Fe + NoshAPI + nOSh is the same shape with different specific libraries. Strong direct cite for ADR-0001 / ADR-0005.
  • Plugin manifest: pallet-style. Hand-editable text file (TOML), declarative, version-pinned, manifest-as-source-of-truth (one-directional sync). For the desktop tooling around KN-86 — cart-authoring helpers, emulator debug-overlay extensions — not for the on-device runtime.
  • Data fetching: emacs-request-style. Async HTTP from inside the Lisp scripting layer. Callback shape (:on-success / :on-error), pluggable backend (system curl vs. built-in pure-runtime client), built-in JSON parser, headers and cookies extensible. NoshAPI surface design candidate.
  • Macro recording / Learn mode (l123’s Alt-F5 LEARN + Roro’s RPA lineage). Worth scoping as a v0.2+ REPL affordance — record a sequence of TERM-line verbs, name the macro, replay as a single verb.

3. Interaction model — keyboard-first, expandable, navigable, focusable

Section titled “3. Interaction model — keyboard-first, expandable, navigable, focusable”

Building on l123’s slash-menu model from the Batch-3 synthesis, Batch 4 adds:

  • The keyboard-first philosophy from EXWM and webmacs. Codify: every action a user could conceivably want has a keyboard path. There is no “well, it’s faster with the mouse” backstop. No mouse, ever. Worth a quality-bar doctrine note.
  • Universal verb set commitment. TERM-line verbs (SAVE, LOOK, INVENTORY, SCORE, plus BACK / FORWARD from the navigation history) are deck-wide commitments, available in every cart, not redefinable per cart. EXWM’s shared-namespace lesson, applied to KN-86. Refines promote-list item 15.
  • Expandable-command surface from xiki. The REPL surface (per ADR-0016) should support typing a verb and expanding its output in place, with nested expansions navigable by tree traversal. Promote: Xiki-style expandable text as the REPL’s default interaction.
  • Link-hint navigation from webmacs. Every actionable item on every surface gets a single-character label; the user types the label to act on the item. Promote.
  • Non-destructive navigation history from history.el. Doubly-linked-list with sliding index pointer; BACK and FORWARD traverse without losing entries; killed-buffer-equivalent stale entries skipped. Promote: this is a v0.1 runtime affordance.
  • Focus / zen mode from writeroom-mode. Single keystroke; hides Row 0 and Row 24; narrows content area to a configurable column count; centers horizontally; CIPHER-LINE dims (doesn’t silence). Promote: v0.1 ship list addition.
  • Filter-expression on lists from mop. A tiny query DSL on Row 24 (e.g., phase:active, rep:>50), evaluated in the cart’s KEC Lisp scope. Composes with the existing NetWatch filter-DSL promote item — same destination, two independent witnesses.

4. Aesthetics & polish — themes + boot animation + reveal effect

Section titled “4. Aesthetics & polish — themes + boot animation + reveal effect”

Building on the Batch-3 aesthetic-mode brief (AMBER / AMBER / CIPHER):

  • DOS/CRT aesthetic precedent from BOOTSTRA.386 + NES.css. Both commit to a constrained period-correct palette and stay there. KN-86’s AMBER mode is in the same family of “the constraint is the brand.” Cite both as visual-identity prior art.
  • Boot animation is now a confirmed v0.1 ship-list item. AetherTune is the runtime mechanism reference; BOOTSTRA.386 is the aesthetic commitment reference. Implementation: ANSI-art flyby in AMBER + Press Start 2P + CP437; configurable speed, once_per_session, disable in nosh-config.toml.
  • Reveal animation (no-more-secrets). The Sneakers-style decryption reveal — characters flickering down to their final value column-by-column. Sanctioned as a NoshAPI primitive (canonical contract at software/api-reference/grammars/reveal-styles.md per ADR-0033): (reveal surface :style :char-flicker :duration 1.0 :rate 30 :trail 8). (Earlier inspiration-tier name was (reveal-text …) — superseded by the unified (reveal :style …) surface.) Natural use cases: CIPHER fragment arrival on the OLED; mission contract acceptance on the primary display; a built-in DECRYPT verb response style. Reimplement from first principles — no-more-secrets is GPL, can’t vendor.
  • Hand-drawn / playful exception (loopy). Sanctioned aesthetic mode for deliberately playful carts (a notepad cart, a sketchbook, a systems-thinking cart). Park as an exception to the primary aesthetic, not a default.

5. Runtime patterns — Game Programming Patterns applied

Section titled “5. Runtime patterns — Game Programming Patterns applied”

From game-programming-patterns, the patterns to apply directly to the KN-86 nOSh runtime:

  • Game Loop — decoupled update + render, fixed timestep. Textbook reference for the nOSh main loop.
  • Update Method — each entity / cart / chrome region gets a tick callback. Trivially applies.
  • Command — TERM-line verbs as Command objects (queued, undoable, replayable). Composes with the universal-verb-set commitment + the navigation history.
  • Observer — state changes notify listeners. Cart state → chrome updates; battery → Row 0; new CIPHER fragment → OLED ticker.
  • State — finite-state machines. The cart phase chain (orchestration) is already this pattern; codify explicitly.
  • Dirty Flag — per-region change tracking; only repaint dirty regions. Directly applicable and aligns with tuibox’s per-box dirty bit.
  • Object Pool — reuse fixed allocations. Matches KEC Lisp’s arena discipline.
  • Service Locator — decoupled service access. NoshAPI is exactly this for cart Lisp.
  • Subclass Sandbox — cart authors get a sandboxed API surface; the runtime owns the dangerous parts. NoshAPI’s whole shape.

Cite Nystrom’s patterns by name in the runtime architecture spec.

Composing the Batch-3 and Batch-4 ship-list items:

  1. Application stack: Bubble Tea + Lip Gloss; one binary across device + emulator
  2. AMBER aesthetic mode only at v0.1, but the runtime accepts named modes from nosh-config.toml
  3. Slash-menu / TERM-key universal verb dispatch, with the universal verb set: SAVE, LOOK, INVENTORY, SCORE, BACK, FORWARD (cf. EXWM/webmacs/history.el lineage)
  4. Mode indicator in Row 0 or Row 24 (l123)
  5. Stat-sheet UI pattern in ui-patterns.md
  6. Horizontal-density discipline in screen-design-rules.md
  7. ? universal help overlay (Perkins + webmacs live-docs)
  8. Numbered-tab navigation on the Bare Deck Terminal (NetWatch + octoscope)
  9. CIPHER-LINE PSG visualizer modeled on AetherTune’s FFT pipeline
  10. CRT boot animation as identity branding (AetherTune mechanism + BOOTSTRA.386 aesthetic commitment)
  11. Hardware: QRPπ-derived insert structure in Pelican 1170
  12. Authenticity contract with acceptance transcripts (l123 discipline)
  13. Carousel idle-state for the Bare Deck Terminal (blessed-contrib)
  14. Non-destructive navigation history (history.el)
  15. Focus / zen mode (writeroom-mode)
  16. Reveal animation primitive in NoshAPI (no-more-secrets, reimplemented)
  17. Universal verb set + link-hint single-character labels on every actionable surface (webmacs)
  18. Filter-expression on Row 24 for list surfaces (mop + NetWatch — two witnesses)
  19. Xiki-style expandable REPL (xiki)
  20. Game Programming Patterns cited by name in the runtime architecture spec

KN-86 hardware build brief v5 (Batch 5 synthesis)

Section titled “KN-86 hardware build brief v5 (Batch 5 synthesis)”

Batch 5 is, structurally, smaller than Batches 1–4 — it records one major decision and the supporting evidence around it. But the decision is load-bearing for the entire hardware bring-up.

The KN-86 will use a Ferris Sweep, ordered from holykeebs, with these specific configuration choices:

  • 34-key split layout (replaces canonical-spec 31 keys; the 14-FN / 16-numpad / 1-TERM canonical functions remap onto 34 keys + QMK layers, scoping work TBD)
  • RP2040 controllers (holykeebs default; matches KN-86’s broader RP-family commitment per ADR-0017)
  • Hotswap sockets + diodes (current PCB revision; defers the switch family commitment within Kailh Choc v1)
  • Low-profile (5mm) controller socket headersnot 7.5mm machine headers; the 2.5mm height delta matters in the Pelican-1170 internal volume budget
  • Choc 18×17mm key spacing (matches Kailh Choc v1 + MBK keycap commitment)
  • MBK low-profile keycaps (already canonical)
  • 128×32 OLED on one half for layer/WPM/mode display
  • Optional trackpoint on the other half (open question — pointing device and OLED share one location per half; deferred to order time)
  • 3D-printed case color-matched to the Pelican-1170 cyberdeck enclosure aesthetic

Order target: holykeebs soldered kit tier (SMD pre-populated; switch + plate + case assembly remains ours). See ../prototype/keyboard-decision.md for the full decision and ../prototype/holykeebs-buyers-guide.md for the BOM checklist.

This decision changes two values in the canonical hardware spec / ADR-0024: key count (31 → 34) and PCB path (custom preferred → Sweep decided). Follow-up spec PR aligns Canonical Hardware Spec and ADR-0024 to this decision.

2. Custom-build knowledge is archived, not actioned

Section titled “2. Custom-build knowledge is archived, not actioned”

The custom-keyboard research from this batch and prior work moves to background-knowledge status in ../research/:

  • GOLEM hub — the master custom-keyboard knowledge index; its custom-build content is archived as fallback, its vintage-terminal-keyboard gallery (Reuters ‘85, Tatung ‘84, IBM 5155 Model F, Kaypro 10, Epson HX-20/40, DEC LK-201) is actively used as KN-86 keycap-legend / TUI typography aesthetic reference
  • GOLEM plate manufacturing — DXF/KLE tooling pipeline, plate-material rankings (FR4 / steel / acrylic / aluminum / brass / PLA), 14×14mm switch cutout + 1.5mm plate thickness facts. Archived; Sweep ships with plates.
  • KMK firmware and the GOLEM KMK guide — firmware fallback only; KN-86 uses QMK + Vial. Two specific KMK ideas survive forward: the drag-drop CircuitPython workflow as a UX-target contrast, and the NeoPixel diagnostic color codes as a deck-status LED idea worth scoping for KN-86 hardware.
  • universal60plate — a single concrete example of a downloadable plate DXF; reference artifact only.

Reasoning consolidated from keyboard-decision.md:

  • KMK is on limited life support as of 2026 — its repo states “no longer actively maintained / limited life support”
  • QMK is the dominant ecosystem for the Sweep family — community keymaps, layer idioms, tap-dance/combo conventions
  • Vial provides GUI-editable keymaps layered over QMK — simplifies the 31-canonical-functions → 34-key + layers mapping work without rebuilding firmware on each iteration

The KMK drag-drop iteration UX is still the bar to clear for documenting the KN-86 owner’s firmware-flash experience. Vial closes most of that gap for keymap iteration; cold-flash UX needs careful documentation.

The KN-86 shell aesthetic draws from three Batch-5 references plus the existing Batch-3 QRPπ template:

  • QRPπ (Batch 3) — the structural template: Pelican 1170 + three 3D-printed inserts + unmodified shell
  • Adamow’s cyberdeck STL (Batch 5)silhouette reference; tactical-cyberpunk family, visible fasteners, matte finish
  • TechNIK’s cyberdeck STL (Batch 5)alternate-silhouette reference; different hinge/screen-mount approach; the second witness that triangulates the design space
  • Sweep 3D-printed case (Batch 5)inner housing; color-matched to the Pelican enclosure

Optional v2+ accessory: Stream Deck macropad (Dante) — small auxiliary 6-12 key slab bound to KN-86 verbs.

5. Aesthetic thread: vintage terminals as KN-86 legend/typography reference

Section titled “5. Aesthetic thread: vintage terminals as KN-86 legend/typography reference”

GOLEM’s gallery of vintage terminal/portable keyboards (Reuters 1985, Tatung 1984, IBM 5155 Model F, Kaypro 10, Epson HX-20, Epson HX-40, DEC LK-201) is directly relevant to KN-86’s keycap legends and on-screen TUI typography. The vocabulary of period-correct fonts (Univers, Helvetica, condensed sans-serifs, custom domain typefaces) and the keycap-legend printing methods (silkscreen, dye-sublimation, double-shot) of this era are the prior art for ADR-0022’s locked KN-86 legend manifest.

Ties back to:

The KN-86 Deckline identity sits squarely in this multi-decade lineage.

Per keyboard-decision.md:

  • Key-mapping layer design — how the 31 canonical KN-86 functions (14-FN + 16-numpad + 1-TERM) map onto the Sweep’s 34 keys + QMK layers. Phone-layout numpad cluster from ADR-0016 doesn’t survive split geometry literally; the spirit needs translation.
  • Pointing device commitment — trackpoint vs. TPS43 touchpad vs. Pimoroni trackball vs. none. Hotswap PCB defers the decision.
  • Top-plate aesthetic — slim low-profile is the direction; specific material (FR4, PC, aluminum) and color TBD.
  • Sweep-as-input + Pelican-as-chassis bezel design — keyplate cutout dimensions, depth tolerance, retention strategy. Own bring-up task.

Two follow-up changes to canonical documentation:

  1. Canonical Hardware Specification (kinoshita/CLAUDE.md) — update the Keys row to “34 physical keys (Ferris Sweep split layout, 17 per half), with the canonical 14-FN / 16-numpad / 1-TERM functions distributed across the 34 keys plus QMK layers.” Cite keyboard-decision.md.
  2. ADR-0024 — record the keyboard-PCB-path decision change (custom preferred → Sweep decided; custom moves to background-knowledge). Add Batch-5 citation. Update the controller commitment from “Adafruit KB2040 / Sea-Picro fallback” to “holykeebs RP2040 (per Sweep order).”

These PRs are separate from this Batch-5 reference PR — that’s the right discipline: Batch 5 records the decision in the inspiration corpus; spec PRs align the canonical docs to it.

Batch 6 has two pillars: the screen (ASCII rendering) and the board (Ferris Sweep case + keycaps). Both are smaller in scope than Batches 1–4 but land concrete deliverables — one a project-wide spec, one a hardware-reinforcement pair confirming the Batch-5 decision.

1. The screen — ASCII rendering as a first-class KN-86 capability

Section titled “1. The screen — ASCII rendering as a first-class KN-86 capability”

The central Batch-6 deliverable is the project-wide KN-86 ASCII Effect Spec at effect/ascii-effects.md. It distills react-video-ascii’s prop matrix into the KN-86’s interaction grammar and points at libcaca as the on-device engine reference.

The KN-86 commits to a single project-wide ASCII visual language, codified in the spec:

  • Default character ramp — verbatim from react-video-ascii’s 72-character ramp: `.',-_:!;|\"~+^lr`\/L`>t<v=Tz?icf1{sIxY*jJno}CZyVwmSXRqM$O%#9&NW0Q@
  • Default rendering modecharMode: shape (glyph-silhouette matching, not pure luminance)
  • Default densitynumCols: 150 (between react-video-ascii’s project default of 250 and the KN-86 80-column grid), with carts rendering full-width using 80 instead
  • Three interaction event types:
    • :hover:brighten — the focus cell + a trailing wake brighten relative to baseline (defaults: trailLen=15, brightness=2.0, radius=0.08, duration=1.0)
    • :click:ripple — a brightness ring radiates outward from the commit cell (defaults: speed=3.0, brightness=1.1, duration=1.0)
    • :reveal:random — load-time reveal in random cell order (defaults: type=random, duration=0.4)

Engine: libcaca-shaped pipeline on-device (CPU-only, well-tested, no GPU dependency). The same algorithmic shape composes with asciinator’s halfblock- technique (Batch 3) and no-more-secrets’s decryption-reveal (Batch 4) under a unified (reveal ...) NoshAPI primitive.

Promote items added (extending the matrix’s items 1-57):

  • 58. ASCII-effect grammar shipped in v0.1 — default ramp, charMode: shape, three event types, NoshAPI primitives per the spec
  • 59. (reveal ...) NoshAPI primitive unifies the per-cell character-flicker reveal (no-more-secrets) and the ramp-by-position reveal (react-video-ascii) under one surface with a :style flag
  • 60. ASCII rendering performance budget on the Pi Zero 2 W to be measured during hardware bring-up; expect 15-30 Hz for full-screen renders. Documented in the spec’s open-questions section.

2. The board — Ferris Sweep case + keycaps

Section titled “2. The board — Ferris Sweep case + keycaps”

Batch 6 confirms the Batch-5 keyboard decision (Ferris Sweep over custom) with two concrete reinforcing parts:

  • Ferris Sweep v2 Case (Bubbleology) — free Printables STL, dimensionally specific to the Sweep v2 PCB. Alternative to the holykeebs supplied case — the path if we print our own (likely, since we’re already printing Pelican-1170 inset bezels) or want a custom color/finish coordination with the Pelican shell.
  • Kailh Choc Ergonomic Sculpted Keycaps (mugika9) — free Printables STL, sculpted Choc-spaced caps. Documented alternative to MBK (canonical commitment); operator can swap post-build via the hotswap PCB without changing the order.

The canonical commitments stand:

  • Sweep PCB: ordered from holykeebs per the Buyer’s Guide BOM checklist
  • Sweep case: holykeebs-supplied OR our own Bubbleology print, color-matched to the Pelican shell
  • Keycaps: MBK low-profile (canonical); sculpted Choc as documented alternative

Promote items added:

  • 61. Sweep enclosure decision tracked: print Bubbleology’s v2 case unmodified, or merge it with the Pelican-1170 bezel as a single printed part per half. Decision deferred to bezel-design bring-up.
  • 62. Keycap-swap path via hotswap PCB is sanctioned: MBK is canonical for v0.1; operators can swap to sculpted Choc (or anything Choc-compatible) post-build without firmware or spec change.

The Batch-6 pillars compose with prior synthesis at three specific places:

  • ASCII rendering composes with the boot animation (BOOTSTRA.386 + AetherTune): the boot animation can hand off into the first interactive frame via reveal:diagonal from the new spec.
  • ASCII rendering composes with the CIPHER-LINE OLED visualizer (AetherTune): the OLED gains a (draw-ascii ...) primitive alongside the FFT visualizer surface — cart-driven imagery + system-driven audio visualization, same display surface.
  • Sweep hardware reinforcements compose with the Pelican-1170 bezel design (QRPπ template + Adamow + TechNIK cyberdeck STLs): Bubbleology’s Sweep cases nest inside the Pelican on a printed registration feature on the bezel; the whole assembly reads as one coherent design.

Most screenshots are in place — see screenshots/README.md for the current inventory and any items still outstanding. The per-project markdown files embed the images directly. The prototype-folder shots live at ../prototype/screenshots/; the research-folder shots at ../research/screenshots/.

  • Cite it. When writing a spec or ADR, link to the relevant project file rather than re-justifying a pattern from scratch.
  • Extend it. When another TUI catches the eye, add a file in the same shape and update the matrix.
  • Promote from it. When a pattern earns a real spec, link back from that spec to the inspiration file so the lineage is traceable.
  • Don’t render it. The folder is intentionally outside docs/ and outside the Starlight build. If a pattern needs to reach the rendered reference site, it does so via an ADR or runtime spec — not by moving these files.