19db372cdc
- Introduced comprehensive data structures for ONVIF device information, capabilities, media profiles, and configurations. - Added types for device services, network settings, imaging options, audio/video configurations, and user management. - Implemented structures for handling various ONVIF features including PTZ control, event subscriptions, and analytics configurations. - Enhanced support for network protocols, security settings, and system logging.
4.7 KiB
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_filesandmake_latestflags
1.1.1 - 2025-11-18
Added
- RTSPeek Library Integration: RTSP stream inspection using
github.com/0x524A/rtspeek- Replaced command-line
ffprobeexecution 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.gofor implementation
- Replaced command-line
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
- Removed unused
- golangci-lint v2: Updated configuration and GitHub Actions workflow
- Created
.golangci.ymlwith v2 schema - Updated CI to use golangci-lint-action@v8 with v2.2
- Scoped linting to main packages only
- Created
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_servicepath when needed - See
docs/SIMPLIFIED_ENDPOINT.mdfor details
- Simple IP address:
- 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.mdexplaining project organization - Initial release of onvif-go library
Changed
- Project Structure: Implemented ideal Go project layout
- Moved
soap/tointernal/soap/(private implementation) - Moved
test/test-server.gotoexamples/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.mdanddocs/ARCHITECTURE.mdfor details
- Moved
- Updated
docs/ARCHITECTURE.mdto reflect new project structure - Updated module path from
github.com/0x524A/onvif-gotogithub.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