Major documentation updates: - Streamline README by removing redundant sections - Link to example files instead of duplicating configuration - Fix typos and update model recommendations - Add GPU acceleration documentation link - Remove outdated "Prompt Optimization" section Test suite improvements: - Add comprehensive queue management tests (5 new tests) - Add shuffle control tests (3 new tests) - Fix combined query references to match current system prompt - Update total test count to 53 - Renumber all test sections for consistency - TODO refresh
5.6 KiB
TODO
Development roadmap and future enhancements for Spotify Voice Assistant.
Current Version: v1.0.0
Completed in v1.0.0
- Exact match search for all content types (artists, albums, tracks, playlists)
- Smart playlist search (user playlists first, then public)
- Queue functionality (play vs queue modes)
- Shuffle controls
- Performance caching (Spotify client + user playlists)
- Clear cache service
- Comprehensive test cases
Future Enhancements
1. Podcast Support
Add support for searching and playing podcasts and podcast episodes.
Current limitation:
- Integration only supports music content (artists, albums, tracks, playlists)
Proposed:
- Add
type="podcast"for searching podcasts (shows) - Add
type="episode"for searching specific podcast episodes - Support "Play the latest episode of [podcast name]"
- Support "Play [episode name] from [podcast name]"
Implementation:
- Use Spotify API search types:
showandepisode - Consider caching user's saved/followed podcasts
- Handle episode-specific logic (latest vs specific episode)
- Update Extended OpenAI function definitions
- Update system prompts with podcast examples
- Add podcast test cases to TEST_CASES.md
API endpoints:
client.search(query, ["show"])for podcast searchclient.search(query, ["episode"])for episode searchclient.get_show_episodes(show_id)for getting episodes
2. Saved Content Quick Access
Extend saved/favorite content search beyond playlists.
Currently supported:
- User playlists via
type="playlist"(searches user first, then public)
Proposed additions:
type="saved_tracks"for liked songstype="saved_albums"for saved albumstype="followed_artists"for followed artists
Benefits:
- "Play from my liked songs"
- "Play from my saved albums"
- Faster access to frequently played content
Implementation:
- Use Spotify API:
get_saved_tracks(),get_saved_albums(),get_followed_artists() - Handle pagination for large libraries
- Apply similar caching strategy as user playlists
- Add search/filter capabilities within saved content
3. Configuration Options
Allow users to configure integration behavior via YAML or UI.
Proposed options:
- Number of results to check for exact match (currently hardcoded to 10)
- Cache duration/invalidation behavior
- Default search type when ambiguous
- Logging verbosity level
- Whether to require exact match or allow fuzzy matching
Implementation:
- Add config flow for UI-based configuration
- Support YAML configuration in
configuration.yaml - Ensure sensible defaults
- Document all options in README
4. Artist Filter Parameter
Add optional artist parameter for more precise filtering.
Current approach:
- LLM strips artist from query per system prompt
- Relies on Spotify's search ranking
Proposed:
- Add optional
artistparameter tosearch_spotifyservice - Example:
search_spotify(query="Yellow", type="track", artist="Coldplay")
Benefits:
- More precise matching for common track names (e.g., "Hurt" by NIN vs Johnny Cash)
- Explicit filtering vs relying on search ranking
Trade-offs:
- Requires LLM to extract both query and artist separately
- May reduce natural language flexibility
- Current approach works well for most cases
Implementation:
- Update
services.yamlto add optionalartistparameter - Apply artist filtering in
__init__.py - Update Extended OpenAI function definition
- Maintain backward compatibility
5. HA Assist Integration
Make integration work with Home Assistant's built-in voice pipeline without requiring Extended OpenAI Conversation.
Current limitation:
- Requires Extended OpenAI Conversation (or similar) for function calling
Proposed:
- Register as native Home Assistant intent/sentence pattern
- Work directly with Assist voice pipeline
Trade-offs:
- Would likely require rigid intent patterns ("Play [artist] on [device]")
- Less flexible than LLM-based approach
- May lose natural language advantage
- Music Assistant already provides this via their voice support
Consider:
- Whether this adds value given Music Assistant's HA Assist integration
- Could maintain both approaches (function calling + intent patterns)
6. Multi-room/Group Playback
Add support for playing on speaker groups or multiple devices simultaneously.
Current behavior:
- Plays on single device specified in command
Proposed:
- Support speaker groups defined in Home Assistant
- "Play Coldplay on all speakers"
- "Play Coldplay in the downstairs"
Implementation:
- Detect speaker groups from media_player entities
- Update LLM prompt to understand group concepts
- Test with various Spotify Connect group configurations
7. Playback Context Awareness
Add awareness of what's currently playing for smarter commands.
Examples:
- "Play more like this" - queue similar artists/tracks
- "Who is this?" - return current track/artist info
- "Add this to my workout playlist" - save current track
Implementation:
- Query current playback state from Spotify integration
- Add new service calls for context-aware operations
- Update LLM functions with current playback info
Non-Goals
Things we explicitly won't implement:
- Advanced Spotify API features - Use SpotifyPlus for this
- Multi-provider music aggregation - Use Music Assistant for this
- Rich UI/queue management - Use Music Assistant for this
- Cookie-based authentication - Sticking with OAuth via HA's Spotify integration
Contributing
Have ideas for enhancements? Open an issue or submit a PR on GitHub.