Kleidos Mockups V2#
Last updated: 2026-07-17.
CoreInk is fully supported: the SSD1681/GDEW0154D67 e-paper driver (damage-diff
partial refresh) is hardware-verified, its PlatformIO environments build
-Werror in the fleet matrix, and its v2 screens follow the dedicated CoreInk
design sheet in docs/design/handoff/reference/ (paper theme, 200x200,
ordered-dither grays).
Scope#
Mockups V2 targets the devices that currently have working physical display orientation/color and usable screenshot capture:
| Family | Variants | Screen | Input model | UI density |
|---|---|---|---|---|
| Stick portrait | Plus 1.1, Plus2, StickS3 | 135 x 240 | BtnA + BtnB, optional IMU | tiny |
| Core landscape | Gray, Core2 v1.3, CoreS3 SE | 320 x 240 | 3 face/touch-button zones | comfort |
| T-Deck | T-Deck | 320 x 240 | QWERTY, trackball, touch | comfort |
| Cardputer ADV | Cardputer ADV | 240 x 135 | QWERTY + dedicated arrows + side button | compact keyboard |
Cardputer navigation should be treated as a real keyboard flow: arrow keys move
focus, Enter/Space activate, and Backspace/Esc/Left go back. On the current
Cardputer ADV keyboard the arrows are dedicated physical keys; serial aliases
KEY UP, KEY DOWN, KEY LEFT, and KEY RIGHT remain available for
screenshot automation.
Typography Direction#
The firmware currently uses two rendering paths:
- Color (RGB565) panels use
display::Fontroles backed by the direct-HAL text renderer. Anti-aliased A4 atlases (generated viascripts/fonts/convert_fonts.py) are served for named font sizes; the bitmap renderer is the fallback when a size is not yet generated. - The monochrome e-paper panel (CoreInk) renders the same AA Inter / JetBrains Mono atlases through an 8x8 Bayer ordered dither of the glyph coverage (plus a weight bias), sized to the e-ink legibility floor; the local bitmap renderer remains only as the last-resort fallback for boards missing an atlas.
The firmware integration decision is documented in font-integration.md: development builds use real Montserrat metrics now, then generate optimized subsets later from supported-language UI strings and printable ASCII data.
V2 keeps the role names stable and defines target sizes per family:
| Role | Stick 135x240 | Core/T-Deck 320x240 | Cardputer 240x135 | Usage |
|---|---|---|---|---|
SMALL |
8 px | 10-12 px | 8 px | action bars, captions |
BODY |
10-12 px | 12-14 px | 10 px | rows, labels, hints |
HEADING |
14-16 px | 16-20 px | 12-14 px | titles, current screen |
LARGE |
28-36 px | 36-48 px | 22-28 px | PIN digit, primary code |
MONO |
8-12 px | 12-18 px | 8-12 px | TOTP, counts, fingerprints |
Language stress strings to test every screen before firmware changes:
| Key | en | es | fr | de | it |
|---|---|---|---|---|---|
| Welcome title | Welcome | Bienvenido | Bienvenue | Willkommen | Benvenuto |
| Continue | Continue | Continuar | Continuer | Weiter | Continua |
| Delete | Delete | Borrar | Supprimer | Loeschen | Elimina |
| Settings | Settings | Ajustes | Reglages | Einstellungen | Impostazioni |
| Lockout | Try again in 45s | Reintenta en 45s | Reessayez dans 45s | Erneut in 45s | Riprova in 45s |
Files#
- device-screens-v2.svg: first cross-device layout sheet with concrete display viewBoxes and input affordances.
- device-mechanics-v2.svg: mechanical frame and onboarding-callout sheet based on official CAD/spec envelopes.
- device-mechanics-cad.md: official CAD, dimensions, and mechanical references for device frames and onboarding button/key animations.
Firmware Follow-Up#
Done in this pass:
- Added the first per-family direct-renderer font-role mapping in
text_renderer.cpp, keeping the
public
display::Fontenum stable. - Added Cardputer dedicated arrow-key semantics to the firmware input model so
V2 mockups can assume directional focus movement instead of only
J/Kaliases. - Added the first mechanical frame/onboarding-callout sheet so firmware UI screens can be aligned to physical controls before animation work.
Next firmware steps:
- Replace screen-local brand mark geometry with a shared helper for all direct-HAL screens.
- Add screenshot-driven visual checks per active device family before changing interaction-heavy screens.
- Keep CoreInk in the compile/test matrices (its e-paper driver is
hardware-verified; the board builds
-Werroralongside the rest of the fleet).