Commit Graph

3060 Commits

Author SHA1 Message Date
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 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 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
Twarner491 37b7c9e6a7 fix(caddy): override php_fastcgi try_files to prefer index.html 2026-05-28 14:31:30 -07:00
Twarner491 4fea750146 Menu: fix broken 'logs' link + add 'detections' shortcut
The 'logs' menu item pointed at /views.php?view=Log+Out which doesn't
exist in BirdNET-Pi's view router - hitting that link returned a
blank page. Renamed to 'log' and pointed at the correct view='View+Log'.

Added a 'detections' item pointing at view='Todays+Detections' (the
most useful BirdNET-Pi page for a casual user, faster to reach than
clicking through /index.php).

Valid view= values pulled from homepage/views.php:142-161.

Also added .DS_Store to .gitignore.
2026-05-28 12:39:05 -07:00
Twarner491 35eed2a885 Atlas modal: pose toggle + wiki descriptions
avian/api/cutout.php: read ?pose=N parameter. pose=1 (default) serves
<slug>.png, pose=2 serves <slug>-2.png, etc. Pose >1 missing falls
back to pose-1 instead of skipping to the photo cutout so the flight
tab still shows something recognisable. Pose clamped to 1-99 to
block path-traversal payloads.

avian/api/wiki.php (new): Wikipedia REST summary proxy. Returns
{extract, thumbnail, title}. Thumbnail host pinned to wikimedia.org/
wikipedia.org to block SSRF. Cached for 24h.

avian/frontend/apt.js: fetch wiki descriptions from ./avian/api/wiki.php
(was hitting the worker's /api/wiki.json which 404'd in our overlay).
2026-05-28 12:16:08 -07:00
Twarner491 0105fb54f0 Menu: rename 'avianvisitors' link to 'github' + add built-by attribution
avian/api/menu.php: 4th drawer link label is now 'github' (shorter,
matches what the link actually points to).

avian/frontend/index.html: 'built by teddy' attribution sits below
the menu items (sibling of #dd-items inside #menu-dd) so it shows in
both local and forwarded modes. Drops the redundant 'built with
AvianVisitors' line that lived inside the lock screen - the github
menu item covers source-of-truth attribution.
2026-05-28 12:10:09 -07:00