Kleidos — Claude Design context bundle#
Kleidos is an open-source hardware password manager (a YubiKey-class personal security device): an encrypted credential vault on an ESP32-S3 that types the owner's passwords into their own computers over BLE, unlocked by a PIN entered on the physical device. The firmware ships on 9 device variants with radically different screens (1.14" 135×240 portrait TFT up to 2.8" 320×240 touch TFT, plus a 200×200 1-bit e-paper) and input hardware (2 buttons, 3 buttons/touch zones, full touchscreens, QWERTY keyboards, a trackball, a jog wheel).
The design brief#
Design the next-generation Kleidos UI from scratch, following the brand
identity (brand-identity.svg) and the design-system tokens/constraints
(design-system/), for every device variant.
Work in this order:
- Brand identity first — confirm or evolve the identity
(
brand-identity.svg,design-system/brand-tokens.md): logo usage, palette (must quantize to RGB565), type ladder, the dark-TFT vs paper-e-ink theme duality, and a coherent icon set (line weight, radii, 12/16/24 px sizes — today's iconography is ad-hoc). - Component mockups second — one spec/mockup per implemented component in
component-inventory.md(header, action bar, tab bar, menu list, popup family, PIN dial, letter carousel, editors, …), in every state (default, selected, disabled, error, empty) and at each density preset. Components are the contract: every screen is composed from them. - Screens per device third — compose the components into every screen of
each variant, driven by that device's real inputs and ergonomics
(
device-inventory.md§2,interaction-model.md§4: 2 buttons vs 3 buttons/touch zones vs full touch vs keyboard+trackball vs jog wheel) and its true screen geometry (device-fronts/). - Handoff last — for each component and screen, final mockups at exact panel resolution (1 px = 1 panel px) so they can be verified pixel-for-pixel against on-device captures (the repo has a screenshot/video harness for this).
Also account for i18n: all UI strings are localized (device ships with a language picker at onboarding); layouts must tolerate translated strings (~+35% width vs English) without truncation.
Per-variant notes:
- The StickS3 (135×240, 2 buttons) is the reference only because it is the
smallest, most constrained target and the UI we can document best. Its
current screens (
screenshots-sticks3/,videos-sticks3/) show what exists today — they are context, not a spec. The redesign is explicitly free to redesign or improve the StickS3 itself, screen by screen, as long as the result stays operable with its 2 buttons and respects its legibility floors. - The interaction grammar in
interaction-model.mddescribes how navigation works today on 2 buttons and how the owner wants it scaled to richer devices: exploit extra inputs (direct touch, typed search, trackball, wheel) rather than emulating the 2-button flow. - Every metric decision (font sizes, touch targets, spacing) must respect the
per-device legibility floors and density presets in
design-system/— these panels run from 141 to 241 PPI and are viewed at ~30 cm. - The CoreInk e-paper gets its own design language within the brand: 1-bit
live rendering, 6-tone static grayscale, ~5 fps bounded animation, zero-power
image retention (see
device-inventory.md§6).
What each resource is#
| Path | What it is |
|---|---|
device-inventory.md |
Verified hardware truth: screens (panel, resolution, active area mm, PPI, orientation), input modalities, case identity, per-device capability notes. Start here. |
interaction-model.md |
The interaction grammar: per-screen button maps on StickS3 (short/long/multi press), timeouts, popup rules, and input-scaling guidance for the other 8 variants. |
component-inventory.md |
The component catalog as factored in the implementation (chrome, content, editors, popup family, foundations) — the checklist for phase 2, with known gaps. |
design-system/ |
tokens.json (colors, type ladder, spacing, per-device density presets) + constraint references (legibility floors, motion envelopes, contrast/accessibility rules, small-display typography, touch targets, UI patterns). |
device-fronts/ |
Photo-verified true-scale front renders of all 9 devices (1 SVG mm = 1 real mm) — the canonical frames for mockups. Contact sheet included. |
screenshots-sticks3/ |
29 live captures of the current StickS3 UI at 2× (onboarding, PIN arc, vault, TOTP, settings, admin, popups). |
videos-sticks3/ |
Real-cadence screen recordings: PIN timing-arc entry, vault navigation, letter-carousel text editor. Motion/feel reference. |
brand-identity.svg/.png |
The Kleidos brand identity sheet — logo, wordmark, color story. Single source of truth for brand. |
brand-logos-color/ |
Multicolor third-party brand-logo atlases (RGB565) rendered per credential row/detail on TFT devices. |
brand-logos-gray/ |
The same logos as 4- and 6-tone grayscale (Bayer-dithered) for the e-paper. |
Hard constraints (non-negotiable)#
- 1 design px = 1 panel px (no @2x rendering on device).
- Colors must quantize cleanly to RGB565; the UI background is near-black.
- Touch targets ≥ the sizes in
design-system/spacing-and-targets.md— but only tdeck / cores3_se / core2_v13 have touch at all. - E-paper: no anti-aliasing on live 1-bit content; ordered dithering only; animation in bounded regions.
- Every screen must be operable with the device's actual inputs (see
interaction-model.md§4) — on 2-button devices everything must be reachable through tap/hold/double-tap of A and B. - Credentials/security: no design may put secret material on screen without an explicit reveal action; destructive actions use hold-to-confirm.