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

pre-release18 hours ago

🚀 Major Features & Improvements

Push Notification System (#1336, #1348, #1349, #1352, #1353, #1354) 🌟 Community Contribution by @cameronr

  • Production-Ready Infrastructure: Complete push notification system with Shoutrrr, webhooks, and script providers
  • Advanced Reliability: Circuit breakers, health checks, metrics, and rate limiting for DoS protection
  • Comprehensive Telemetry: Privacy-first Sentry integration with 15 Prometheus metrics for observability
  • Webhook Provider: Multi-endpoint failover, flexible auth (Bearer/Basic/custom headers), templated JSON payloads
  • Secure Token Management: Environment variables, file-based secrets (Docker/Kubernetes), runtime resolution
  • Multi-Layer DoS Protection: Circuit breakers + rate limiting + retry backoff + timeout protection
  • Maintained Fork Migration: Updated from deprecated containrrr/shoutrrr to actively maintained nicholas-fedor/shoutrrr
  • Impact: Enterprise-grade notification delivery with full operational visibility and automatic failure recovery

Go 1.25 Modernization (#1292, #1289, #1291, #1294, #1295)

  • Enhanced Test Organization: T.Attr() metadata for better CI filtering and debugging across test suite
  • Modern WaitGroup Patterns: sync.WaitGroup.Go() for cleaner goroutine management
  • API v2 Test Improvements: Leverages Go 1.25 features with comprehensive test coverage
  • Devcontainer Upgrade: Go 1.25.1 with TensorFlow dependencies
  • myaudio Tests: Modernized with Go 1.25 features, fixed test timeouts
  • Documentation: Comprehensive Go 1.25 testing features and upgrade infrastructure guide
  • Impact: Improved test reliability, maintainability, and developer experience with latest Go features

Audio Capture Enhancements (#1268, #1269)

  • Dynamic Capture Length: User-configurable 10-60 seconds (replaces fixed 15-second)
  • Pre-Capture Timing: Configurable 0 to 1/2 of capture length for better detection coverage
  • Audio Gain Adjustment: -40 to +40 dB using FFmpeg volume filter
  • EBU R128 Normalization: Professional loudness normalization (target LUFS, loudness range, true peak)
  • Professional UI Controls: Capture length slider, gain slider, normalization controls with progressive disclosure
  • Real-Time Validation: Dynamic pre-capture validation prevents misconfiguration
  • Impact: Flexible audio processing tailored to various recording environments and bird species

Dashboard User Experience (#1312)

  • Sticky Date Selection: Smart 30-minute date retention using hybrid URL + localStorage
  • Priority Logic: URL parameters → Recent localStorage → Current date fallback
  • Browser Navigation: Proper support for back/forward buttons with date persistence
  • Configurable Retention: 15-30 minute retention period (30 minutes default)
  • Impact: Seamless dashboard navigation without constantly re-selecting dates

Podman Support (#1248)

  • Complete Parallel Support: Full Podman configuration alongside existing Docker functionality
  • Docker-to-Podman Migration: Automatic conflict detection, graceful service transition, data preservation
  • Rootless Container Support: Enhanced security with rootless Podman containers
  • Multi-Platform: Tested on Fedora, Ubuntu, Debian, RHEL family
  • Backward Compatible: Existing Docker configurations continue working unchanged
  • Impact: Modern container runtime options with enhanced security for advanced users

FFmpeg Version Detection (#1343, #1345)

  • Runtime Version Detection: Automatic FFmpeg version detection for intelligent feature decisions
  • Spectrogram Optimization: Eliminates unnecessary ffprobe calls on FFmpeg 7.x+
  • Bug Workaround: Handles FFmpeg 5.x duration metadata bug automatically
  • Zero User Impact: All optimizations happen transparently based on detected version
  • Impact: Improved performance and reliability across different FFmpeg versions

Hemisphere-Aware Seasonal Tracking (#1323)

  • Smart Hemisphere Detection: Automatic detection from latitude coordinates
  • Correct Seasonal Display: Proper "spring" for southern hemisphere users (previously showed "fall")
  • Generalized Year-Crossing: Handles any season starting in previous year
  • No Configuration Required: Eliminates manual config file editing workaround
  • Impact: Accurate seasonal bird tracking for users worldwide

Docker Base Image Upgrade (#1340)

  • Debian 13 Trixie: Upgraded from Debian 12 Bookworm to latest stable Debian 13
  • Security Updates: Latest system packages and security fixes
  • Multi-Platform Verified: linux/amd64 and linux/arm64 tested
  • Go 1.25.1 Maintained: Consistent Go build environment
  • Impact: Latest security patches and improved platform compatibility

🔧 Bug Fixes & Reliability

Critical Bug Fixes (#1350, #1351, #1341, #1307, #1338, #1344)

  • Linter Zero-Error Policy: All golangci-lint errors resolved with improved maintainability (#1350)
  • Goroutine Leak Fixed: Toast filter tests now properly clean up goroutines (#1351)
  • MinDetections Accuracy: Removed incorrect detection window scaling from minDetections calculation (#1341)
  • Temp File Race Conditions: Properly handle temp file race conditions during disk walk (#1307)
  • Transaction Isolation: Add isolation to GetSpeciesSummaryData to prevent race conditions (#1338)
  • Install Script Cleanup: Clean up parent directory when empty after data removal (#1344)

MQTT Improvements (#1287, #1288, #1229, #1241)

  • Reconnection Cooldown: Resolved automatic reconnection cooldown conflict (#1287)
  • Node Name in Messages: Added node name to sound level MQTT messages (#1288)
  • Occurrence Values: Fixed missing occurrence values in MQTT messages (#1229)
  • EOF Error Handling: Improved disconnect timeout handling to prevent EOF errors (#1241)

Database & Query Fixes (#1226, #1326, #1333, #1242, #1309)

  • Column Mismatch: Removed non-existent source_safe column from search query (#1226)
  • MySQL Syntax: Resolved MySQL syntax error in analytics datetime queries (#1326)
  • NULL Handling: Handle NULL species_code values in analytics queries (#1333)
  • Timestamp Race Condition: Resolved race condition in species summary endpoint (#1242)
  • Grid Sorting: Improved daily summary grid sorting stability (#1309)

Frontend Fixes (#1313, #1310, #1332, #1290, #1219, #1225)

  • DatePicker Improvements: Enhanced i18n, types, and accessibility (#1313)
  • Spectrogram Alignment: Fixed container alignment and loading states (#1310)
  • Form Validation: Removed form validation from support dump fields (#1332)
  • iOS Safari Playback: Fixed audio playback through Cloudflare on iOS Safari (#1290)
  • Timezone Bugs: Resolved timezone bugs in date string parsing across frontend (#1219)
  • Cache Busting: Version-based cache busting for Svelte assets (#1225)

OAuth & Settings (#1195, #1194, #1193)

  • OAuth Callback Fix: Resolved callback URL mismatch causing 404 errors with dual-route support (#1195)
  • Security Settings API: Enable security settings updates via API (#1194)
  • Node Name & Time Format: Allow updates via web UI (fixes persistent settings bug) (#1193)

RTSP & Audio (#1257, #1222)

  • Ampersands in RTSP URLs: Allow ampersands in RTSP URL query parameters (#1257)
  • URL Parsing: Removed strict RTSP URL parsing to prevent regression (#1222)

Species Tracking (#1205, #1201, #1293)

  • Winter Season Bug: Resolved winter season adjustment bug in species tracking (#1205)
  • Config Persistence: Resolve zero value omission in species configuration (#1201)
  • Package Refactoring: Moved species tracker to dedicated package for better organization (#1293)

Testing & Reliability (#1217, #1238, #1285)

  • Imageprovider Tests: Resolved test timeout and goroutine leaks (#1217)
  • Wikipedia API: Improved logging and fixed Wikipedia API issues (#1238)
  • Disk Manager: Ignore .temp files during directory walk (#1285)

Memory & Performance (#1296)

  • Disk Manager Optimization: Optimized memory usage and reduced allocations (#1296)

📦 Installation & Support Improvements

Install Script Enhancements (#1224, #1228, #1247)

  • Version Management: Comprehensive version management and rollback system
  • Port Validation: Checks all required ports (80, 443, 8080, 8090) before installation
  • Process Identification: Shows which processes are using occupied ports with actionable error messages
  • GitHub Issue Requirement: Mandatory GitHub issue number for support uploads
  • Support Bundle Diagnostics: Comprehensive diagnostic collection including journal logs, file logs, config/system collection

Cockpit Integration (#1243)

  • Optional Installation: Cockpit web-based management as final installation step
  • Smart Status Tracking: Tracks user choice to avoid repeated prompts
  • Existing Installation Detection: Detects if Cockpit already installed
  • Impact: Easy system management option for users preferring web-based admin tools

Spectrogram Improvements (#1277, #1310, #1345)

  • Generation Resiliency: Improved spectrogram generation reliability (#1277)
  • Container Alignment: Fixed alignment and loading states (#1310)
  • FFmpeg 7.x Optimization: Optimized generation for FFmpeg 7.x+ (#1345)

Wikipedia Provider (#1240)

  • Circuit Breaker: Enhanced with circuit breaker and lazy initialization
  • Reliability: Improved failure handling and recovery
  • Impact: More reliable species image and information retrieval

Context Propagation (#1334)

  • Analytics Functions: Added context propagation to datastore analytics functions
  • Better Cancellation: Improved request cancellation and timeout handling
  • Impact: More responsive analytics queries with proper timeout handling

📦 Dependencies & Maintenance

Node.js Upgrade (#1311)

  • Upgraded from Node.js v20 to v24 across all build environments
  • Modern JavaScript features and improved performance
  • Enhanced security with latest LTS version

Go Dependencies (#1276 + multiple Dependabot PRs)

  • Updated to latest versions of all major dependencies
  • github.com/stretchr/testify v1.10.0 → v1.11.1
  • google.golang.org/api v0.247.0 → v0.251.0
  • github.com/markbates/goth v1.81.0 → v1.82.0
  • github.com/eclipse/paho.mqtt.golang v1.5.0 → v1.5.1
  • github.com/getsentry/sentry-go v0.35.1 → v0.35.3
  • golang.org/x/net v0.43.0 → v0.44.0
  • golang.org/x/sync v0.16.0 → v0.17.0
  • golang.org/x/time v0.12.0 → v0.13.0
  • gorm.io/gorm v1.30.1 → v1.31.0
  • go.uber.org/mock v0.5.2 → v0.6.0

Frontend Dependencies (#1280, #1324)

  • vite v7.0.6 → v7.1.5
  • tar-fs v3.1.0 → v3.1.1 (security update)

License Documentation (#1216, #1256, #1275, #1286, #1322, #1331, #1346, #1251, #1337)

  • Multiple dependency license documentation updates
  • Automated AUTHORS file updates

Documentation (#1327) 🌟 Community Contribution by @Maarc

  • Minor typo fixes in documentation

Full Changelog: nightly-20250825...nightly-20251007

Don't miss a new birdnet-go release

NewReleases is sending notifications on new releases.