Skip to content

feat: soundcloud likes, playback restore and saved yt playlists - #9

Merged
Nxssie merged 4 commits into
mainfrom
feat/android-app
Sep 11, 2026
Merged

Nxssie merged 4 commits into
mainfrom
feat/android-app

Conversation

@Nxssie

@Nxssie Nxssie commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • Library: list YouTube Music playlists saved from other creators (InnerTube browse fallback) and show the owning channel on desktop and Android.
  • SoundCloud likes: like/unlike tracks from search, library and now playing on Android, with an optimistic permalink-keyed cache.
  • Android playback: persist queue, index, position and modes; restore paused on launch and resolve the stream only on play.
  • Android login: fix the SoundCloud WebView so the DataDome challenge renders and passes (match-parent layout, real mobile UA without wv, cookie reset per attempt).

Test plan

  • Android: sign in to SoundCloud, confirm the captcha appears and the session completes
  • Android: like/unlike from search, library and now playing; hearts stay in sync
  • Android: play, kill the app, relaunch; queue and position restored, playback resumes on tap
  • Desktop and Android: saved YouTube Music playlists appear with owner label

🤖 Generated with Claude Code

- The Data API only returns playlists owned by the channel; saved ones come
  from the authenticated Music InnerTube browse and fall back to it on error
- Show the owning channel next to the song count on desktop and android
- Likes are cached by permalink so search, library and now-playing can all
  show the heart without a numeric id; toggles are optimistic with rollback
- Http gains a generic request() for the PUT/DELETE like endpoints
- Persist queue, index, position and modes to playback.json via atomic
  rename; checkpoint every 5 s while playing and on every state change
- Restore paused and resolve the stream only when the user presses play,
  so launch costs no network and makes no sound
- Give the WebView match-parent params so the 100vh captcha overlay renders
  instead of collapsing to 0px
- Keep the real mobile Chrome UA (minus the wv marker) since DataDome
  rejects a desktop Safari UA on a Chromium touch device
- Clear WebView cookies per attempt so a stale verdict does not follow
  retries; enable WebView debugging in debug builds
@Nxssie
Nxssie merged commit 4dad8a0 into main Sep 11, 2026
5 checks passed
@Nxssie
Nxssie deleted the feat/android-app branch September 11, 2026 05:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant