Skip to content

Pineapple 1.3

Choose a tag to compare

@kiinshuk kiinshuk released this 24 Oct 06:46
· 15 commits to main since this release

Pineapple 1.3

Streams YouTube music with as little ceremony as possible — now with a
real artist/album catalogue on top of search and a much tougher
network story.

Install

Download the asset below and sideload it. Android only, native Kotlin.
Android 8.0+ (minSdk 26).

size   2.19 MB (2,201,350 bytes / 2,201,350)
sha256 c2e812e776083fcbcee7058716adc20f645c47070e44253bf2a05f30ba62ec18

What's new

Catalogue (Phase 1 + Phase 2 + 2.5) — surfaced entirely from the InnerTube
payloads Pineapple already fetched.

  • Artist pages: banner header, name, audience line, Top songs, and now
    releases (Albums + Singles & EPs), Videos, Live performances, "Fans might
    also like" (related artists) and a real About/bio block (from the
    description shelf). Tap an album goes to its page, tap a related artist to
    theirs.
  • Album pages: square cover art, artist · year line, kind · N songs · M minutes fact line, ordered track list with play, library participation.
  • Search keeps artist and album doors instead of dropping them at the old
    videoId.isEmpty() guard. An artist or album row now opens a real page
    instead of being a dead entry.

Offline & slow networks (from PR #114):

  • Explicit connectivity checks at the request boundary: distinct
    "You're offline" state with the existing retry, while HTTP / rate / API
    errors keep their own message.
  • Network observer registered in the MainViewModel and released on clear;
    reconnect notices shown alongside cached results without silently
    re-requesting.
  • Cancellation + race-free bootstrap (callback installed before the initial
    snapshot), trySend under lock.

Visual polish (from PR #112):

  • Artwork letterboxing fixed: the player hero now fills its square frame in
    all three states (empty / loading / loaded).

Detail fixes:

  • Like button now fills while playback is paused.
  • Artist avatar now uses the same thumbnail path as tracks.

Verification

  • 40/40 unit tests pass (parsing: 30; network: 10)
  • assembleRelease with R8 + resource shrinking green
  • Debug + release launch clean on a Galaxy M21
  • Protected InnerTube constants untouched
    (PLAYER_CLIENTS, OFFICIAL_MUSIC_TYPES, EXPLORE_BROWSE_ID)

Note

This app uses YouTube's private InnerTube API without an API key, the same
technique NewPipe uses. It is sideloaded and cannot be published to Google
Play
. See Legal.