github tphakala/birdnet-go nightly-20260309-390
Nightly Build nightly-20260309-390

latest release: nightly-20260309-391
pre-release10 hours ago

BirdNET-Go Changelog

What's New since nightly-20260118

Normalized Database Schema (V2)

This release introduces a completely redesigned, normalized database schema that replaces the legacy flat structure. The new V2 schema is the foundation for upcoming features and is required for all new functionality going forward.

What changed: The database now uses a properly normalized design with separate tables for labels, models, and predictions linked by foreign keys. This enables multi-model support, model-specific labels, and significantly more efficient queries.

Migration: Existing installations can migrate to the new V2 schema from the System / Database dashboard. The migration runs in phases with progress tracking and validation and must be initiated manually by the user. Fresh installations start directly with the V2 schema.

Why it matters: Features like the new alerting rules engine, advanced analytics, and the database dashboard all require the V2 schema. Future features will be built exclusively on this foundation.

Alerting Rules Engine

A fully configurable notification alerting system with a rules engine. Define custom rules that trigger notifications based on detection events and system conditions. The notification settings page has been redesigned with dedicated tabs for Channels, Rules, and History.

  • Create rules with flexible conditions (species, confidence thresholds, time windows)
  • Route alerts to different notification channels
  • Contextual messages in alert notifications
  • User-friendly error classification for failed alerts
  • MQTT publish failure alerts

Advanced Analytics Page

A new analytics page providing detailed statistical insights into your bird detection data. Contributed by @ModerateWinGuy.

  • Comprehensive detection statistics with filtering
  • False positives are excluded from all analytics
  • Weather bar timezone offset fix for accurate hourly display

Browser Terminal

Access a full terminal session directly from the web UI, useful for remote administration of headless installations like Raspberry Pi setups.

  • xterm.js-based terminal with WebSocket PTY bridge
  • Windows ConPTY support
  • Multiple color themes and popout window option

Extended Capture Mode

Extended capture allows the detection window to stretch well beyond the standard 15–60 second capture length, up to 20 minutes. This is designed primarily for recording long vocalizations such as owl calls that span many minutes.

  • Configurable per species, family, or genus via the settings UI
  • Requires explicit opt-in — not enabled by default
  • Not supported on systems with 512 MB or less RAM due to the memory requirements of large audio buffers

Daylight Filter

An optional filter that can discard detections of user-specified nocturnal species during daytime hours, reducing false positives. Users must enable the filter and configure which species are affected. Uses sun position calculations based on your configured location.

Currently Hearing

A new dashboard card showing birds detected in real time. Displays currently active species with wall-clock timestamps, giving you an at-a-glance view of what's being heard right now.

Bird Image Proxy

Bird species images are now served through the Go backend with a local file cache, instead of loading directly from external sources. This improves page load times, reduces external network requests, and works better on installations with limited or intermittent internet connectivity.

PWA Support

BirdNET-Go can now be installed as a Progressive Web App on mobile devices and desktops. Add it to your home screen for a native app-like experience.

Quiet Hours

Per-source quiet hours scheduling allows you to pause audio capture during specific time windows. Useful for reducing noise from non-bird sources during known quiet periods. Contributed by @iamrans0m00.

Events API

A new events API provides access to detection and system event history through structured JSONL logs. Supports timezone-aware date filtering and authenticated access.

Spectrogram Performance

Spectrogram generation has been dramatically optimized, which significantly improves web UI responsiveness — especially on resource-constrained devices like Raspberry Pi 3 and 4.

  • ~20x faster spectrogram generation by using FFT-friendly dimensions for sox
  • ~30x faster audio duration queries by replacing ffprobe with sox --info
  • Optimized loading with a state machine that prioritizes visible content
  • Cache headers and lazy loading for spectrogram images

Reverse Proxy Support

Universal reverse proxy support for Home Assistant ingress and custom proxy setups. BirdNET-Go now correctly handles forwarded headers and base path prefixes, making it work seamlessly behind nginx, Caddy, Traefik, or HA ingress.

System Page Redesign

The system overview page has been redesigned with a data-dense layout featuring live sparklines for CPU, memory, disk, and BirdNET inference time. Metrics history is stored in an in-memory ring buffer for smooth real-time visualization. Auto-refresh replaces the manual refresh button.

Detection Pages Redesign

  • Detection detail page has been completely redesigned
  • Detections listing now supports column sorting and a card view
  • Server-side sorting for the detections API

Database Dashboard

A new database dashboard shows migration status, database performance metrics, and storage statistics with live sparklines. Available for both legacy and V2 datastores.

Internationalization

Two new languages added: Slovak and Italian, bringing the total to 10 supported locales.

The i18n system has been expanded significantly:

  • Backend notification content is now translatable
  • API error responses include translation keys for frontend localization
  • Alert rule names and notification titles are translated
  • Toast notifications are fully translated
  • Error fallback strings on the frontend are localized

NTFY Improvements

  • Protocol auto-detection for NTFY server connections
  • Test Connection button to verify NTFY setup from the settings page
  • Fixed time.Duration corruption in push notification settings

Bug Fixes

  • Fixed audio equalizer filters not being applied to FFmpeg streams
  • Fixed RTSP transport flag being incorrectly applied to non-RTSP streams
  • Fixed equalizer Hz bandwidth to octaves conversion for correct RBJ cookbook filter behavior
  • Fixed audio device listing backend mismatch and duplicate key crash
  • Fixed audio card display name resolution from system device list
  • Fixed dashboard config not loading before daily summary fetch
  • Fixed species name disappearing at wide viewports in detections listing
  • Fixed species include list not searching all BirdNET labels
  • Docker: skip chown on NFS mounts to prevent ownership conflicts
  • Fixed broken systemd service generation on systems without /dev/snd
  • Fixed race condition in range filter settings swap
  • Fixed SSE heartbeat interval to prevent WriteTimeout race conditions
  • Fixed CSRF cookie refresh to prevent sporadic 403 errors on review save
  • Fixed duplicate key errors in dashboard daily summary
  • Added retry with backoff for audio playback on 404
  • Fixed shutdown bugs: database double-close, 9-second hang, goroutine race
  • Fixed SSE connections not closing before HTTP server shutdown
  • Fixed i18n translation cache bugs causing stale translations
  • Fixed detection deduplication to prevent silent detection loss
  • Restored version and build date display on About page
  • Fixed privileged context menu options being visible to guest users
  • Fixed WCAG AA contrast issues in system components

Contributors

Thanks to community contributors in this release:

Don't miss a new birdnet-go release

NewReleases is sending notifications on new releases.