An unofficial TIDAL music tool for the Light Phone III, built on the official Light SDK and designed to look and feel like a native LightOS tool: black & white, typography-first, no album art, no feeds, no noise. Just your music.
┌───────────────────────────┐
│ Liked Songs ▶ │
│ │
│ 1. Song Title │
│ Artist · 3:42 │
│ 2. Song Title │
│ Artist · 4:05 │
│ 3. Song Title │
│ Artist · 2:58 │
│ │
│ ★ ◉ ☰ 🔍 ⋯ │
└───────────────────────────┘
The UI follows the design language of echo, a Spotify client for the LP3: Public Sans type, icon tab bar (Liked Songs / Albums / Playlists / Search / Settings), numbered track rows, and a solid seek line on the Now Playing screen. Light and dark themes included.
- Link your TIDAL account with the standard device flow: the phone shows a short
code, you confirm at
link.tidal.comon any other device. No password ever touches the phone. Requires an active TIDAL subscription. - Search tracks, albums, artists, and playlists using the LP3's on-screen keyboard.
- Browse your library: favorite tracks, albums, artists, and your playlists (own + followed).
- Artist pages: top tracks and full discography.
- Playback: play/pause, next/previous, drag-to-scrub, shuffle, repeat (off / all / one).
- Queue management: long-press any track for Play Next / Add to Queue / Go to Album / Go to Artist; in the queue, long-press removes a track, plus Clear Queue.
- Favorites management: star/unstar tracks from the player, favorite/unfavorite artists.
- Quality selection: 96 kbps AAC / 320 kbps AAC / FLAC lossless (hi-res tiers fall back to the best progressive stream available).
- Light & dark themes, matching the LightOS theme system.
This repo follows the Light SDK's intended structure — the SDK scaffolding
(sdk/, plugin/, lint-rules/, MIT-licensed by The Light Phone) is vendored, and
the app lives in the tool/ module as a standard Light tool:
tool/src/main/kotlin/com/kezo/tide/api/Tidal.kt— TIDAL client (Ktor + kotlinx serialization): OAuth2 device flow with token refresh, library/catalog endpoints, search, favorites, and stream-URL resolution. Speaks the same API the open-source ecosystem (e.g. python-tidal) uses.tool/.../player/TidePlayer.kt— queue + playback engine overandroid.media.MediaPlayer(the SDK's allowed-API surface has no media library yet).tool/.../screens/—LightScreen/LightViewModelpairs for home/login, search, lists, artist, player, queue, and settings, built entirely from the SDK's UI kit (LightText,LightTopBar,LightLazyScrollView,LightTextInputEditor,LightIcons, grid units).- Everything passes the Light SDK plugin's restrictions: no blocked Android APIs,
no extra third-party dependencies, metadata declared in
tool/lighttool.toml.
Prerequisites (same as any Light SDK project):
-
JDK 17+, Android SDK with platform 36.
-
A GitHub token with package read access, because Light currently hosts its keyboard library on GitHub Packages (see the SDK quickstart). Put it in
local.properties:sdk.dir=/path/to/android-sdk gpr.user=your_github_username gpr.key=your_github_token
-
Build:
./gradlew :tool:assembleRelease
- On a Light Phone III:
lighttool.tomlships withserverPackage = "com.lightos". Sideload the APK over ADB (adb install tool/build/outputs/apk/release/tool-release.apk). Once Light's community-tool pipeline is live, the intended path is to have Light build and sign the tool from a public git commit of this repo. - On the LightOS emulator: switch
serverPackageto"com.thelightphone.sdk.emulator"intool/lighttool.tomland follow the emulator setup docs (1080×1240, API 34+, no Google Play).
- No background playback yet. The Light SDK currently blocks services and media
libraries, so audio plays while the tool is open and pauses when LightOS pauses the
tool. When Light exposes an audio/background API,
TidePlayeris the single place to swap it in. - Hi-res (DASH) streams aren't parsed; the player steps down to the best progressive stream (FLAC lossless works).
- The TIDAL client credentials in
api/Tidal.ktare the device-flow credentials published across open-source TIDAL clients; you can substitute your own from the TIDAL developer portal.
This is an unofficial client, not affiliated with or endorsed by TIDAL or Light. It streams through the account of the signed-in user, who must hold an active TIDAL subscription. SDK scaffolding © The Light Phone, MIT license (see LICENSE).