diff --git a/packages/secubox-eye-square/kiosk/secubox_eye_square_kiosk/square_dashboard.py b/packages/secubox-eye-square/kiosk/secubox_eye_square_kiosk/square_dashboard.py index 56a13587..087cd20e 100644 --- a/packages/secubox-eye-square/kiosk/secubox_eye_square_kiosk/square_dashboard.py +++ b/packages/secubox-eye-square/kiosk/secubox_eye_square_kiosk/square_dashboard.py @@ -38,7 +38,10 @@ class SquareDashboard(DashboardCanvas): self.paint_rainbow_ring(dash, self.CENTER, 235, 220) self.paint_concentric_arcs(dash, self.CENTER, MODULES, metrics, self.RING_RADII) - self.paint_pod_cluster(dash, MODULES, self.CENTER, radius=70, pod_size=40) + # pod_size=48 matches the deployed icon sizes (22/48/96/128); 40 would + # miss and fall back to the first-letter placeholder. radius bumped + # to 78 so pod inner edge (54) stays clear of the central button (44). + self.paint_pod_cluster(dash, MODULES, self.CENTER, radius=78, pod_size=48) self.paint_central_button(dash, self.CENTER, size=44) img.paste(dash, (0, 0)) diff --git a/remote-ui/round/round_dashboard.py b/remote-ui/round/round_dashboard.py index c7dea3e7..519c1c9c 100644 --- a/remote-ui/round/round_dashboard.py +++ b/remote-ui/round/round_dashboard.py @@ -22,7 +22,10 @@ class RoundDashboard(DashboardCanvas): self.paint_rainbow_ring(img, self.CENTER, 235, 220) self.paint_concentric_arcs(img, self.CENTER, MODULES, metrics, self.RING_RADII) - self.paint_pod_cluster(img, MODULES, self.CENTER, radius=70, pod_size=40) + # pod_size=48 matches the deployed icon sizes (22/48/96/128); 40 would + # miss and fall back to the first-letter placeholder. radius bumped + # to 78 so pod inner edge (54) stays clear of the central button (44). + self.paint_pod_cluster(img, MODULES, self.CENTER, radius=78, pod_size=48) self.paint_central_button(img, self.CENTER, size=44) return img diff --git a/remote-ui/square/build-eye-square-image.sh b/remote-ui/square/build-eye-square-image.sh index 8bd3632d..98333f91 100755 --- a/remote-ui/square/build-eye-square-image.sh +++ b/remote-ui/square/build-eye-square-image.sh @@ -103,6 +103,17 @@ log "Installing config files (systemd, udev, apparmor, firstboot)..." cp -r "$REPO_ROOT/remote-ui/square/files/." "$ROOT_MNT/" chmod +x "$ROOT_MNT/usr/local/sbin/firstboot.sh" +# Install the shared OTG gadget composer (round does this at line 618 of +# build-eye-remote-image.sh). secubox-otg-gadget.service ExecStarts this path; +# without it the gadget never composes and the Pi 4B's USB-C bus stays silent +# → MOCHAbin/host enumeration fails (no descriptor events, xhci timeouts). +log "Installing OTG gadget composer at /usr/local/sbin/secubox-otg-gadget.sh..." +cp "$REPO_ROOT/remote-ui/common/shell/secubox-otg-gadget.sh" \ + "$ROOT_MNT/usr/local/sbin/secubox-otg-gadget.sh" +chmod +x "$ROOT_MNT/usr/local/sbin/secubox-otg-gadget.sh" +test -x "$ROOT_MNT/usr/local/sbin/secubox-otg-gadget.sh" || \ + { err "secubox-otg-gadget.sh not executable on rootfs"; exit 2; } + # Ship the shared secubox_common package. log "Embedding remote-ui/common/python at /var/www/common/python/..." mkdir -p "$ROOT_MNT/var/www/common/python" @@ -110,6 +121,17 @@ cp -r "$REPO_ROOT/remote-ui/common/python/." "$ROOT_MNT/var/www/common/python/" test -d "$ROOT_MNT/var/www/common/python/secubox_common" || \ { err "secubox_common not in /var/www/common/python — common/ source incomplete"; exit 2; } +# Ship the shared icon assets — secubox_common.icons.load_module_icon +# resolves at /var/www/common/assets/icons/ first. Without these the pod +# cluster falls back to first-letter placeholders. +log "Embedding remote-ui/common/assets at /var/www/common/assets/..." +mkdir -p "$ROOT_MNT/var/www/common/assets" +cp -r "$REPO_ROOT/remote-ui/common/assets/." "$ROOT_MNT/var/www/common/assets/" +ICON_COUNT=$(ls "$ROOT_MNT/var/www/common/assets/icons"/*-48.png 2>/dev/null | wc -l) +test "$ICON_COUNT" -gt 0 || \ + { err "no *-48.png icons in /var/www/common/assets/icons — common/ assets incomplete"; exit 2; } +log " → $ICON_COUNT module icons at size 48 shipped" + log "Installing Python packages..." mkdir -p "$ROOT_MNT/usr/lib/python3/dist-packages" cp -r "$REPO_ROOT/packages/secubox-eye-square/helper/eye_square_helper" \