[READ-ONLY] Mirror of https://github.com/jmrplens/kleidos. Kleidos — Hardware BLE password manager for ESP32-S3 (M5StickC Plus2, StickS3, M5Stack Gray, T-Deck, Cardputer) jmrplens.github.io/kleidos/
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 3 files
README.md

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::Font roles backed by the direct-HAL text renderer. Anti-aliased A4 atlases (generated via scripts/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::Font enum stable.
  • Added Cardputer dedicated arrow-key semantics to the firmware input model so V2 mockups can assume directional focus movement instead of only J/K aliases.
  • Added the first mechanical frame/onboarding-callout sheet so firmware UI screens can be aligned to physical controls before animation work.

Next firmware steps:

  1. Replace screen-local brand mark geometry with a shared helper for all direct-HAL screens.
  2. Add screenshot-driven visual checks per active device family before changing interaction-heavy screens.
  3. Keep CoreInk in the compile/test matrices (its e-paper driver is hardware-verified; the board builds -Werror alongside the rest of the fleet).