- Add frameset architecture for persistent audio playback across navigation
- Create frameset-wrapper.chtml as main container with two frames
- Create audio-player-frame.chtml for persistent 80px bottom player frame
- Create front-page-content.chtml and player-content.chtml for frame content
- Add routes for frameset wrapper, content frames, and player frame
- Audio continues playing when navigating between pages
- Pure Lisp/HTML solution with no additional JavaScript dependencies
- Player frame includes quality selector and now-playing display
- Updates every 10 seconds via /api/asteroid/partial/now-playing-inline
- Add missing query variable in filterTracks() function
- Reads value from track-search input field
- Bug was pre-existing, not introduced by refactoring
- Add /api/asteroid/partial/now-playing-inline endpoint for inline text
- Refactor admin.js to use server-side partial (removes 23 lines of JSON/XML parsing)
- Fix hardcoded path in convert-to-docker-path to use *music-library-path* variable
- Consistent with front-page and player refactoring from upstream
- Improves portability and reduces client-side JavaScript complexity
- Queue management section with add/remove/clear controls
- Add to Queue button on each track in library browser
- Search tracks and add to queue
- Add 10 random tracks button
- Live stream monitor with Now Playing display
- Toast notifications for user feedback
- Real-time queue updates
- Converted 15 API endpoints from define-page to define-api
- Added JSON API format configuration for proper JSON responses
- Updated all frontend JavaScript files to use new API URLs
- Maintained define-page for HTML pages and static file serving
- Added comprehensive documentation of changes
Benefits:
- Framework compliance with Radiance best practices
- Automatic routing at /api/asteroid/<name>
- Clean lambda-list parameter handling
- Built-in browser/API dual usage support
- Proper HTTP status codes for errors
All API endpoints tested and working correctly.