17 Commits
Author SHA1 Message Date
rich 3a4dd3c4ca tap-wake: re-check the screen on taps while 'awake'
If something else turned the screen off during the wake minute (the
9pm cron, a kiosk restart from an update), taps only extended the timer
and never turned it back on, so it stayed dark until nobody touched it
for a full minute. Now every tap (at most every 2s) checks the real
screen state.
2026-10-22 22:17:01 -04:00
rich f0bccb2a5e Kiosk stops the taskbar instead of auto-hiding it
wf-panel-pi won't auto-hide while it has notifications up, and at boot it
always does (Wi-Fi connected, updates available), so it stayed on screen.
kiosk.sh now stops the panel and its respawner as they start; the
auto-hide edit is undone on existing installs.
2026-10-22 22:11:25 -04:00
rich 1c2daad370 Black desktop behind the kiosk
The desktop shows for ~30s at boot before Chromium covers it. install.sh
now sets pcmanfm's desktop to plain black with no icons (one file per
screen) and auto-hides wf-panel-pi; originals are kept and --uninstall
restores them.
2026-10-22 22:09:35 -04:00
rich b5b4d22fed Scene sky follows the daytime hours; bigger backpacks
Open-Meteo's daily weather code reflects the worst hour, even after
school (tomorrow: clear 7am-5pm, cloudy at 6pm -> daily code 3), so the
scene and tomorrow's description said Cloudy. The sky now comes from the
average cloudiness of the same 7am-6pm hours the outfit uses, and
rain/snow/storm still take priority. Backpacks are drawn about a third
of the kid's height, upright by their feet.
2026-10-22 22:04:37 -04:00
rich df43905d0d Backpacks on school days
A school day is Mon-Fri within the school year (default 09-01 to 06-15,
set with install.sh --school-start/--school-end), unless a calendar event
that day says "no school" or "school closed". Each kid gets a backpack
by their feet in their own colors, and a Backpack chip is added.
2026-10-22 21:59:02 -04:00
rich 1b1a62a8f4 Scene shows fog, wind and the season
Fog: blurred mist bands behind the kids plus a low band over their feet,
when the day's forecast is foggy. Wind (15+ mph): swirls and blowing
leaves, and rain falls at a slant. Season by date (flipped south of the
equator): ground color, a small tree that blossoms, fills out, turns
orange and goes bare, spring flowers and fallen autumn leaves. Kids
shift right a little so the tree shows. Demo mode takes &wind and &season.
2026-10-22 21:53:15 -04:00
rich dcbb53b8d7 Give Nate and Vi their own outfits
Clothing colors come from per-kid CSS variables (Nate's are the SVG
defaults), so both still dress for the same weather from one outfit()
but look different: Vi wears pinks and purples, leggings instead of
jeans, a heart T-shirt, a pink scarf, and a skirt on shorts days (chip
now reads "Shorts or skirt"). Nate's umbrella is blue so the two differ.
2026-10-22 21:47:33 -04:00
rich cf73a980d0 Hair colors: Nate dirty blonde, Vi blonde
Hair fill and a thin darker outline come from per-kid CSS variables, so
Vi's blonde hair still reads against the yellow raincoat hood.
2026-10-22 21:45:57 -04:00
rich 5d27876964 Show Vi next to Nate, dressed for the same weather
The kid drawing becomes a template drawn twice with <use>: Nate (8) on
the left and Vi (6) about 10% shorter on the right, so one outfit drives
both. Girl-only hair and a bow (hidden under hats) toggle through a CSS
variable that inherits into the <use> copy. The umbrella now sits over
the kid's head, and the small cloud and lightning bolt move up out of
Vi's way.
2026-10-22 21:44:33 -04:00
rich 7f61c3d6d2 Dim to 50% from 30 min after sunset until sunrise
sun.py computes today's sunrise/sunset offline (NOAA equations) from the
location install.sh now saves in screen.conf. screen.sh 'on' picks the
evening level when it's dark out, and a new 'tick' state (cron, every 5
min) follows sunset/sunrise while leaving the night-off hours alone so it
can't cut short a tap-to-wake. install.sh gains --evening-brightness.
2026-10-22 21:39:12 -04:00
rich 1bc523b2cc Default night brightness 20%: 5-10% looks black on the official 7" screen 2026-10-22 21:34:10 -04:00
rich 2b6e7c3ca7 Set the screen state as soon as the kiosk starts
After a reboot the backlight comes back at its saved level (possibly the
dim night level) with the output on, and nothing corrected it until the
@reboot cron 90s later; tap-wake ignored taps since the screen wasn't
'off'. kiosk.sh now runs screen.sh auto a few seconds after start.
screen.sh auto also honors NIGHT_OFF=0 so this can't blank a 24/7 screen.
2026-10-22 21:30:41 -04:00
rich 6828dbc358 Tap at night wakes the screen dimmed
screen.sh gains a 'dim' state that sets the backlight to NIGHT_BRIGHTNESS
(percent, default 5) before turning the output on; 'on' restores full
brightness, so the morning schedule brings it back. tap-wake uses 'dim'.
install.sh gains --night-brightness.
2026-10-22 21:26:41 -04:00
rich b183369ca2 Pi pulls updates from git hourly
update.sh fetches, fast-forwards and re-runs install.sh only when the
remote has something new. install.sh adds the cron job whenever the repo
is a git clone with an upstream. README now installs by git clone.
2026-10-22 21:25:46 -04:00
rich d5c64692ba Show the kids' Nextcloud calendar events for the day
The page runs from file:// and Nextcloud sends no CORS headers, so a cron
job (fetch-calendars.py) pulls each public calendar via CalDAV REPORT with
server-side recurrence expansion and writes events.js for the page to load.
Events shared by both kids show once. On busy days the hourly icons and
then extra event rows give way so everything fits on the 800x480 screen.

install.sh gains --calendar "Name=URL" (repeatable) and --no-calendars;
share links live in calendars.conf on the Pi, not in the repo.
2026-10-22 21:21:22 -04:00
rich 9e579bf8de Tune outfit picks so mild sunny days get a T-shirt and sweatshirt
Feels-like temperature alone ran harsh on breezy mornings (45F felt like
38F), triggering a jacket and warm hat. Blend it with the real temperature,
credit sunny mornings, use the real afternoon high, and loosen the jacket
and hat cutoffs.
2026-10-22 21:09:57 -04:00
rich c98a5e5ed6 Kids weather dashboard for Raspberry Pi kiosk
What-to-wear weather dashboard (Open-Meteo + inline SVG kid), Chromium
kiosk launcher, overnight screen-off schedule with tap-to-wake, and an
idempotent install/uninstall script.
2026-10-22 15:15:58 -04:00