- Move SPEC-old.md, PLAN.md, TODO.md -> docs/ (migrationshistorie
nachvollziehbar, nicht geloescht laut Auftrag)
- README.md neu: WT32-SC01-Plus-Setup, Touch-Bedienung, Projektstruktur,
Verweis auf m5stack-dashboard als Referenz
- deploy.sh unverändert (hardwareunabhaengig, ruft nur pio run --target
upload auf)
- src/icons/icons.{h,cpp}: colored procedural icons drawn onto LVGL
canvases (PSRAM-backed ARGB8888): sun, moon, cloud, rain, thunderstorm
(selected from API symbol field), rain-warning triangle, retry/error
symbol, back arrow. Replaces old M5GFX-based icons.h.
- tile_button: add tile_button_set_icon_obj() to swap text glyph for a
canvas icon object
- home_screen: weather tile now shows the real procedural weather icon
(rebuilt on each refresh); tapping the weather tile in error state
triggers a manual retry (SPEC.md section 8) instead of navigating
- weather_detail: scrollable hourly forecast (time, temp, description,
rain probability), data logic ported from old weather_detail_screen.cpp
- calendar_detail: scrollable list of all 10 events (summary + formatted
date/all_day), ported from old calendar_detail_screen.cpp
- mvg: scrollable departures list (line badge U/S colored, destination,
time/delay, cancellation), 1-minute refresh timer ported from old
mvg_screen.cpp
- all three use back_button widget (fixed bottom-left)
- main.cpp: Screen controller, navigates between screens via callbacks,
5-minute inactivity timeout -> home, per-screen tick() for refresh
- tile_button: large touch tile with accent bg + title + icon + value,
fires LV_EVENT_CLICKED (for home screen tiles)
- back_button: fixed bottom-left Zurueck button (LV_SYMBOL_LEFT),
large touch target, reused on all detail screens
- screen_base.h: Screen struct with create/show/hide/refresh/tick
lifecycle around an lv_obj_t root (replaces old ScreenId-only header)
- lv_conf.h: enable Montserrat 16/20/24 fonts used by the widgets
Fetch weather/calendar/departures once in setup() after WiFi and dump
parsed fields to Serial, so JSON parsing against the three real
endpoints can be verified on hardware independently of the UI. API
layer itself unchanged (1:1 from m5stack-dashboard).
http_client/weather_api/calendar_api/departures_api are hardware-
independent (HTTP GET + ArduinoJson parsing, same endpoints, same
JSON). Kept verbatim per PLAN.md migration strategy; only changed
#include "../../include/secrets.h" -> #include <secrets.h> to match
the PlatformIO include/ layout (no functional change).