fix: simplify audiobook sleep timer custom input; update README
- Remove OK button and expand-on-click from sleep timer custom row - Always show label + plain number input (no spinners, Enter to confirm) - Update README with all current features (Spotify importer, ABS, lyrics, filters, etc.) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
757c7045ba
commit
cf88d87791
3 files changed
+57
-23
No files matched your search
@@ -7,16 +7,45 @@ Built with Vite + vanilla ES modules, served via nginx in Docker.
|
||||
|
||||
## Features
|
||||
|
||||
### Music Library
|
||||
- Stream music from your Navidrome / Subsonic library
|
||||
- Browse artists, albums, playlists, starred tracks and random picks
|
||||
- Queue management with shuffle, repeat (all / once) and radio mode (endless random)
|
||||
- Now Playing overlay with swipe-to-dismiss and lock screen media controls (Android/iOS)
|
||||
- iTunes / Last.fm integration — charts, global search, 30s previews, recommendations
|
||||
- Download tracks from YouTube/SoundCloud via yt-dlp directly into your music library
|
||||
- Duplicate detection — skips tracks that already exist on the server
|
||||
- Edit playlists (name, description, cover art, public toggle)
|
||||
- PWA — installable, offline-capable via service worker
|
||||
- Browse artists, albums, playlists, starred tracks, and random picks
|
||||
- Sort and filter views (albums, favorites) with chip filters
|
||||
- Search/filter bar inside playlist detail and favorites (instant, client-side)
|
||||
- Synced and plain lyrics via LRCLIB (auto-fetched per track)
|
||||
|
||||
### Playback
|
||||
- Queue management with shuffle, repeat (all / once), and radio mode (endless random)
|
||||
- Now Playing overlay with swipe-to-dismiss
|
||||
- Lock screen media controls (Android / iOS via Media Session API)
|
||||
- Gapless-style queue with prev/next, skip forward/back
|
||||
|
||||
### Discovery
|
||||
- iTunes / Last.fm integration — charts, global search, 30-second previews, similar artists, recommendations
|
||||
- Spotify playlist importer — paste a Spotify playlist URL to preview and download all tracks, enriched with iTunes metadata and cover art
|
||||
|
||||
### Downloads (yt-dlp backend)
|
||||
- Download individual tracks, full albums, or entire artists from YouTube / SoundCloud
|
||||
- Spotify playlist importer downloads with iTunes-enriched metadata (album, year, track number, genre, cover art)
|
||||
- Duplicate detection — skips tracks already present on the server
|
||||
- Lyrics embedded into downloaded files (LRCLIB)
|
||||
|
||||
### Playlists
|
||||
- Create, edit, and delete playlists
|
||||
- Edit playlist name, description, cover art, and public/private toggle
|
||||
- Add / remove tracks; reorder via drag and drop
|
||||
|
||||
### Audiobookshelf Integration
|
||||
- Connect to your Audiobookshelf server (URL + API key)
|
||||
- Browse and stream audiobooks from your ABS library
|
||||
- Full player: chapters list, playback speed, sleep timer (preset or custom minutes), progress sync
|
||||
|
||||
### App
|
||||
- PWA — installable on Android / iOS / desktop, offline-capable via service worker
|
||||
- Android APK (WebView wrapper with native feel)
|
||||
- Multiple color themes
|
||||
- Dark theme, mobile-first responsive layout
|
||||
- German UI
|
||||
|
||||
---
|
||||
|
||||
@@ -31,15 +60,23 @@ Music_App/
|
||||
│ ├── player.js # Playback, transport, queue, media session, preview
|
||||
│ ├── views.js # Navigation, page loaders, card makers, search
|
||||
│ ├── ui.js # Modals, overlays, sidebar, settings, context menu
|
||||
│ ├── nowplaying.js # Now Playing overlay
|
||||
│ ├── abs.js # Audiobookshelf integration
|
||||
│ ├── spotify.js # Spotify playlist importer
|
||||
│ ├── components.js # Shared UI components
|
||||
│ ├── themes.js # Theme switching
|
||||
│ ├── pwa.js # Service worker registration + update banner
|
||||
│ └── main.js # App init, audio wiring, window globals
|
||||
├── backend/
|
||||
│ ├── novasonic-server.js # Node.js download backend (yt-dlp + ffmpeg)
|
||||
│ └── lib/
|
||||
│ └── metadata.js # iTunes lookup, lyrics fetch, artwork download
|
||||
├── public/ # Static assets (copied as-is to dist/)
|
||||
│ ├── sw.js # Service worker
|
||||
│ ├── manifest.json # PWA manifest
|
||||
│ ├── icon.svg # App icon
|
||||
│ └── config.js # Runtime config placeholder (generated by Docker)
|
||||
├── backend/
|
||||
│ └── novasonic-server.js # Node.js download backend (yt-dlp + ffmpeg)
|
||||
├── android/ # Android WebView APK wrapper
|
||||
├── index.html # App shell + Vite entry point
|
||||
├── styles.css # All styles
|
||||
├── vite.config.js
|
||||
@@ -104,3 +141,4 @@ npm run preview # Preview the production build locally
|
||||
2. Enter your Navidrome server URL, username and password
|
||||
3. Optionally add a Last.fm API key (Settings) for recommendations and similar artists
|
||||
4. Optionally add the backend URL (Settings) to enable yt-dlp downloads
|
||||
5. Optionally connect Audiobookshelf (Settings) to stream audiobooks
|
||||
Reference in new issue
Block a user