From 4b32236f67992acfc5ca1d5d3fc49f0fd42d1dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hermann=20Bj=C3=B6rgvin=20Haraldsson?= Date: Mon, 11 May 2026 02:33:29 +0000 Subject: [PATCH] Refresh README screenshots and prune controller-era references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the 480x320 Panlee-era usage/bluetooth/controller PNGs with fresh 480x480 captures of the current UI (Usage, Bluetooth, Splash). Drop the Controller screen column entirely — that screen was removed when buttons took over its shortcuts. README cleanup: daemon poll cadence corrected to 60s, splash mood- group + auto-rotation behaviour documented, "tap the logo to cycle" replaced with the actual middle-button gesture, Lucide section rewritten to point at tools/png_to_lvgl.js instead of the dead inline Python+inkscape recipe, and intro line drops "touch controller" since touch only toggles splash now. demo.gif flagged as stale (recapture is a hardware task). --- README.md | 78 +++++++++++++------------------------ screenshots/bluetooth.png | Bin 7640 -> 14926 bytes screenshots/controller.png | Bin 10618 -> 0 bytes screenshots/splash.png | Bin 0 -> 3617 bytes screenshots/usage.png | Bin 8479 -> 9364 bytes 5 files changed, 27 insertions(+), 51 deletions(-) delete mode 100644 screenshots/controller.png create mode 100644 screenshots/splash.png diff --git a/README.md b/README.md index 88b030e..49cd229 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,24 @@ # Claude Usage Tracker - Waveshare ESP32-S3-Touch-AMOLED-2.16 -Bluetooth-connected Claude Code usage monitor and touch controller on a +Bluetooth-connected Claude Code usage monitor on a [Waveshare ESP32-S3-Touch-AMOLED-2.16](https://docs.waveshare.com/ESP32-S3-Touch-AMOLED-2.16) -2.16" square AMOLED touchscreen with battery, IMU-driven auto-rotation, and a -splash screen of pixel-art creatures. +2.16" square AMOLED with battery, IMU-driven auto-rotation, two physical +buttons mapped to Claude Code shortcuts over BLE HID, and a splash screen +of pixel-art creatures whose mood tracks your usage rate. ![Demo](assets/demo.gif) +> **Note:** The demo GIF was recorded on the previous 480×320 Panlee panel and shows older UX (gesture-driven Controller screen). Captures need redoing for the current Waveshare build. + ## Features -- **Splash screen** — 13 looping 20×20 pixel-art creature animations scaled 24× to fill the display. Default boot screen. -- **Usage dashboard** — Live 5-hour session and 7-day weekly utilization bars with color-coded thresholds -- **Physical button shortcuts** — Left button → Space (voice mode), right button → Shift+Tab (mode toggle); both sent over BLE HID -- **Bluetooth screen** — Connection status, device name, MAC address, bond management -- **Auto-rotation** — QMI8658 accelerometer drives 90° rotation snaps with a quick AMOLED brightness flash transition -- **Battery indicator** — Lucide battery icons in the upper-right corner, AXP2101-driven -- **Wireless** — All data communication over Bluetooth Low Energy (USB only for flashing and charging) +- **Splash screen** — 13 looping 20×20 pixel-art creature animations scaled 24× to fill the display. The active animation reacts to your current Claude usage *rate* (idle / normal / active / heavy), auto-rotating within the matching group every 20 s. +- **Usage dashboard** — Live 5-hour session and 7-day weekly utilization bars with reset countdowns. +- **Physical button shortcuts** — Left button → Space (voice mode), right button → Shift+Tab (mode toggle); both sent over BLE HID. +- **Bluetooth screen** — Connection status, device name, MAC address, bond reset zone. +- **Auto-rotation** — QMI8658 accelerometer drives 90° rotation snaps with a quick AMOLED brightness-flash transition. +- **Battery indicator** — Lucide battery icons in the upper-right corner, AXP2101-driven. +- **Wireless** — All data communication over Bluetooth Low Energy (USB only for flashing and charging). ## Hardware @@ -50,11 +53,11 @@ bluetoothctl pair F4:12:FA:C0:8F:E5 # use your device's MAC bluetoothctl trust F4:12:FA:C0:8F:E5 ``` -The MAC address is shown on the Bluetooth screen (third screen, tap the logo to cycle). +The MAC address is shown on the Bluetooth screen — press the middle (PWR) button to cycle to it. ## Install the daemon -The daemon polls your Claude usage every 30 seconds and sends it to the display over BLE. +The daemon polls your Claude usage every 60 seconds and sends it to the display over BLE. ```bash ./install.sh @@ -72,18 +75,19 @@ View logs: `journalctl --user -u claude-usage-daemon -f` 3. Extracts usage data from the response headers (`anthropic-ratelimit-unified-5h-utilization`, etc.) 4. Connects to the ESP32 over BLE and writes a JSON payload to the GATT RX characteristic 5. The ESP32 parses it and updates the LVGL dashboard -6. The left/right physical buttons send Space and Shift+Tab as BLE HID keyboard input to the paired host (no host-side daemon involvement) +6. The firmware tracks the *rate of change* of session % over a 5-minute window and picks splash animations from the matching mood group (idle / normal / active / heavy) +7. The left/right physical buttons send Space and Shift+Tab as BLE HID keyboard input to the paired host (no host-side daemon involvement) ## Screens -Two persistent screens, **Usage** and **Bluetooth**, are cycled by the **middle physical button (PWR)**. The **splash** is a touch-toggled welcome animation: tap anywhere on the display (outside the Reset zone on the Bluetooth screen) to show it; tap again to dismiss. +Two persistent screens, **Usage** and **Bluetooth**, are cycled by the **middle physical button (PWR)**. The **splash** is a touch-toggled welcome animation: tap anywhere on the display (outside the Reset zone on the Bluetooth screen) to show it; tap again to dismiss. Splash is the default boot screen. -| Usage | Bluetooth | Splash | -| :-----------------------------: | :-------------------------------------: | :---------------------------------: | -| ![Usage](screenshots/usage.png) | ![Bluetooth](screenshots/bluetooth.png) | Looping 20×20 pixel-art creatures | -| Session and weekly utilization | Connection status and reset | Boot screen; touch-toggle anytime | +| Splash | Usage | Bluetooth | +| :---------------------------------: | :-----------------------------: | :-------------------------------------: | +| ![Splash](screenshots/splash.png) | ![Usage](screenshots/usage.png) | ![Bluetooth](screenshots/bluetooth.png) | +| Boot screen; touch-toggle anytime | Session and weekly utilization | Connection status and bond reset | -The splash screen is also the default boot screen. +On splash, the **middle (PWR) button** cycles to the next animation manually; otherwise the firmware auto-rotates every 20 s within the usage-rate group. ## Physical buttons @@ -158,41 +162,13 @@ Without these patches, fonts compile but render as invisible. ## Converting Lucide icons -The controller screen uses [Lucide](https://lucide.dev) icons (the same icon set Anthropic uses). Icons are SVGs converted to RGB565 C arrays for LVGL. - -1. Get Lucide SVGs from [github.com/lucide-icons/lucide](https://github.com/lucide-icons/lucide) (`icons/` directory) - -2. Convert SVG to PNG at desired size (icons are 48×48 to match the high-DPI display, hand icon is 40×40, logo is 80×80): +The UI uses a small set of [Lucide](https://lucide.dev) icons (bluetooth + battery states) converted to RGB565 / RGB565A8 C arrays for LVGL. ```bash -inkscape icons/delete.svg --export-width=48 --export-height=48 \ - --export-filename=assets/icon_delete_48.png --export-background-opacity=0 +node tools/png_to_lvgl.js assets/icon_bluetooth_48.png icon_bluetooth_data ICON_BLUETOOTH_WIDTH ICON_BLUETOOTH_HEIGHT ``` -3. Convert PNG to RGB565 C array: - -```python -from PIL import Image - -img = Image.open("assets/icon_delete.png").convert("RGBA") -bg = (0x1f, 0x1f, 0x1e) # panel background color -fg = (0xb0, 0xae, 0xa5) # icon stroke color - -pixels = [] -for y in range(img.height): - for x in range(img.width): - r, g, b, a = img.getpixel((x, y)) - alpha = a / 255.0 - out_r = int(fg[0] * alpha + bg[0] * (1 - alpha)) - out_g = int(fg[1] * alpha + bg[1] * (1 - alpha)) - out_b = int(fg[2] * alpha + bg[2] * (1 - alpha)) - rgb565 = ((out_r >> 3) << 11) | ((out_g >> 2) << 5) | (out_b >> 3) - pixels.append(rgb565) - -# Write as C array to firmware/src/icons.h -``` - -Current icons: `delete`, `arrow-left`, `arrow-right`, `circle-arrow-out-up-left` (escape), `hand` (gestures), `bluetooth`. +Default tint is white (`0xFFFFFF`), required because Lucide PNGs ship as black-on-transparent and would render invisible against the dark UI without it. Pass `--no-tint` for pre-coloured artwork (e.g. the logo). Battery icons live as RGB565A8 (alpha plane) so they blend cleanly over the splash background; the rest of the icons are baked RGB565 over the panel colour. Splice the converter output into `firmware/src/icons.h`. ## Splash animations @@ -217,7 +193,7 @@ See `tools/README.md` for details. - Built by [@hermannbjorgvin](https://github.com/hermannbjorgvin) (Hermann Björgvin Haraldsson). - Pixel-art "Clawd" creature animations by [@amaanbuilds](https://github.com/amaanbuilds), sourced from [claudepix.vercel.app](https://claudepix.vercel.app). Frame data and palettes scraped + converted by the tooling in `tools/`. -- Lucide icon set ([lucide.dev](https://lucide.dev), MIT) for controller and bluetooth UI glyphs. +- Lucide icon set ([lucide.dev](https://lucide.dev), MIT) for bluetooth and battery UI glyphs. - Anthropic brand fonts (Tiempos Text, Styrene B) — see licensing warning below. ## Licensing gray area warning diff --git a/screenshots/bluetooth.png b/screenshots/bluetooth.png index 445c6b3723eedeacafa14b79dde4ab699fe04018..4c9b1c3abf473b0caf847274a047da3b66788992 100644 GIT binary patch literal 14926 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 EFGgjDEC2ui literal 7640 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 diff --git a/screenshots/controller.png b/screenshots/controller.png deleted file mode 100644 index 832082b0332da9a4c3c456d90c4693e298a49696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10618 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 diff --git a/screenshots/splash.png b/screenshots/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd6ffee5a00b8d25f5f35f50d74e164d80291ba GIT binary patch literal 3617 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|=985rwPunyP0V&P`kH}&m4FZe|EtTRx4)0}8 z7srr_Id89Q+<4SM&?V4^$4HeeNJVYcu_HgvU3(pP-m;YWLe|w^$L%2+X-hVk{`)<@ z-uu`7OS@YH8Mn|NrZG^`rbn zORoL)0*A9Z+x@85wM)x6mG`wMH|MYYx(^)ghbA7}eyuA0W$d92{f8$WL}%|^500jS zln-mS-V3jqZt%$4!sy4fsQ237Xp@nw$zJOIw-A3}XR`?d~I;}t*Z=U1+6&OclG zciETv*F8Uc_0K=pKlS%7--k>)x1Z~{|K$_Uzv!Lo?@#%cKUZ-7%cqimwim_k*Zh0mO1bXxY2zRH zPxsXY|Jq;b_Gj7j^bhw>4QmTkYu7fGN|Uv2&*-fle# zEUSE*a%SJJ*o{JB*#Z9x6w+S_{PkZx(jQcS1tYe zcgwu)#ZmSzt`+aS^s6rF{L#R*@+Gf##%0#puYLY##Wnt2Ut`v9**E`Mabd`7_PbT< z!lUl{zusxF>T7eJ?RD+7@0Wj#k-7TIar?a2Q?Gr$T&35S^>;z^`LABDe`nf?yKfz} pW;D=7QyQuHhPGWJB27PV{V#tgkNp*w9Ggs#7Ef0{mvv4FO#rHMJLv!b literal 0 HcmV?d00001 diff --git a/screenshots/usage.png b/screenshots/usage.png index ff6fa5786a2406be6bfd6c14dcdd1ca9296092bc..f88e870edc2a5df023971edaa736e550df52c3c7 100644 GIT binary patch literal 9364 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 m0UbL&9HdVOpl85cza08|w<6)NQ{ApZd&!(cf8 literal 8479 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