Commit Graph

3064 Commits

Author SHA1 Message Date
Chris fe9379c826 Merge remote-tracking branch 'birdpic/feature/display-mode-today' into avian-visitors 2026-07-17 18:25:08 -05:00
Chris Sader e6496a821f Add HTTP trigger endpoint for on-demand frame refresh
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>
2026-07-17 18:16:03 -05:00
Chris Sader f0c2b8fd05 Add Refresh Now button and configurable frame_host
- 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>
2026-07-17 18:15:27 -05:00
Chris Sader 5314b24c02 Add Frame admin panel with full remote config
- 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>
2026-07-17 18:02:59 -05:00
Chris Sader c29498b3fa Fetch remote config and detect config changes for auto-refresh
- 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>
2026-07-17 17:59:54 -05:00
Chris Sader 896901f799 Add TODAY window mode with configurable start hour
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>
2026-07-17 15:01:35 -05:00
Chris Sader d586be0fac Add configurable display mode: rolling window or daily reset
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>
2026-07-17 14:48:09 -05:00
Chris Sader 6884cce3c7 Add configurable title, matte dimensions, and interactive installer
- Configurable collage title via localStorage (bird:title) with admin settings UI
- Configurable matte opening dimensions in display.py (mat_opening_w/mat_opening_h)
- Interactive frame installer (install-interactive.sh) with guided setup prompts

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-10 15:53:30 -05:00
Twarner491 858c555c0c [DOCS] frame: the Pi 3 A+ is a drop-in for the Zero 2 W, same setup on either 2026-07-08 10:40:38 -07:00
Teddy Warner 57e146fa0b [FEAT] collage: empty nest blooms in, and clicking it no longer opens a bird (#26) 2026-07-06 18:55:56 -07:00
Teddy Warner 54d241e184 [FEAT] collage: empty nest illustration when no birds have been heard (#25) 2026-07-06 16:53:12 -07:00
Teddy Warner 2d481d8e33 Merge pull request #18 from Twarner491/installerillustrations
[FEAT] frame: backfill missing BirdWeather illustrations + change-detection refresh
2026-06-30 17:16:26 -07:00
Twarner491 d879ced6d4 [FEAT] hardware: refine the BirdPic frame backing for 3D printing 2026-06-30 17:00:42 -07:00
Twarner491 9915e5c86a [FEAT] frame: BirdWeather refreshes every 15 min, only when the birds change 2026-06-30 17:00:42 -07:00
Twarner491 268b682c9d [FEAT] frame: flag and generate the local birds the bundle is missing 2026-06-30 16:59:11 -07:00
Teddy Warner f8b467e9a2 [FEAT] frame: --ebird-key enables the eBird fallback in BirdWeather mode (#14) 2026-06-23 08:55:00 -07:00
Twarner491 454c64cd77 [DOCS] frame: apt install git before cloning on a fresh Pi 2026-06-22 14:11:08 -07:00
Teddy Warner 672599fa3f Merge pull request #13 from Twarner491/eink-installer
Frame install flavors, fresh-clone collage fix, kit links, and hardware
2026-06-21 19:02:53 -07:00
Twarner491 7aca1516f1 [FEAT] hardware: refresh frame backplate, add bird mic enclosure and mic mount 2026-06-21 18:58:08 -07:00
Twarner491 8f8ea5068e [DOCS] readme: link the bird mic and frame kits 2026-06-21 18:39:55 -07:00
Twarner491 06aad91f02 [FIX] installer: serve the AvianVisitors collage at / on a fresh clone 2026-06-21 18:39:55 -07:00
Twarner491 77dda2bc94 [FEAT] frame: birdnet.local default, with image-url and bird-weather flavors 2026-06-21 18:39:55 -07:00
Teddy Warner 10548dbca7 [FEAT] frame: --bird-weather draws the collage from a ZIP code, no mic (#12) 2026-06-19 19:52:21 -07:00
Teddy Warner 3cf7ac191b [DOCS] readme: note image generation needs a billing-enabled key (#11) 2026-06-16 21:13:47 -07:00
Teddy Warner 83cac5d262 [DOCS] frame flick 2026-06-12 16:06:12 -07:00
Twarner491 1bb6d27e40 [DOCS] affiliate links 2026-06-12 16:00:26 -07:00
Teddy Warner cc9469d695 [FEAT] frame: e-ink wall display mirroring the live collage 2026-06-12 10:00:20 -07:00
Teddy Warner 02dd83e516 [FEAT] atlas: sticky sort bar + 1K card counts + trimmed empty hint (#7) 2026-06-11 18:55:07 -07:00
Teddy Warner 4498dd54c4 [BUG] api: resolve recordings by DATABASE_LANG name + allow Unicode filenames (#6) 2026-06-11 18:07:22 -07:00
Teddy Warner e5bb5fbbc8 [BUG] atlas: open morph no longer snaps the card on a quick close (#5) 2026-06-11 17:39:00 -07:00
Karina Macancela 50e7012c64 Fix atlas modal close snap (#3) 2026-06-11 17:32:52 -07:00
Twarner491 9b262ffa34 [DOC] document the illustration regeneration pipeline 2026-06-08 12:00:36 -07:00
Twarner491 ee5fffd8fb [FEAT] scripts: adversarial species-ID and anatomy verifier 2026-06-08 12:00:36 -07:00
Twarner491 23fa8311f8 [FEAT] scripts: cream-ground generation and BiRefNet cutout pipeline 2026-06-08 12:00:36 -07:00
Twarner491 68b216745e [FEAT] collage: refreshed bird library, rare flight poses, responsive layout 2026-06-08 12:00:36 -07:00
Twarner491 8025dfa88d [FEAT] ui: auto-close menu on nav + click-to-advance segmented toggles 2026-06-05 16:37:10 -07:00
Twarner491 511e0bfb24 [FEAT] motion: staggered view entrances synced to the slide + card↔modal morph 2026-06-05 16:36:56 -07:00
Twarner491 85afadb058 [BUG] spectrograms: render live & modal strips in the active theme 2026-06-05 16:36:30 -07:00
Twarner491 a0f8d57708 [FEAT] atlas: spectrogram preview on card play + "lifer" badge 2026-06-05 16:35:54 -07:00
Twarner491 ddb7c557e9 [FEAT] stats: editorial detection timeline, a column per species 2026-06-05 16:34:46 -07:00
Twarner491 1897a5848b [FEAT] audio: exclusive playback — starting one clip stops the others 2026-06-05 16:34:21 -07:00
Twarner491 4fb21fe01d [FEAT] theme: light/charcoal dark mode with a persistent switcher 2026-06-05 16:34:08 -07:00
Twarner491 4e43b5ee69 [BUG] api: resolve recording/spectrogram dirs by normalized species name 2026-06-05 16:28:18 -07:00
Twarner491 b8b97893a1 [CHORE] gitignore local session data & large reference assets 2026-06-05 16:28:18 -07:00
Teddy Warner e369a7d052 [DOC] Raspberry Pi Zero 2 W only upstream guide 2026-05-31 09:02:13 -07:00
Twarner491 ca225e1482 [DOC] readme: passwordless sudo note 2026-05-31 08:45:47 -07:00
Twarner491 11b80c946f [BUG] caddy: detect php-fpm socket dynamically 2026-05-31 08:45:47 -07:00
Twarner491 038b17c6c1 [PROD] refined php int 2026-05-28 15:39:58 -07:00
Twarner491 ec167eac7b refined readme 2026-05-28 15:23:26 -07:00
Twarner491 87981a62fb [PROD] 2026-05-28 15:15:22 -07:00