Skip to content

feat(ui): boot / loading splash at startup - #80

Merged
clabeuhtegrite merged 3 commits into
mainfrom
feat/boot-splash
Jun 8, 2026
Merged

feat(ui): boot / loading splash at startup#80
clabeuhtegrite merged 3 commits into
mainfrom
feat/boot-splash

Conversation

@clabeuhtegrite

Copy link
Copy Markdown
Owner

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 new boot.png fixture renders the splash for preview + regression coverage.

🤖 Generated with Claude Code

clabeuhtegrite and others added 3 commits June 8, 2026 21:09
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>
@clabeuhtegrite
clabeuhtegrite merged commit 4506087 into main Jun 8, 2026
5 checks passed
@clabeuhtegrite
clabeuhtegrite deleted the feat/boot-splash branch June 8, 2026 19:23
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