github tphakala/birdnet-go nightly-20260315
Nightly Build nightly-20260315

5 hours ago

This nightly brings major frontend features — OIDC authentication, a color scheme system, audio clip extraction with processing tools, dashboard customization, and weather/moon phase display — alongside a large batch of stability and reliability fixes.

New Features

Authentication & Security

  • OIDC provider support — connect self-hosted identity providers (Keycloak, Authentik, etc.) for single sign-on (#2324)
  • OIDC frontend settings UI — configure OIDC providers directly from the security settings page (#2328)
  • RP-Initiated Logout for OIDC — proper logout flow that signs out of both BirdNET-Go and the identity provider (#2327)
  • TLS certificate management — four certificate modes (none, self-signed, custom, ACME) configurable from the UI (#2288)
  • MQTT TLS certificate management — configure TLS certificates for MQTT connections via the settings UI (#2296)
  • Allow iframe embedding — new option to permit embedding BirdNET-Go in iframes (#2291)
  • Redact credentials from browser logs — sensitive values are scrubbed before reaching the console (#2306)
  • Return error from GenerateRandomSecret — proper error propagation instead of silently returning an empty string (#2307)

Dashboard & UI

  • Color scheme system — predefined color schemes, custom color picker, and server-side persistence (#2252)
  • Customizable dashboard layout — inline editing with adjustable widget widths (#2265)
  • Weather display and moon phase — live weather and moon phase indicator on the dashboard banner (#2300)
  • Dashboard cogwheel settings — new dropdown with map controls and dashboard options (#2289)
  • Settings menu in header — replaced theme toggle with a cogwheel settings menu (#2287)
  • Reset dashboard option — restore dashboard layout to defaults from the header menu
  • Telemetry listen address selector — IP dropdown with port field replaces free-text input (#2257)

Audio & Analysis

  • Audio clip extraction from spectrogram — extract and download audio clips directly from the spectrogram view (#2303)
  • Audio processing toolbar — denoise, normalize, and gain controls for audio playback (#2323)
  • Redesigned audio processing toolbar — unified controls with improved layout (#2334)
  • Audio analysis overload notification — alert when the system cannot keep up with real-time audio analysis (#2286)
  • Audio EQ filter timing diagnostics — timing metrics for audio equalization on RTSP streams (#2262)

Observability & Configuration

  • eBird API key validation — test eBird API connectivity from the settings UI (#2335)
  • Environment detection and CPU details — system info now shows container environment and CPU model (#2264)
  • Backend connectivity check — offline banner and polling guards when the server is unreachable (#2269)

Bug Fixes

Audio & Analysis

  • Wait server-side for audio encoding — prevents premature 503 responses for in-progress encodes (#2284)
  • Prevent analysis buffer overruns — fixes ringbuffer-full conditions under sustained load (#2282)
  • Route FLAC clip extraction through temp file — fixes corrupted FLAC headers in extracted clips
  • Use temp file for AAC/ALAC clip extraction — MP4 muxer requires seekable output
  • Correct file extensions for AAC and OPUS clips — downloads now have the right extension

Frontend

  • Prevent spectrogram flickering on page load — eliminates layout shift when spectrograms render
  • Treat 0-byte spectrogram files as missing — avoids permanent blank spectrograms
  • Confidence circle dark mode fix — no longer renders as a pie chart in dark mode
  • Keep elapsed time running while offline — CurrentlyHearingCard timer continues during connectivity loss (#2275)
  • Use settings store in BannerCard — removes redundant API call (#2321)
  • Responsive audio player image — correct object-fit property for responsive layout
  • Detection card grid layout — improved responsive container queries
  • CSS import order fix — correct import order for schemes.css

Connectivity & Streaming

  • Cancel in-flight ping on watchdog deactivation — prevents stale pings after reconnection (#2278)
  • Replace setInterval with recursive setTimeout — prevents polling pile-up during outages (#2277)
  • Arm SSE error watchdog once per burst — stops duplicate reconnection attempts (#2276)
  • Await initial poll before scheduling next — prevents race condition on first connectivity check
  • Streaming JSON parser buffer persistence — preserves partial chunks across iterations (#2309)
  • Drain result channel on disconnect — prevents goroutine leak when clients disconnect (#2308)

Database & API

  • Populate species_code from eBird taxonomy — fixes missing species codes in v2only datastore (#2233)
  • Pass MySQL database name to schema validation — fixes validation on non-default database names (#2239)
  • Return 404 for missing notification mark-as-read — correct status code instead of 500 (#2280)

MQTT & Streams

  • Propagate stream label updates to MQTT — label changes now take effect without restart (#2279)

Configuration

  • Propagate default transport to RTSP/RTMP streams — stream config inherits the global default transport (#2263)
  • Validate telemetry listen address — validates at startup, API, and runtime to prevent invalid binds (#2253)
  • Reset invalid SummaryLimit — falls back to default instead of blocking startup

Timezone & Display

  • Server timestamp for relative time — fixes cross-timezone display of detection times (#2310)
  • False positive filter detection count — slider now shows the actual computed count (#2312)

Taxonomy

  • Taxonomy synonym fallback for image lookups — falls back to synonym mappings when species images aren't found under the current name

Telemetry

  • Suppress telemetry for image-not-found errors — stops noisy error reports for expected missing images
  • Suppress Sentry for expected mount point failures — no more false alerts in containers (#2281)
  • Suppress Sentry for unregistered sound level processor — eliminates noise from unconfigured processors (#2283)

CI

  • Add explicit permissions to GitHub Actions workflows — follows security best practices (#2320)
  • Normalize audio clip i18n keys — replaces partial translations with English placeholders (#2322)

Don't miss a new birdnet-go release

NewReleases is sending notifications on new releases.