73 lines
2.4 KiB
Markdown
73 lines
2.4 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [0.1.0] - 2024-10-12
|
|
|
|
### Added
|
|
|
|
- Initial release of pmoparadise
|
|
- Core HTTP client for Radio Paradise API
|
|
- Block metadata fetching with `get_block()` and `now_playing()`
|
|
- Five quality levels: MP3 128, AAC 64/128/320, FLAC lossless
|
|
- Block streaming with `stream_block()` and `stream_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 songs
|
|
- `stream_block` - Stream a block to stdout
|
|
- `extract_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)
|
|
|
|
[0.1.0]: https://github.com/yourusername/pmomusic/releases/tag/pmoparadise-v0.1.0
|