Skip to content

Add multi-page dashboard, swipe nav, burn-rate flame, and mascot costumes - #121

Open
sememtac wants to merge 1 commit into
HermannBjorgvin:mainfrom
sememtac:feature/dashboard-pages
Open

Add multi-page dashboard, swipe nav, burn-rate flame, and mascot costumes#121
sememtac wants to merge 1 commit into
HermannBjorgvin:mainfrom
sememtac:feature/dashboard-pages

Conversation

@sememtac

Copy link
Copy Markdown

Adds a multi-page dashboard on top of the single Usage view, with touch-swipe navigation, an animated burn-rate flame, and a swipe-to-cycle costume system for the corner mascot. All new art is original pixel-art (generators in tools/).

Physical buttons are unchanged — all new navigation is via touch gestures.

  • Pages: Trend (session+weekly sparkline), Burn (%/hr + ETA-to-100%), and Session / Weekly detail. Swipe left/right cycles them (modulo wrap). (ui.cpp, ui.h, new usage_history.{cpp,h})
  • Swipe navigation, rotation-aware: the touch delta is rotated by the IMU quadrant so gestures track "screen up". Swipe left/right = pages, up/down = costumes; a tap toggles the splash.
  • Burn-rate flame (top-right): original pixel flame that flickers each frame and tracks the live session burn rate. It sits beside the battery, which now shows only when a cell is actually attached (power_hal reports -1 otherwise) instead of a misleading empty glyph. (flame_icon.h via tools/gen_flame.py)
  • Costumes on the corner Claude: shades, cat ears, sombrero, pom-pom, lightsaber, santa, double saber, rainbow; each cropped to its bounding box, choice persisted to NVS. (costumes.h via tools/gen_costumes.py)

This is the foundation for follow-up PRs (dashboard enhancements and a situationally-aware mascot). Builds clean on waveshare_amoled_216 against current main, and preserves the recently-merged BLE battery level (#117).

Supersedes the oversized #116, which will be closed once the split PRs are in.

Extends the desk dashboard with more pages, touch-swipe navigation, an
animated burn-rate flame in the corner, and a swipe-to-cycle costume system
for the corner mascot. Physical buttons are unchanged — all new navigation
is via touch gestures. New art is original pixel-art; generators in tools/.

- Pages: Trend (session+weekly sparkline), Burn (%/hr + ETA to 100%), and
  Session / Weekly detail. Swipe left/right cycles them (modulo wrap).
  (ui.cpp, ui.h, usage_history.{cpp,h})
- Touch-swipe navigation, rotation-aware: the raw touch delta is rotated by
  the IMU quadrant so gestures track "screen up" in any orientation. Swipe
  left/right = pages, up/down = costumes; a tap still toggles the splash.
- Burn-rate flame: original pixel flame that flickers each frame and smoothly
  tracks the live session burn rate. It sits to the right of the battery, and
  the battery now shows only when a cell is actually attached (power_hal
  reports -1 otherwise) instead of a misleading empty glyph. Battery-less
  boards just show the flame. (flame_icon.h via tools/gen_flame.py)
- Costumes on the corner mascot: shades, cat ears, sombrero, pom-pom,
  lightsaber, santa, double saber, rainbow; choice persisted to NVS. Each
  prop is cropped to its bounding box to keep the data compact.
  (costumes.h via tools/gen_costumes.py)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant