The Constellation is not heading-up: it places nodes by true bearing, but
for burn-in the whole picture turns slowly about you (half a degree every
5 s, a turn an hour, following the time since boot), so north and its N
marker go round with it.
Settings > Display > Screensaver gets "Keep north up" (off by default):
the turn stays at 0 degrees, so north is at the top. The few-pixel drift,
your own node's pulse and the status changing corners still keep pixels
moving. Stored as a standalone key (ssaver_north) like the other
screensaver settings: no schema bump, no migration. The row greys out with
the screensaver off, like the others.
CAP_SSAVER_NORTH_LOCK gates it, 0 on the Tanmatsu for its AppFS ceiling
(its screensaver keeps turning, as before). nl, de, fr, es, it and pt-br
translated; the other languages carry the English for now.
test/constellation_render's render takes CST_UPTIME_MS and
CST_NORTH_LOCK=1, to render the turn 45 minutes in, with and without it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>