Files
Kaj SchittecatandClaude Opus 5.5 662665e6de touch: beta_89, the UI overhaul
Every screen redesigned to the Oct 2026 mockups, on one design system:
palette, type roles (generated Montserrat faces with Lucide line icons on the
LV_SYMBOL codepoints), a theme apply-cb that styles every LVGL widget, button
kinds, list rows, sheets as action lists, toasts and key-glyph avatars.

Rebuilt: status bar, Chats (filters, + and menu), conversation (route header,
hop meta, "Heard by N repeaters", delivery states, pill composer), lock screen
(mark, clock, 24 h activity, unread cards), Constellation screensaver, Home
launcher and launcher sheet, Status page, grouped Settings home, animated boot
splash, and the message glance as a notification card.

New: optional PIN lock (salted SHA-256, keyboard / touch pad / number pad per
board, backoff that survives reboot), screensaver on battery with its own
duration, T-Deck text sizes, trackball hold to switch Scroll and Cursor (Scroll
default, prefs v69/v70), hold Settings tab for the control panel. M9 bottom
notices removed. Every screen measured for the Large and Huge text sizes.

Fix: adverts over 2/3-byte path hashes never reached the recently heard table
(packed path_len compared as a byte count); ADVERT_PATH replies now carry the
whole multi-byte path.

English placeholders for the 204 untranslated keys in every .lang file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 23:26:41 +02:00

66 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Renders the Constellation screensaver at every board's logical screen size
# (both orientations where the UI can rotate) and writes PNGs for review.
#
# Usage: test/constellation_render/run.sh [outdir] [path/to/lvgl]
# Defaults to the LVGL that PlatformIO fetched for any env (run a pio build first).
set -euo pipefail
here="$(cd "$(dirname "$0")" && pwd)"
root="$(cd "$here/../.." && pwd)"
out="${1:-$root/doc-shots/constellation}"
lvgl="${2:-}"
if [ -z "$lvgl" ]; then
for d in "$root"/.pio/libdeps/*/lvgl; do
[ -f "$d/lvgl.h" ] && { lvgl="$d"; break; }
done
fi
[ -n "$lvgl" ] && [ -f "$lvgl/lvgl.h" ] || {
echo "LVGL sources not found; run a PlatformIO build first or pass the lvgl path" >&2
exit 2
}
mkdir -p "$out"
work="$(mktemp -d)"
trap 'rm -rf "$work"' EXIT
flags=(-O1 -w -DLV_CONF_INCLUDE_SIMPLE -I"$here" -I"$lvgl")
mkdir -p "$work/obj"
jobs="$(sysctl -n hw.ncpu 2>/dev/null || nproc 2>/dev/null || echo 4)"
export CC_CMD="${CC:-clang} -c ${flags[*]}" OBJ_DIR="$work/obj"
find "$lvgl/src" -name '*.c' -print0 |
xargs -0 -P "$jobs" -I{} sh -c \
'$CC_CMD "$1" -o "$OBJ_DIR/$(printf %s "$1" | cksum | cut -d" " -f1).o"' _ {}
cxx="${CXX:-clang++}"
"$cxx" -std=c++17 -c "${flags[@]}" "$root/src/ui-touch/Constellation.cpp" -o "$work/cst.o"
"${CC:-clang}" -c "${flags[@]}" "$root/src/ui-touch/clock_font_40.c" -o "$work/f40.o"
"${CC:-clang}" -c "${flags[@]}" "$root/src/ui-touch/ui_semibold_12.c" -o "$work/semi12.o"
"${CC:-clang}" -c "${flags[@]}" -DHAS_TANMATSU "$root/src/ui-touch/clock_font_96.c" -o "$work/f96.o"
"$cxx" -std=c++17 -c "${flags[@]}" "$here/render.cpp" -o "$work/render.o"
"$cxx" "$work/render.o" "$work/cst.o" "$work/f40.o" "$work/semi12.o" "$work/obj"/*.o -o "$work/render"
# The Tanmatsu build swaps in the 96 px clock face.
"$cxx" -std=c++17 -c "${flags[@]}" -DHAS_TANMATSU "$root/src/ui-touch/Constellation.cpp" -o "$work/cst96.o"
"$cxx" "$work/render.o" "$work/cst96.o" "$work/f96.o" "$work/semi12.o" "$work/obj"/*.o -o "$work/render96"
# name width height [binary]
while read -r name w h bin; do
[ -n "$name" ] || continue
exe="$work/${bin:-render}"
for mode in still ping; do
arg=""; [ "$mode" = ping ] && arg=ping
"$exe" "$w" "$h" "$work/$name-$mode.bmp" $arg >/dev/null
sips -s format png "$work/$name-$mode.bmp" --out "$out/$name-$mode.png" >/dev/null
done
echo "ok: $name ${w}x${h}"
done <<'SIZES'
tdeck-v4-m9 320 240
tdeck-portrait 240 320
crowpanel-rak 480 320
crowpanel-port 320 480
pager 480 222
tdisplay-p4 284 616
tanmatsu 800 480 render96
SIZES
echo "PNGs in $out"