2.4 KiB
2.4 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.
0.1.0 - 2024-10-12
Added
- Initial release of pmoparadise
- Core HTTP client for Radio Paradise API
- Block metadata fetching with
get_block()andnow_playing() - Five quality levels: MP3 128, AAC 64/128/320, FLAC lossless
- Block streaming with
stream_block()andstream_block_from_metadata() - Prefetching support with
prefetch_next() - Builder pattern for client configuration
- Strong typing for EventId, DurationMs, and Bitrate
- Comprehensive error handling with thiserror
- Optional per-track extraction (feature:
per-track)- FLAC decoding with claxon
- WAV export with hound
- PCM sample reading
- Helper method
track_position_seconds()for player-based seeking
- Optional logging support (feature:
logging) - Complete documentation with examples
- Unit tests for data models
- Integration tests with wiremock
- Three example programs:
now_playing- Display current block and songsstream_block- Stream a block to stdoutextract_track- Extract individual tracks (requires per-track feature)
- CI/CD with GitHub Actions
- MIT/Apache-2.0 dual licensing
Documentation
- Comprehensive README with usage examples
- Detailed module-level documentation
- Rustdoc for all public APIs
- Implementation notes and design decisions
- Clear warnings about per-track limitations
- Best practices for continuous playback
Architecture
- Async/await with tokio runtime
- Feature gates for optional functionality
- Builder pattern for ergonomic configuration
- Type-safe API with minimal runtime overhead
- Stream-based block downloading
- Integration-ready for PMOMusic ecosystem
[Unreleased]
Planned Features
- Support for additional Radio Paradise channels (mellow, rock, world)
- Historical block access by date/time
- Optional block caching layer
- WebSocket support for live updates (if API adds it)
- Performance optimizations for per-track extraction
Known Limitations
- Per-track extraction is resource-intensive (by design)
- No built-in block caching (users implement as needed)
- No authentication support (API is public)
- FLAC seeking requires full decode (claxon limitation)