Skip to content

Improve the TFT display dashboard layout and widgets #61

Description

@angeloINTJ

What

Design improvements for the 320×240 TFT dashboard — the physical screen on the device.

Why

The TFT is the face of SIMUT. A better layout, clearer widgets, or smoother transitions make the device feel significantly more polished. Pure design/prototyping task — submit mockups without writing C++. The maintainer helps with implementation.

⚠️ Hard constraints (corrected)

  • 320×240 pixels, 16-bit RGB565. No alpha blending, no gradients, limited gamut — colors shift versus your monitor.
  • Safe area is 4..315 × 4..235. The outer 4 px on every edge is frame, not canvas. Content placed there is clipped on the panel even though it looks fine in a mockup, and /api/screenshot reads through that offset — so a screenshot can look correct while the panel does not. Design inside 312×232.
  • Resistive touchscreen (XPT2046). Touch targets ≥ 30×30 px, no multi-touch, simple swipe zones at best.
  • Fonts. The default path (setFont(NULL)) renders CP437, where 0xE7 is τ, not ç — accented Portuguese/Spanish text has to go through unaccent() or use the other font. Do not assume your mockup's diacritics survive.
  • RP2040 at 133 MHz. Core 1 drives the display while Core 0 polls sensors.
  • Flash: 95.2% used, 50,268 B headroom (measured on main, release build). Earlier text here said 98.7%; that predates the WebUI factoring and minifier work. New sprite/icon data still has to be small, but a few KB is affordable.

Already shipped — do not re-propose

  • Render performance. The DMA fast path landed in v2.1.6-beta: sub-width DMA, fastClear, chrome via canvas, SPI at 62.5 MHz — a full repaint went from 254 ms to 121 ms. "Smooth transitions" is a design question now, not a throughput one.
  • Graph bucketing. v2.1.8-beta replaced stride sampling with time buckets plus a min/max band (n=180 → 1435 points represented).
  • Themes. 50 built-in palettes, 24 themeable color roles including alarm/caution/selection chrome, all audited for contrast, plus runtime .thm files. Color work belongs in a .thm, not in this issue.

What you can contribute — pick ONE

Submit mockups as 320×240 PNG (content inside the 4 px frame). The maintainer will help with C++ implementation:

  • Dashboard widget redesign — sensor cards: icon + value + trend arrow
  • Graph view — axis labels, grid, multi-sensor colors, touch tooltips
  • Status bar — WiFi signal, NTP sync, alarm count, clock in a compact top bar
  • Touch navigation — icon-based tab bar, simple swipe zones
  • Alarm screen — clear severity levels, attention-grabbing but not panic-inducing
  • Setup wizard — first boot: WiFi, sensor naming, admin password display
  • Boot screen — see the note below
  • Transition storyboard — how screens should move between each other

Note on the boot screen: it cannot be captured by /api/screenshot, because the web server only pumps inside loop() and the boot screen is drawn before loop() starts. Any boot-screen design has to be reviewed as a mockup or photographed off the panel.

How to contribute mockups

  1. Create a 320×240 canvas, keep content within 4..315 × 4..235
  2. Design at 1:1 pixel scale
  3. Export as PNG
  4. Annotate with hex color values
  5. Describe the rationale in 2-3 sentences

Acceptance

  • Mockup submitted as 320×240 PNG (or Figma link)
  • Content respects the 4 px safe-area frame and ≥ 30 px touch targets
  • Color values specified in hex
  • Any text checked against the CP437 caveat
  • Brief design rationale included

References

  • src/DisplayManager*.cpp — rendering
  • src/Themes.h — the 24 themeable color roles
  • docs/images/tft-dashboard.png, docs/images/tft-tour.gif — current UI

Metadata

Metadata

Assignees

No one assigned

    Labels

    designVisual design, UI/UX, themes, logos, and graphic assetsdisplayDisplay, TFT, touchscreen, and themesgood first issueGood for newcomers

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions