feat(ui): boot / loading splash at startup - #80
Merged
Conversation
On power-up the dashboard was built immediately but sat empty and motionless for ~20-30 s (Wi-Fi join + boot-time OTA check + first Bambuddy fetch), which read as a frozen/hung UI. Add a full-screen boot splash — the Bamboard wordmark, a spinner, and a status line that walks the boot phases — built visible and dismissed by the UI manager the moment printer data arrives (or after BOOT_SPLASH_MAX_MS = 25 s, so an unreachable Bambuddy can't pin it). - overlays.cpp: build_boot_overlay + boot_overlay_set_status / hide / is_visible. - ui.cpp: built LAST in begin() (top z-order, starts visible); refresh() hides it once n>0 || timeout. - main.cpp: per-phase status (BOOT_WIFI default -> BOOT_UPDATE before the OTA check -> BOOT_CONNECT before tasks), pumping LVGL so the spinner animates through the Wi-Fi-connect wait. - i18n: BOOT_WIFI / BOOT_UPDATE / BOOT_CONNECT in all five languages. - sim: render the splash to boot.png (preview + visual-regression coverage). Existing fixtures are unaffected (the sim injects printers, so refresh() hides the splash before each screen renders). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The boot splash (overlays.cpp build_boot_overlay) uses lv_spinner, which the firmware lv_conf already enables but the sim's trimmed lv_conf had off — the sim build failed with 'lv_spinner_create was not declared'. Enable it (LV_USE_ARC, its dependency, is already on). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Commit the deterministic sim render of the new boot/loading splash as a visual baseline (English + de/es/fr/pt, the latter differing only in the status line). The spinner is rendered without advancing lv_tick, so it sits at a fixed angle — byte-reproducible like the other fixtures. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Boot / loading splash
On power-up the dashboard was built immediately but sat empty and motionless for ~20-30 s (Wi-Fi join + boot-time OTA check + first Bambuddy fetch) — it read as a frozen UI. This adds a full-screen boot splash: the Bamboard wordmark, a spinner, and a status line that walks the boot phases (Connecting to Wi-Fi… → Checking for updates… → Connecting to Bambuddy…). Built visible at startup; the UI manager dismisses it the moment printer data arrives (or after a 25 s grace period so an unreachable Bambuddy can't pin it). All five UI languages.
Existing visual baselines are unaffected — the sim injects printers, so
refresh()hides the splash before each screen renders. A newboot.pngfixture renders the splash for preview + regression coverage.🤖 Generated with Claude Code