- Introduce `lastSuccessToken` state to track the last verified sync token
- Update manual sync to overwrite local favorites when switching tokens, treating it as a login action rather than a merge
- Prevent auto-sync from running when the current token does not match the last successful one to avoid unintended data uploads
- Move back button to cover image area with updated styling
- Remove sticky top bar for cleaner view
- Add explicit container names in docker-compose.yml
- Replace detached `new Audio()` with rendered `<audio>` element to better support mobile behaviors and standard DOM events
- Introduce `autoAdvanceLockRef` to prevent race conditions where the next song might be triggered multiple times
- Add manual time check near the end of the track to trigger auto-advance, acting as a fallback for the `ended` event
- Update `playNext` logic to handle immediate playback transitions more robustly
- Rename application from TuneHub to Meishi Music in UI and PWA manifest
- Implement cache clearing logic to remove local storage items
- Pass sync state and handlers to the Sidebar component
Add a new sync service and frontend integration to allow syncing
favorites across devices using a token.
- Configure `sync-service` in docker-compose.yml on port 7482
- Add sync token input and manual sync button to SideDrawer
- Implement auto-sync logic to persist favorites to the KV store
- Add logic to merge cloud favorites with local data on initialization
- Add button in side drawer settings to clear local cache data
- Refactor Media Session position updates to trigger on specific events (seek, play/pause, load) instead of every time update
- Add finite number validation for seek operations