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.
Batch 1 — TUI references
Section titled “Batch 1 — TUI references”| Project | Tech | One-line | File |
|---|---|---|---|
| PulseDeck | Rust / Ratatui | Retrowave terminal radio player with a cassette-deck UI. | pulsedeck.md |
| Gloomberb | TypeScript / OpenTUI | Bloomberg-style finance terminal with a mnemonic command bar. | gloomberb.md |
| NetWatch | Rust | Network-forensics TUI with a nine-tab numbered dashboard. | netwatch.md |
| Golazo | Go / Charm stack | Live football-match TUI built around a master/detail + headline-scoreline pattern. | golazo.md |
| Perkins | Go | Braille-character pixel-art editor with sub-cell resolution and a ? help overlay. | perkins.md |
| BAE | Python | Minimal 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 |
| OpenTUI | Zig core + TS bindings | TUI framework (the substrate for Gloomberb and OpenCode), evaluated as a potential KN-86 foundation. | opentui.md |
| Zork | MDL (Lisp) → Z-machine bytecode | The 1980 Infocom interactive-fiction archetype — the historical precedent for Lisp-authored carts on a portable bytecode VM. | zork.md |
| Vehicle TUI Concept | Anonymous community concept image | TUI 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)”| Reference | Type | One-line | File |
|---|---|---|---|
| Penkesu Computer | Open-source hardware | Pi Zero 2 W + 1280×400 ultrawide + 48-key ortholinear Kailh Choc handheld in a GBA-SP-hinged off-white clamshell. | penkesu.md |
| The Cyberdeck Cafe | Community gallery / blog | The cyberdeck-builder scene’s de facto moodboard — neon-on-dark, rugged panels, “Surviving the Sprawl” lifestyle posts. | cyberdeck-cafe.md |
| Casio Organizer Retrofit | Hackaday article / build | 1995 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 Models | Pixel-art / palette reference | Imgur album of animated OS-themed Python-TUI palette demos. Named palettes, ANSI grids, color-picker UIs, amber-on-black. | os-models.md |
Batch 3 — TUI apps & retro software
Section titled “Batch 3 — TUI apps & retro software”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/.
Contemporary TUI apps
Section titled “Contemporary TUI apps”| Reference | Tech | One-line | File |
|---|---|---|---|
| rs-pug | Rust / Ratatui | YouTube/SoundCloud/local music player with Lua plugins, 5 JSON themes, SQLite storage, Smart Queue autoplay. | rs-pug.md |
| audium | Rust / Ratatui | Keyboard-first music player; 15 themes with live preview + transparency, plain-JSON portable library, LRC lyrics overlay. | audium.md |
| cliamp | Go / Bubble Tea | Winamp-inspired terminal music player with real spectrum visualizer, parametric EQ, Lua plugins. | cliamp.md |
| AetherTune | Rust / Ratatui | Internet 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 |
| octoscope | Go / Bubble Tea | Tabbed 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)”| Reference | Era | One-line | File |
|---|---|---|---|
| l123 | Modern (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 |
| VisiCalc | 1979 | The original spreadsheet — keyboard-driven grid UI archetype. | visicalc-archive.md |
| Sid Meier’s Civilization | 1991 | Dense 16-color DOS strategy UI — information-density discipline. | civilization-1991.md |
| Gorillas QBASIC | 1990 | Bundled with MS-DOS QBASIC; chunky-DOS-game aesthetic + “source code shipped with the app” learnability model. | gorillas-qbasic.md |
Retro music-hardware aesthetic
Section titled “Retro music-hardware aesthetic”| Reference | Type | One-line | File |
|---|---|---|---|
| 4TRK | Compact desktop music workstation | Tracker / 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 Kit | DIY hardware synth | TB-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.
| Reference | Type | One-line | File |
|---|---|---|---|
| My Cyberdeck (Adamow) | Free Printables STL | Tactical-cyberpunk silhouette STL; reference for the KN-86 Pelican-1170 bezel insert aesthetic. | cyberdeck-adamow.md |
| TechNIK Cyberdeck (Nik Reitmann) | Free Printables STL | Alternate-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 STL | Auxiliary 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.
| Reference | Era / Publisher | One-line | File |
|---|---|---|---|
| NFL Challenge | 1985 / Xor Corporation | Earliest 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 Football | 1991 / Micro Sports | Refined 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 I | 1988 / SSI/TSR | Menu-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.
Data / grid / table
Section titled “Data / grid / table”| Reference | Tech | One-line | File |
|---|---|---|---|
| csvlens | Rust | less-style CSV viewer — read-only table rendering + selection-mode cycling + frozen columns. | csvlens.md |
| sc-im | C / ncurses + Lua | Vim-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 |
| sheetsui | Rust / Ratatui | Console spreadsheet (sc-im-inspired) — the clean engine/UI split reference (ironcalc engine under a Ratatui front-end). | sheetsui.md |
| VisiData | Python | The fullest terminal tabular multitool — typed-column indicators, sheet-stack navigation, transformation pipeline. | visidata.md |
| logradar | Rust | Multi-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 |
Productivity / calendar
Section titled “Productivity / calendar”| Reference | Tech | One-line | File |
|---|---|---|---|
| caps-log | C++ | Terminal journaling on a calendar — the cleanest multi-panel calendar layout + six named border styles. | caps-log.md |
| calcure | Python | Calendar + task TUI — month-grid + task-panel split, icon-from-keyword convention. | calcure.md |
| chronos | Go / Huh | Vim calendar with a zoomable intraday time-grid — the batch’s density-control reference (zoom-as-row-semantics) + form-based event editing. | chronos.md |
| clipse | Go / Bubble Tea | Clipboard-manager TUI — the list + preview-pane + top-filter pattern and a clean JSON theme schema. | clipse.md |
| mynav | Go | Workspace/session navigator — two-panel navigator + live-preview launcher + breadcrumb hierarchy. | mynav.md |
| mcfly | Rust | Neural-ranked shell-history search — the full-screen ranked-result overlay (the command-palette pattern). | mcfly.md |
Readers / browsers
Section titled “Readers / browsers”| Reference | Tech | One-line | File |
|---|---|---|---|
| hackernews-TUI | Rust | Terminal Hacker News browser — the cleanest hierarchical drill-in/back-out nav + link-overlay reading. | hackernews-tui.md |
| newsboat | C++ | Terminal RSS/Atom reader — 3-level list→item→reader hierarchy, unread badges, filter-query language. | newsboat.md |
| w3m | C | Text-mode web browser + pager — HTML→text table/frame rendering in a constrained grid; inline-image protocol concept. | w3m.md |
| browsh | Go / Firefox | Text-mode browser rendering full web pages — the half-block pixel-rendering reference (brightness per half-cell). | browsh.md |
| bookokrat | Rust | Terminal EPUB/PDF/DJVU reader — split library/TOC + reader layout, TOC-tree navigation, zen/focus mode. | bookokrat.md |
Editors
Section titled “Editors”| Reference | Tech | One-line | File |
|---|---|---|---|
| micro | Go / Lua | Modern terminal editor — strongest reference for the context-sensitive bottom key-hint bar + a clean namespaced Lua plugin layer. | micro.md |
| Microsoft Edit | Rust | DOS-Editor homage — the dropdown-menu-bar / dialog system AND a from-scratch immediate-mode framebuffer TUI on a plain C ABI. | microsoft-edit.md |
| maki | C | Minimal modal editor — the NAV/INS mode toggle and an explicitly battery-conscious design thesis. | maki.md |
| nino | C | Tiny kilo-lineage editor — a minimal-C core that grew tabs/splits/file-explorer without losing the kilo shape. | nino.md |
| orbiton | Go | Config-free VT100-limited editor — hard terminal-capability constraints, a “portal” cross-file cut/paste primitive, a built-in mini-game. | orbiton.md |
| durdraw | Python | ASCII/ANSI/Unicode art and animation editor — the strongest model for a KN-86 cart-art authoring tool (canvas + ░▒▓█ palette + frame timeline). | durdraw.md |
Games / files / windowing
Section titled “Games / files / windowing”| Reference | Tech | One-line | File |
|---|---|---|---|
| Brogue: Community Edition | C | Minimalist ASCII roguelike — the single most valuable single-color reference in the corpus (glyph/inversion/shading grammar). | brogue-ce.md |
| PHP Terminal GameBoy Emulator | PHP | Full 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 Commander | C / ncurses | The canonical dual-panel file manager — the reference for KN-86’s F-key bar (Row 74) and dual-panel layout. | mc.md |
| desktop-tui | Rust | A TUI “desktop environment” with overlapping windows + taskbar — window-management reference for single-color chrome. | desktop-tui.md |
| tvterm | C++ / Turbo Vision | Terminal-emulator-in-terminal — the canonical retro windowed-TUI framework study. | tvterm.md |
| maze-tui | Rust | Maze build/solve visualizer — box-drawing wall-style catalog + step/speed animation controls. | maze-tui.md |
Audio / Toneline
Section titled “Audio / Toneline”| Reference | Tech | One-line | File |
|---|---|---|---|
| line | C++ / Lua-LPeg | CLI 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 |
| strudel | JavaScript (TidalCycles port) | Browser live-coding pattern language — patterns are pure functions of cycle-time; the shipping proof that “the sequencer language IS KEC Lisp.” Combinator-algebra companion to line’s entry grammar. (2026-07-11 addendum; AGPLv3, paradigm-only.) | strudel.md |
| cmus | C | Console music player — numeric view-switching, compact status bar, library/queue separation. | cmus.md |
| upiano | Python / Textual | A playable piano keyboard in the terminal — the Toneline piano/keyboard widget + slider components reference. | upiano.md |
| waves | Go | TUI music player — F-key multi-view switching, library hierarchy, queue + undo/redo. | waves.md |
| asak | Rust | Cross-platform audio recorder/player — mode-selector splash, waveform-with-playhead, live-monitor recording workflow. | asak.md |
| valveFM | Go | Vintage FM internet-radio TUI — the tune-dial / tuner UI metaphor for audio controls. | valvefm.md |
Addendum — typing / on-screen-keyboard
Section titled “Addendum — typing / on-screen-keyboard”| Reference | Tech | One-line | File |
|---|---|---|---|
| Typeinc | Python / ncurses | Typing-speed game whose signature affordance is an on-screen keyboard widget mirroring the physical keys — the A4 (draw-keyboard) source. | typeinc.md |
| typing-game-cli | Node | Typing game with a race-against-a-fast-robot mode — the ghost-competitor mechanic + a KN-86 typing-game cart concept. | typing-game-cli.md |
Batch 9 — Retro economy / corruption sim (2026-07-01)
Section titled “Batch 9 — Retro economy / corruption sim (2026-07-01)”A single deep-dive capture anchoring the KN-86 market-sim cart: a genuine 1988 Antic stock-market sim whose corruption / influence layer (bribes → letters of introduction → insider tips, plus a hackable Grand Jury exposure meter) maps natively onto the deck’s world. Sourced from the game’s own ENTRE.DOC.
| Reference | Era / Publisher | One-line | File |
|---|---|---|---|
| Entrepreneur Jungle | 1988 / Antic (William Austin) | Billion-dollar stock-market sim whose real hook is an influence/corruption economy — bribes, insider tips, and a Grand Jury exposure meter you can hack away. Design anchor for the KN-86 corporate-corruption market-sim cart. | entrepreneur-jungle.md |
Batch 10: Gameplay-mechanics mining (2026-07-16)
Section titled “Batch 10: Gameplay-mechanics mining (2026-07-16)”The first capture aimed squarely at gameplay: 21 titles from 1970 to 1988, mined for the patterns, mechanics, and concepts to carry into the KN-86 minigames and carts. Earlier batches asked what the device should feel like; this one asks what each genre already worked out that a Lisp cart can reuse. The set runs from the first timesharing sims and conversational bots (PDP-10, PLATO) through the play-by-mail and BASIC-listing era to the mature Infocom and UK text-adventure scene. Each entry records what the title is, how it works (from primary sources where they survive: manuals, source listings, oral histories, an RFC), the concept-level mechanic to reuse, and a light note on KN-86 fit. The cross-cutting “which mechanic goes in which cart” pass is a follow-on; per-entry applicability is kept deliberately shallow.
Four threads run strongest through the set: a machine-voice lineage for CIPHER (Ecala, PARRY, Cyborg), a hacking-sim bullseye for the deck’s intrusion fantasy (System 15000, Dunnet), authoring-engine precedents for the cart model (Wander, PAW), and economy loops for the market carts (Star Trader, Drug Wars, alongside the Batch 9 Entrepreneur Jungle). Several entries cross-link to Zork and to runtime docs and ADRs already in the tree.
Applicability: each mechanic above is folded into the relevant existing cart spec under a “Batch 10 mechanics to fold in” section (module specs).
Machine voices & conversational models
Section titled “Machine voices & conversational models”| Reference | Year / Platform | Mineable idea | File |
|---|---|---|---|
| Ecala | 1971-73 / PDP-10 | Early ELIZA-descendant chatbot that prods the user to disclose more; a small keyword-and-canned-line conversational voice. | ecala.md |
| PARRY | 1972 / PDP-10 | A conversational voice driven by hidden numeric affect (anger, fear, mistrust) that shapes and escalates its replies. | parry.md |
| Cyborg | 1981 / Apple II | A machine co-narrator speaking in first-person plural, turning parser limits into in-fiction dialogue. Direct CIPHER precedent. | cyborg-berlyn.md |
Economies & trading loops
Section titled “Economies & trading loops”| Reference | Year / Platform | Mineable idea | File |
|---|---|---|---|
| Star Trader | 1974 / BASIC (PCC) | The founding dynamic-price, multi-node trading economy: local supply/demand pricing, arbitrage, and bounded haggling. | star-trader.md |
| Drug Wars | 1984 / MS-DOS | The canonical turn-limited arbitrage loop under a hard day cap, with a compounding loan-shark debt clock. Origin of the Dopewars lineage. | drug-wars.md |
Hacking & systems intrusion
Section titled “Hacking & systems intrusion”| Reference | Year / Platform | Mineable idea | File |
|---|---|---|---|
| System 15000 | 1984 / ZX Spectrum, C64 | The first hacking sim: a fictional network cracked node by node, each system yielding the next one’s credentials, under a police trace. | system-15000.md |
| Dunnet | 1982; Emacs 1992 | An adventure embedded in the editor whose second act is a “you are inside the network” hacking world with a simulated Unix shell. | dunnet.md |
| Mission: Mainframe | 1987 / DOS | An office highrise as a 30-floor randomly generated grid, where an encounter resolves six ways and only one of them is combat, and the win condition is carrying a fact back out. | mission-mainframe.md |
Simulation, governance & tactical models
Section titled “Simulation, governance & tactical models”| Reference | Year / Platform | Mineable idea | File |
|---|---|---|---|
| The Pollution Game / King | 1970 / DEC BASIC | A pollution-vs-growth feedback economy under a fixed term, where the tempting cash move slowly poisons renewable income; several distinct fail states. | pollution-game.md |
| Nuclear Destruction | 1970 / play-by-mail | A computer refereeing every player’s secret orders and resolving them simultaneously; latency-tolerant batched turns. | nuclear-destruction.md |
| Baseball | 1971 / PDP-10 | The manager framing (call the play, the machine resolves and narrates) plus an opposed-probability contest as a reusable “two rated actors face off” primitive. | daglow-baseball.md |
| Trek-80 | 1977 / Sol-20 | Real-time tactical grid combat with a coarse-plus-detailed dual map and a fixed power budget split across drives, sensors, weapons, and shields. | trek80.md |
| Hidden Agenda | 1988 / Mac, DOS | A consequence-driven faction simulation run through a dossier-and-interview UI, with delayed systemic outcomes and a retrospective verdict ending. | hidden-agenda.md |
Authoring engines & shared worlds
Section titled “Authoring engines & shared worlds”| Reference | Year / Platform | Mineable idea | File |
|---|---|---|---|
| Wander | 1974 / mainframe | Arguably the first adventure authoring engine: one interpreter, many worlds held as separate data files, hot-swappable at load. | wander.md |
| PAW (Professional Adventure Writer) | 1986 / ZX Spectrum | A full IF authoring kit from tables, flags, a vocabulary database, and a parser. A precedent for the cart grammar plus SDK. | paw-adventure-writer.md |
| Moria (PLATO) | 1975 / PLATO | One shared, persistent, procedurally generated dungeon many players inhabit at once; first-person wireframe, cooperation built into the loop. | moria-plato.md |
Interactive-fiction craft & adversarial UI
Section titled “Interactive-fiction craft & adversarial UI”| Reference | Year / Platform | Mineable idea | File |
|---|---|---|---|
| Brand X / Philosopher’s Quest | 1979 / Cambridge mainframe | Hard deterministic puzzle IF where each fatal trap teaches one rule, and a tight carry limit forces commitment. | brand-x.md |
| Local Call for Death | 1979 / TRS-80 | Story-forward IF where conversation is the core verb and a “prove it” endgame is decoupled from an obvious whodunit. | local-call-for-death.md |
| Corruption | 1988 / Magnetic Scrolls | A corporate-crime whodunit on a real-time clock (one move is one minute), scheduled NPCs, and evidence collection that reverses a frame. | corruption.md |
| Border Zone | 1987 / Infocom | A real-time clock layered onto a turn parser (the world advances while you type), with player-tunable pace and rotating perspectives. | border-zone.md |
| The Prisoner | 1980 / Apple II | The interface as adversary: a game that fakes its own crash and weaponizes the operator’s trust in the system; a secret you must not leak. | the-prisoner.md |
| Bureaucracy | 1987 / Infocom | A hidden blood-pressure meter driven by player friction, with frustration built as an intentional anti-usability system. | bureaucracy.md |
Batch 11: Peer-product authoring platform (2026-07-23)
Section titled “Batch 11: Peer-product authoring platform (2026-07-23)”A single deep capture of how the closest peer product lets other people make software for it. Earlier batches studied what the KN-86 should feel like and what its carts should do; this one studies the developer-facing half of the product, using the one company that has shipped and iterated that problem for four years on comparable hardware. Two tracks in one entry: Panic’s Lua/C SDK (project layout, pdc, the .pdx bundle, the single playdate.update() loop, opt-in CoreLibs, the API surface, the 75/25 Catalog terms) and Pulp, their browser click-and-place editor whose games ship as a small interpreter plus a table of objects it walks. Both map closely onto our own cart stack (ADR-0005, ADR-0006, kn86cart, the ui/ kit). The Pulp Audio Runtime is the shipped precedent for making the tracker workbench’s output usable from a cart.
| Reference | Tech | One-line | File |
|---|---|---|---|
| Playdate SDK + Pulp | Lua 5.4 + C; Pulp is browser JS | The peer product’s authoring platform, both tracks: a Lua/C SDK compiled by pdc into a .pdx, and a click-and-place browser editor whose 25×15-tile games run as an interpreter walking a JSON object table. Direct structural comparison to our cart stack. (SDK License 1.0, paradigm-only.) | playdate-sdk-pulp.md |
Batch 12: The Ahl BASIC corpus + the cart-mapping pass (2026-07-25)
Section titled “Batch 12: The Ahl BASIC corpus + the cart-mapping pass (2026-07-25)”Three David Ahl / Creative Computing anthologies read end to end (28 games and 2 design essays), mined from the printed listings and sample runs rather than from secondary descriptions. The corpus matters because its constraints match the deck’s: keyboard-only, single-screen, monochrome-teletype games with no graphics, built in very little memory, where every mechanic had to earn its place in text alone.
This batch also delivers the pass Batch 10 deferred. Batch 10 closed by noting that “the cross-cutting which mechanic goes in which cart pass is a follow-on”; ../synthesis-basic-games.md is that pass, run across all 17 cartridges plus the concept carts rather than the launch four. Every mapping was checked against the actual cart spec before being recorded, which killed or narrowed roughly half of them; the rejections are kept in the synthesis §6 because they save the next pass from re-proposing them. See that doc for the Batch 11 synthesis.
| Reference | Year | Mineable idea | File |
|---|---|---|---|
| BASIC Computer Games | 1978 | 17 games: the hidden-target search family across four feedback fidelities; a shot budget derived from the search space (Depth Charge’s log2); a whole galaxy as one packed integer (Super Star Trek); the economy ancestors (Hammurabi, Stock Market); the generative trio (Amazing’s spanning-tree maze carve, Life’s in-place simultaneous update, Poetry’s slot grammar); a provably optimal opponent (Nim). | basic-computer-games.md |
| More BASIC Computer Games | 1979 | 6 games: a fifth and higher feedback fidelity (Blackbox’s symbolic three-outcome ray, computed from local three-cell adjacency); the moving-target hunt with a shadowing defender (Convoy); a living map whose hazards kill both sides (Seabattle); instrument quality as a resource (depth-gated sonar fog). | more-basic-computer-games.md |
| Big Computer Games | 1984 | 5 games + the two adventure-design essays: an IF data model (rooms as a graph, objects as location-tagged records where a sentinel means “nowhere yet,” dependency-chain puzzles) and a fairness specification derived from player behavior. Plus one dial wired to several consequences and deliberately fuzzy instruments (Trucker), spatial arbitrage (Star Merchant), and a deterministic resource race (Survival). | big-computer-games.md |
Four threads run strongest: Poetry’s group cycle as the passage-level generator Null’s headline mechanic is missing; Blackbox as an untimed chosen-plaintext oracle for Cipher Garden; the adventure essays as the first source to give the long-open narrative-cart template question a size and a build order; and Trucker’s fuzzy instruments as the single cheapest change in the corpus. The synthesis also records the spec conflicts and gaps the checking pass turned up.
Applicability: Josh assigned the corpus to destinations himself in the kn86-inspo workbench. The result is two documents: cart-inspiration-map.md (every cartridge, first-party program, and sister product with its assigned sources) and unplaced.md (what is still to place, the non-cart surfaces, and what was dropped). Each destination doc also carries its own Inspirations section, and each entry here carries a Serves: line, so the link reads from either end.
Sister-product research
Section titled “Sister-product research”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.
| Reference | Target product | One-line | File |
|---|---|---|---|
| Strat-O-Matic CFB | KN-90S Statline | Sports-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 Statline | Tactical 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.
Synthesis
Section titled “Synthesis”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:
- 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.
- 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. - 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. - 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.
- 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.
- 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.
- 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.
North stars
Section titled “North stars”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).
- 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.
- 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.
- 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. - 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. - 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.
- 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.
- Gloomberb (Batch 1) — the dense multi-pane discipline and the mnemonic command bar. The TERM key should feel like Gloomberb’s
Ctrl+P. - 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. - 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. - 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). - 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. - 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 innosh-config.toml. - 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. - 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). - 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. - 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. - 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. - 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
amberCRT 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 the 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.
Color story and aesthetic-mode direction
Section titled “Color story and aesthetic-mode direction”- Canonical default: amber
#E6A020on 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.pngin 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 isos-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 onos-models-4.png(six-row two-column with asaverow). - 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.
Form factor, materials, and silhouette
Section titled “Form factor, materials, and silhouette”- 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.
Typography
Section titled “Typography”- 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.
Data-density discipline
Section titled “Data-density discipline”- 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.)
Tie-back to Batch 1 TUI patterns
Section titled “Tie-back to Batch 1 TUI patterns”The aesthetic / hardware direction above lines up directly with several already-noted Batch 1 patterns. The pairs to ship together:
| Batch 1 pattern | Batch 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 |
What should ship in v0.1
Section titled “What should ship in v0.1”A tight reading of the brief, restricted to what’s plausibly v0.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). - Stat-sheet UI pattern documented in
ui-patterns.mdwith three rules + worked example. - Horizontal-density discipline added to
screen-design-rules.mdas “Layout proportions” — “spend the budget across, not down.” - 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.
1. Software north star
Section titled “1. Software north star”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,Escback, 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
tcycler with live preview (AetherTune) and the 4TRK / OS Models color-picker UI for the editor. - CRT-theme lineage directly cited from octoscope’s
phosphorandamberthemes — KN-86’sAMBERmode 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 (1–5 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.
2. Hardware prototype path
Section titled “2. Hardware prototype path”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.
3. v0.1 ship list (consolidated)
Section titled “3. v0.1 ship list (consolidated)”A tight reading of the brief, restricted to what’s plausibly v0.1:
- Application stack: Bubble Tea + Lip Gloss; one Bubble Tea binary running on the device VT and the desktop emulator equivalently.
- AMBER aesthetic mode only, but the runtime accepts named modes from
nosh-config.toml— no hardcoded palette constants outside the mode registry. - Slash-menu (TERM key) entered universal verb dispatch, with the meta-command verb set (
SAVE,LOOK,INVENTORY,SCORE) from the Batch-1 Zork synthesis. - Mode indicator in Row 0 or Row 24.
- Stat-sheet UI pattern documented in
docs/software/cartridges/authoring/ui-patterns.mdwith three rules + worked example. - Horizontal-density discipline added to
docs/software/cartridges/authoring/screen-design-rules.md— “spend the budget across, not down.” ?universal help overlay as a runtime-internal affordance (Perkins).- Numbered-tab navigation on the Bare Deck Terminal mapped to the phone numpad (NetWatch + octoscope).
- CIPHER-LINE PSG visualizer modeled on AetherTune’s FFT pipeline.
- CRT boot + power-off animations as identity branding (AetherTune).
- Hardware prototype: QRPπ-derived insert structure seated in Pelican 1170 foam, three printed panels at minimum, no case modification.
- Authenticity contract for the runtime, written in
docs/software/runtime/and backed by acceptance transcripts underruntime/tests/(l123’s discipline applied to KN-86).
KN-86 build brief (Batch 4 synthesis)
Section titled “KN-86 build brief (Batch 4 synthesis)”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):
| Widget | Source | Use case |
|---|---|---|
| Sparkline | termui + blessed-contrib | Battery curve in Row 0, reputation history in cart surfaces, FFT band history on CIPHER-LINE |
| Gauge | termui + blessed-contrib | Mission progress, cart resource bars, battery |
| Braille canvas | termui | Sub-cell rendering escape hatch (cf. Perkins precedent) |
| Table | termui + Lip Gloss | Stat-sheet UI pattern (per the Batch-2 data-density discipline) |
| Tabs | termui | Bare Deck Terminal tab strip |
| Plot (line/scatter) | termui | Cart-content time-series surfaces |
| LCD display | blessed-contrib | Big-glyph headline identity object (cf. Golazo) |
| Rolling log viewer | blessed-contrib | Mission event log, dispatch transmissions, CIPHER history |
| Carousel (standout) | blessed-contrib | Bare 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
mpcparser-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, plusBACK/FORWARDfrom 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;
BACKandFORWARDtraverse 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
AMBERmode 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,disableinnosh-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.mdper 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-inDECRYPTverb 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.
6. v0.1 ship list — extended
Section titled “6. v0.1 ship list — extended”Composing the Batch-3 and Batch-4 ship-list items:
- Application stack: Bubble Tea + Lip Gloss; one binary across device + emulator
- AMBER aesthetic mode only at v0.1, but the runtime accepts named modes from
nosh-config.toml - Slash-menu / TERM-key universal verb dispatch, with the universal verb set:
SAVE,LOOK,INVENTORY,SCORE,BACK,FORWARD(cf. EXWM/webmacs/history.el lineage) - Mode indicator in Row 0 or Row 24 (l123)
- Stat-sheet UI pattern in
ui-patterns.md - Horizontal-density discipline in
screen-design-rules.md ?universal help overlay (Perkins + webmacs live-docs)- Numbered-tab navigation on the Bare Deck Terminal (NetWatch + octoscope)
- CIPHER-LINE PSG visualizer modeled on AetherTune’s FFT pipeline
- CRT boot animation as identity branding (AetherTune mechanism + BOOTSTRA.386 aesthetic commitment)
- Hardware: QRPπ-derived insert structure in Pelican 1170
- Authenticity contract with acceptance transcripts (l123 discipline)
- Carousel idle-state for the Bare Deck Terminal (blessed-contrib)
- Non-destructive navigation history (history.el)
- Focus / zen mode (writeroom-mode)
- Reveal animation primitive in NoshAPI (no-more-secrets, reimplemented)
- Universal verb set + link-hint single-character labels on every actionable surface (webmacs)
- Filter-expression on Row 24 for list surfaces (mop + NetWatch — two witnesses)
- Xiki-style expandable REPL (xiki)
- 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.
1. Keyboard = Ferris Sweep, not custom
Section titled “1. Keyboard = Ferris Sweep, not custom”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 headers — not 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.
3. Firmware: QMK + Vial, not KMK
Section titled “3. Firmware: QMK + Vial, not KMK”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.
4. Enclosure north stars
Section titled “4. Enclosure north stars”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:
- Batch 2 Casio Organizer Retrofit — same vintage-terminal-typography family
- Batch 3 4TRK + octoscope’s
amberCRT theme — period-correct retro aesthetic commitment - Batch 4 BOOTSTRA.386 + NES.css — the DOS / 8-bit-era typography precedents
The KN-86 Deckline identity sits squarely in this multi-decade lineage.
6. Open questions tracked from this batch
Section titled “6. Open questions tracked from this batch”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.
7. Spec PRs this decision implies
Section titled “7. Spec PRs this decision implies”Two follow-up changes to canonical documentation:
- 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. - 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.
KN-86 build brief v6 (Batch 6 synthesis)
Section titled “KN-86 build brief v6 (Batch 6 synthesis)”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 mode —
charMode: shape(glyph-silhouette matching, not pure luminance) - Default density —
numCols: 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:styleflag - 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.
3. Pillars compose
Section titled “3. Pillars compose”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:diagonalfrom 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.
4. North stars this batch
Section titled “4. North stars this batch”- react-video-ascii — the on-screen ASCII look + interaction-grammar reference
- libcaca — image→ASCII engine reference for the on-device implementation
- Ferris Sweep v2 Case (Bubbleology) — the printable case for the chosen keyboard
- Sculpted Choc keycaps (mugika9) — the touch, as a documented alternative to MBK
Screenshots
Section titled “Screenshots”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/.
What to do with this folder
Section titled “What to do with this folder”- 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.