d990aee323
- Draft release workflow fix - RTSPeek library integration - golangci-lint v2 migration - All code quality improvements
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