Lightweight server on port 8080 that accepts POST /refresh and
starts birdframe.service. Runs as a systemd service so the web
UI's Refresh Now button can trigger immediate display updates.
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
- Trigger endpoint on frame Pi (port 8080) starts birdframe.service
- Frame admin panel has a Refresh Now button at the top
- frame_host config field lets user set the frame Pi's IP/hostname
- Button uses frame_host from config (no hardcoded hostname)
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
- New frame_config API endpoint (GET/POST) stores all frame display
settings in frame-config.json on the BirdNET server
- Frame menu item in the admin drawer opens a full settings panel
with sections: Display, Titles, Collage, Hardware, Source, Auth
- Changes auto-save via debounced POST; the frame Pi picks them up
on its next 15-min timer cycle
- TODAY window button in the time picker with configurable start
hour (localStorage bird:todayStart, adjustable in Settings)
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
- Pulls frame_config from BirdNET server API each timer cycle
- Remote settings override local config.toml (except paths/base_url)
- Display-affecting config changes (title, saturation, rotate, sizes)
are tracked via a config signature in state.json
- Config change forces a panel refresh on the next cycle
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
New 'TODAY' button in the window picker shows birds since a
configurable start hour (default 6 AM). The window grows through
the day and resets each morning.
Start hour is adjustable in the settings panel ('Today starts at'
slider) and persists in localStorage (bird:todayStart).
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
New config options:
- mode = "window" (rolling hours, default) or "today" (daily reset)
- start_time = "06:00" (when today mode resets)
- hold_overnight = true (keep overnight collage until first bird)
In "today" mode the collage only shows birds since start_time,
growing through the day. With hold_overnight=true, the display
keeps the previous full collage until the first bird is detected
after start_time (no blank screen at dawn).
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>