All notable changes to this project will be documented in this file.
- (audio) Support for multiple RTSP streams
- (birdnet) Range filter model is now selectable between latest and previous "legacy" version
- (birdnet) Added "birdnet-go range print" command which lists all species included by range filter model
- (birdnet) BirdNET overlap setting impacts now realtime process also
- (privacy) Fix defaults for privacy and dog bark filters and fix incorrect setting names in default config.yaml
- (privacy) Do not print dog bark detections if dog bark filter is not enabled
- (privacy) Fix printf declaration for human detection confidence reporting
- (audio) Yield to other goroutines in file_utils, policy_age, and policy_usage
- (build) Linux/arm64 cross-compilation in docker build
- (audio) Refactor analysis and capture buffers to support multiple individual buffers for different audio sources
- (audio) Move RTSP code to rtsp.go
- (rtsp) Update default RTSP URLs to an empty slice
- (rtsp) Update RTSP stream URLs example in config.yaml
- (privacy) Make pricacy filter and dog bark filter source specific
- (build) Move buildDate variable to main.go
- (deps) Bump github.com/spf13/viper from 1.18.2 to 1.19.0
- (deps) Bump github.com/shirou/gopsutil/v3 from 3.24.4 to 3.24.5
- (audio) Disk usage based audio clip retention policy, enabled by default with 80% disk usage treshold
- (conf) Privacy filter Confidence threshold setting
- (conf) Dog bark filter Confidence threshold setting
- (conf) Dog bark filter time to remember bark setting
- (webui) Fix Settings interface load error
- (conf) Refactor configuration package to improve settings handling, easier access to settings in code
- (audio) Audio clip retention policy setting: none, age, usage
- (audio) Age base audio clip retention policy accepts time in days, weeks, months and years instead of hours
- (conf) Many settings renamed
- Update go.mod with github.com/mitchellh/mapstructure v1.5.0
- (birdweather) Added location fuzzing support for BirdWeather uploads, requires support for BirdWeather.com
- (audio) Audio source device is now user configurable
- (audio) Audio clip extraction fixed for occassional non-contiguous clips
- (conf) Move default config file from .go to .yaml and add proper default value initialization
- (conf) Update audio export settings in updateconfig.go and realtime.go
- (deps) Bump golang.org/x/text from 0.14.0 to 0.15.0
- (deps) Bump golang.org/x/crypto from 0.22.0 to 0.23.0
- (deps) Bump github.com/prometheus/client_golang
- Update go version to 1.22.3
- Update golang version to 1.22.3
- Bump HTMX version from 1.9.11 to 1.9.12
- Bump daisyUI to 4.11.1
- Update custom.css to fix theme controller styles
- Update tailwindcss to v3.4.3
- Hide "Detections" column on smaller screens
- Update audio buffer initialization in realtime analysis
- Remove unused import and struct field in audiobuffer.go
- File analysis restored
- Improve audio buffer write function time keeping
- (birdweather) Improve handling of HTTP Responses in UploadSoundscape to prevent possible panics
- (datastore) Refactor datastore Get, Delete and Save methods for efficient transaction and error handling
- (tests) Refactor createDatabase function in interfaces_test.go for improved error handling
- (datastore) Refactor GetClipsQualifyingForRemoval method in interfaces.go for improved input validation and error handling
- Refactor ClipCleanupMonitor function for improved error handling and logging
- (birdweather) Fixed PCM to WAV encoding
- (birdweather) Fixed PCM to WAV encoding
- (birdweather) Increase HTTP timeout to 45 seconds
- (utils) Do not report root user as missing from audio group
- (audio) Fix default audio device reporting
- (audio) Print selected audio capture device on realtime mode startup
- (startup) Enhance realtime mode startup message with system details to help troubleshooting
- (telemetry) Move Prometheus metrics to dedicated package and add pprof debug
- (conf) Remove unused Context struct from internal/conf/context.go
- (processor) Update range filter action to handle error when getting probable species
- (deps) Bump golang.org/x/crypto from 0.21.0 to 0.22.0
- (deps) Bump google.golang.org/protobuf from 1.32.0 to 1.33.0
- (deps) Bump golang.org/x/net from 0.21.0 to 0.23.0
- (go) Bump Go version from 1.21.6 to 1.22.2 in go.mod
- (deps) Bump labstack echo version from 4.11.4 to 4.12.0
- (deps) Bump gorm.io/gorm from 1.25.9 to 1.25.10
- (deps) Bump github.com/gen2brain/malgo from 0.11.21 to 0.11.22
- Fix linter errors
- Fix linter errors
- (workflow) Add tensorflow dependencies to golangci-lint
- (birdnet) Make location filter threshold as configurable value under BirdNET node
- (mqtt) Fix CodeRabbit magled code
- (deps) Bump gorm.io/gorm from 1.25.8 to 1.25.9
- Privacy filter to discard audio clips with human vocals
- Save all BirdNET prediction results into table Results
- (audio) Check user group membership on audio device open failure and print instructions for a fix
- (docker) Added support for multiplatform build
- (conf) New function to detect if running in container
- (docker) Install ca-certificates package in container image
- (capture) Set capture start to 5 seconds before detection instead of 4 seconds
- (capture) Increase audio capture length from 9 to 12 seconds
- (rtsp) Wait before restarting FFmpeg and update parent process on exit to prevent zombies
- (database) Switched sqlite journalling to MEMORY mode and added database optimize on closing
- (workflow) Update GitHub Actions workflow to build and push Docker image to GHCR
- (workflow) Update Docker actions versions
- (workflow) Support multiplatform build with github actions
- (docker) Add ffmpeg to container image
- (labels) Add Greek (el) translations by @hoover67
- (ui) Improve spectrogram generation to enable lazy loading of images
- (make) Improve make file
- Moved middleware code to new file
- Improved spectrogram generation
- Moved middleware code to new file
- (database) Move save to common interface and change it to use transaction
- (analyser) BirdNET Predict function and related types
- (audio) Stopped audio device is now simply started again instead of full audio context restart
- (audio) Disabled PulseAudio to prioritise audio capture to use ALSA on Linux
- (audio) Set audio backend to fixed value based on OS
- (config) Refactor RSTP config settings
- (processor) Increase dog bark filter scope to 15 minutes and fix log messages
- (rtsp) Improve FFmpeg process restarts and stopping on main process exit
- (labels) Update makefile to zip labels.zip during build and have label files available in internal/birdnet/labels to make it easier to contribute language updates
- (audio) Improve way start time of audio capture is calculated
- (capture) Add documentation to audiobuffer.go
- Add git-cliff for changelog management
- (changelog) Update git cliff config
- Remove old commented code
- (docker) Removed commented out code
- (deps) Add zip to build image during build
- (deps) Bump gorm.io/driver/mysql from 1.5.4 to 1.5.6
- (deps) Bump gorm.io/gorm from 1.25.7 to 1.25.8
- (makefile) Update makefile
- (makefile) Fix tensorflow lite lib install step
- (makefile) Fix tflite install
- (assets) Upgrade htmx to 1.9.11
- (workflow) Add windows build workflow
- (workflow) Updated windows build workflow
- (workflow) Add go lint workflow
- (workflow) Remove obsole workflows
- (workflow) Add build and attach to release workflow
- (workflow) Update release-build.yml to trigger workflow on edited releases
- Added directory command
- Config file support
- Config file support
- Estimated time remaining print fixed
- Start and end time fix for stdout