mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-10-09 03:06:39 +00:00
feat(ui-lvgl): roadmap stage 6 - light motion, unified style, accent picker, splash
- Anim.h: screens emerge from the middle (background cover fades, content drifts 6 px), Home pages slide, popups and toasts rise and fade in - Theme.h: accent rules (fill = primary action, dim fill = selected, text = names/counts/modes), theme layer over the default theme, radius tokens, accent colour picker (Settings > Display & power > LOOK, NVS mc_ui) - Splash with the Solo and upstream versions - Status icons in equal cells, L1-style relay marks, path window with a hop diagram, tile download popup fits the screen (WiFi only in Settings) - Perf: uncompressed fonts, two 120-line PSRAM buffers (~48 -> ~33 ms per transition frame); UI_PERF_TEST harness Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -277,3 +277,16 @@ The speaker plays through the ES8311 codec (I2S MCLK 10 / BCK 11 / WS 12 / DOUT
|
||||
- [ ] After "restarting..." the device boots the new version (Settings shows it); contacts, messages, settings, PIN and WiFi kept
|
||||
- [ ] Up to date → "Up to date - the latest release is vX"; WiFi off / no network / map download running → toasts instead
|
||||
- [ ] Wrong network in the middle (unplug router) → "Download stalled", old firmware still boots
|
||||
|
||||
## Roadmap stage 6: motion and look (2026-09-26)
|
||||
- [ ] Boot: splash (amber MESHCORE, SOLO, Solo version, "MeshCore x - built date", three dots rising in turn) for ~2.5 s, then fades into Home (or the PIN card); a tap skips it
|
||||
- [ ] Changing screens: the new one fades in from the background with its content drifting into place (up going in, down coming back); rebuilding the same screen (settings toggles, a new message) doesn't animate
|
||||
- [ ] Selected things look the same everywhere (dim accent + light text): Nearby chips, Clock / Bot / Diagnostics tabs, Repeater segments; primary actions are full accent with dark text (map Download / Resume, Firmware update, WiFi / channel Save, Clock Start, alarm Dismiss, New message)
|
||||
- [ ] Settings > Display & power > LOOK > Accent colour: tap a swatch → the page, status icons, chips, names recolour at once; other screens in the new colour; kept after a reboot (splash too)
|
||||
- [ ] Home page swipe / dot tap: the tile row slides in from the swipe side
|
||||
- [ ] Popups (map tools, Nearby advert, scan, radio frequency, map download): backdrop fades, panel rises; toasts rise in and fade out
|
||||
- [ ] Buttons shrink slightly while pressed
|
||||
- [ ] Status bar icons evenly spaced, muted shows a speaker with a cross (also next to muted conversations)
|
||||
- [ ] Own channel post: "1s ✓ 2" (green, number of repeaters heard relaying it) under the bubble, nothing before an echo; DM: ✓ delivered, ✗ (red) not delivered, "..." sending
|
||||
- [ ] Hold a message: quote, time + hops, path diagram sender → repeaters → this device; own post: "Relayed by n repeaters" + names; own DM: Delivered / Not delivered / Sending in words
|
||||
- [ ] Map download popup: no WiFi button, fits the screen (scrolls if the unfinished-job row is shown); no network saved → toast pointing to Settings > WiFi
|
||||
|
||||
@@ -82,8 +82,32 @@ L1 splits its tools into many small screens because of the joystick and the
|
||||
|
||||
## 6. Theme
|
||||
|
||||
- [ ] Develop the current look into a consistent, recognisable style
|
||||
(colours, corners, type, icons, states), after the layout of stage 4.
|
||||
- [x] A consistent style, written down in `Theme.h`: accent fill = the
|
||||
primary action (Download, Install, Save, Go), dim accent fill =
|
||||
selected / on (tabs, chips, segments -- also the default theme's
|
||||
CHECKED), accent text = names, counts, modes; one card radius for
|
||||
buttons and rows, pills for chips, `RADIUS_SM` inside; slightly lighter
|
||||
surfaces. Accent colour selectable (Settings > Display & power > LOOK:
|
||||
amber, orange, coral, violet, cyan, lime; NVS `mc_ui`).
|
||||
- [x] Light motion (`Anim.h`): a new screen emerges from the middle (a
|
||||
background-coloured cover fades while the content drifts 6 px), Home
|
||||
pages slide after a swipe, popups and toasts rise and fade in, buttons
|
||||
shrink a little while pressed.
|
||||
- [x] Frame time measured on the device (`-D UI_PERF_TEST`: walks screens by
|
||||
itself, prints render + flush per refresh): ~48 → ~33 ms per transition
|
||||
frame with uncompressed fonts and two 120-line buffers. Internal-RAM /
|
||||
DMA buffers, `-O2`, hot code in IRAM, two draw threads, system malloc:
|
||||
no gain. The rest is LVGL's software rendering at 320x240.
|
||||
- [x] Status bar icons in equal cells; muted is a speaker with a cross.
|
||||
- [x] Under an own message: the age and a small mark as in L1 (✓ n repeaters
|
||||
for channel posts; ✓ / ✗ / ... for DMs) instead of the words.
|
||||
- [x] The path window of a message: quote, time and hops, a path diagram
|
||||
(sender → repeaters → this device), repeaters that relayed an own post,
|
||||
an own DM's delivery in words.
|
||||
- [x] Tile download popup fits the screen; its WiFi button went (WiFi is set
|
||||
up in one place, Settings).
|
||||
- [x] Splash screen (`Splash.h`): MeshCore wordmark, SOLO, the Solo and the
|
||||
upstream version, build date, loading dots.
|
||||
|
||||
## 7. Research: LVGL for the other displays
|
||||
|
||||
@@ -100,3 +124,13 @@ L1 splits its tools into many small screens because of the joystick and the
|
||||
chip / register (devices on the bus: 0x14, 0x18, 0x21, 0x22, 0x2c,
|
||||
0x34, 0x48, 0x5d). Found 2026-09-26.
|
||||
|
||||
Ideas to come back to (2026-09-26):
|
||||
|
||||
- [ ] Speaker click: would keeping the amplifier on at minimum volume
|
||||
remove it?
|
||||
- [ ] Import routes from the SD card (optional extra).
|
||||
- [ ] Battery life without losing features, above all CPU sleep.
|
||||
- [ ] Live tiles: don't keep them, or give them a bounded cache on the card
|
||||
so they never fill it.
|
||||
- [ ] Vector maps and other tile sources (to think through).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user