1ff91c8a71cccb083e9f83dcc9fda56e158d36c9
frame_client_run() now does what it was always meant to: probe the tools server, GET /frame/image and stream the response straight into the panel via epd_display_stream() (esp_http_client's manual open/fetch_headers/read API pulls in exactly the shape epd_display_stream()'s read_fn expects, so the ~192KB frame never sits in RAM at once), then epd_sleep() and esp_deep_sleep_start() for an hour. Skips the WiFi/server status checklist screen on the happy path now that there's a real photo to show instead -- three full refreshes every single hour (status-pending, status-final, photo) wasn't worth it once bring-up was actually working. Still shows it (status FAILED) when the server isn't reachable, since nothing's been drawn yet that cycle and it's the cheapest useful diagnostic. A mid-fetch failure after the panel's already started refreshing just logs and retries sooner, rather than compounding with a second refresh. New Kconfig knobs: FRAME_FETCH_TIMEOUT_MS, FRAME_SLEEP_INTERVAL_S (default 3600s), FRAME_RETRY_INTERVAL_S (default 300s on failure).