Files
onvif-go/CHANGELOG.md
T
ProtoTess d990aee323 chore: prepare v1.1.3 release
- Draft release workflow fix
- RTSPeek library integration
- golangci-lint v2 migration
- All code quality improvements
2025-11-18 18:43:00 +00:00

4.7 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

1.1.3 - 2025-11-18

Changed

  • Release Workflow: Create releases as draft initially
    • Fixes "Cannot upload assets to an immutable release" error
    • Releases must be manually published after assets upload
    • Prevents race condition where release publishes before all assets finish uploading

1.1.2 - 2025-11-18

Changed

  • Release Workflow: Upgraded to softprops/action-gh-release@v2
    • Fixes asset upload race condition in v1
    • Better handling of concurrent file uploads
    • Added fail_on_unmatched_files and make_latest flags

1.1.1 - 2025-11-18

Added

  • RTSPeek Library Integration: RTSP stream inspection using github.com/0x524A/rtspeek
    • Replaced command-line ffprobe execution with library-based approach
    • Enhanced stream inspection with codec, resolution, and framerate detection
    • 5-second timeout for stream DESCRIBE operations
    • TCP fallback for basic connectivity checks
    • See cmd/onvif-cli/main.go for implementation

Changed

  • Code Quality Improvements: Fixed all linting errors
    • Removed unused generateDemoASCII() function
    • Fixed dynamic format strings (SA1006 errors)
    • Added proper error handling for Close() operations
    • Migrated to golangci-lint v2 configuration
    • CI/CD pipeline excludes utility tools and examples from linting
  • golangci-lint v2: Updated configuration and GitHub Actions workflow
    • Created .golangci.yml with v2 schema
    • Updated CI to use golangci-lint-action@v8 with v2.2
    • Scoped linting to main packages only

1.1.0 - 2025-11-18

Added

  • Simplified Endpoint API: NewClient() now accepts multiple endpoint formats
    • Simple IP address: "192.168.1.100"
    • IP with port: "192.168.1.100:8080"
    • Full URL: "http://192.168.1.100/onvif/device_service" (backward compatible)
    • Automatically adds http:// scheme and /onvif/device_service path when needed
    • See docs/SIMPLIFIED_ENDPOINT.md for details
  • Localhost URL Fix: Automatic handling of cameras that report localhost addresses
    • Detects and fixes localhost/127.0.0.1/0.0.0.0/::1 in GetCapabilities response
    • Replaces with actual camera IP address
    • Preserves service-specific ports when specified
    • Handles common camera firmware bugs transparently
  • Comprehensive test coverage for endpoint normalization (12 test cases)
  • Comprehensive test coverage for localhost URL handling (10 test cases)
  • New example: examples/simplified-endpoint/ demonstrating all endpoint formats
  • Documentation: docs/PROJECT_STRUCTURE.md explaining project organization
  • Initial release of onvif-go library

Changed

  • Project Structure: Implemented ideal Go project layout
    • Moved soap/ to internal/soap/ (private implementation)
    • Moved test/test-server.go to examples/test-server/ for clarity
    • Removed empty test/ directory
    • Public API remains at root level for clean imports
    • Follows Standard Go Project Layout for libraries
    • Updated all imports throughout codebase
    • See docs/PROJECT_STRUCTURE.md and docs/ARCHITECTURE.md for details
  • Updated docs/ARCHITECTURE.md to reflect new project structure
  • Updated module path from github.com/0x524A/onvif-go to github.com/0x524a/onvif-go (lowercase)
  • ONVIF Client with context support
  • Device service implementation
    • GetDeviceInformation
    • GetCapabilities
    • GetSystemDateAndTime
    • SystemReboot
  • Media service implementation
    • GetProfiles
    • GetStreamURI (RTSP/HTTP)
    • GetSnapshotURI
    • GetVideoEncoderConfiguration
  • PTZ service implementation
    • ContinuousMove
    • AbsoluteMove
    • RelativeMove
    • Stop
    • GetStatus
    • GetPresets
    • GotoPreset
  • Imaging service implementation
    • GetImagingSettings
    • SetImagingSettings
    • Move (focus control)
  • WS-Discovery implementation
    • Automatic device discovery via multicast
  • SOAP client with WS-Security
    • UsernameToken authentication
    • Password digest (SHA-1)
  • Comprehensive type definitions
  • Error handling with typed errors
  • Connection pooling for performance
  • Complete examples
    • Discovery
    • Device information
    • PTZ control
    • Imaging settings
  • Comprehensive documentation
  • README with usage guide