Music provider settings + login UIs (Apple, Spotify, Tidal, Mopidy) - #2
Draft
chrispmonkey wants to merge 5 commits into
Draft
Music provider settings + login UIs (Apple, Spotify, Tidal, Mopidy)#2chrispmonkey wants to merge 5 commits into
chrispmonkey wants to merge 5 commits into
Conversation
- Provider selection (Apple, Spotify, YouTube, Mopidy) with per-provider credential/config fields. - Apple: MusicKit-JS "Sign in with Apple Music", .p8 upload + Key/Team ID, storefront dropdown. - Spotify: OAuth (PKCE) "Connect Spotify Account" with on-device token exchange + callback page. - Mopidy: server URL + Icecast stream URL. - InfoTooltip for "where to get this value" help; SecretInput multiline.
- Drop YouTube Music from the provider selector. - Derive the Spotify OAuth redirect URI from Vite's BASE_URL so it's correct whether Center is served at the root (dev) or under /center/ (hosted).
Tidal option with client id/secret fields and a "Sign in with Tidal" device-authorization flow (shows a code + link.tidal.com, polls until done).
Each settings card (Server, LLM, Music, Services, Developer) now saves and reverts on its own: a scoped Save that persists only that card's changed fields, an "Unsaved" badge on cards with pending edits, a per-section Discard changes and a page-level Discard all, and a sticky summary bar listing the unsaved sections with Save all / Discard all. Saving or discarding one card leaves the others' edits untouched.
The Apple, Spotify, and Tidal account sign-ins persist to the Pin the moment they complete, unlike the fields around them that wait for a Save. Tag each with an "Applies immediately" badge so users don't expect a follow-up Save or think skipping one lost their sign-in.
chrispmonkey
force-pushed
the
tidal-shim-wip
branch
from
July 31, 2026 23:52
bb32dfa to
02e5f36
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft — for review, not merge. The Center (web) UI for the multi-provider music work in PenumbraOS/humane-system-hook#5. Adds a Music settings group with provider selection + per-provider credential/login flows, all talking to the Pin's local API (no shared backend — settings go browser → the user's own Pin).
Music settings
.p8upload (or paste) + Key ID / Team ID + storefront dropdown, and a MusicKit-JS "Sign in with Apple Music" that captures the Music User Token to the Pin.spotify-callback.html; redirect URI derives from the app's base path so it's correct at the root or under/center/).link.tidal.com, polls the Pin until linked). The tooltip explains the exact credential type required.Settings save/discard UX
The settings page previously had a single page-level Save that rebuilt one request for every group and shared one status. This reworks it so each section is self-contained:
Other UX
InfoTooltip(ⓘ) on each field explaining where to get the value; hover-bridge so tooltip links are clickable.SecretInputgained amultilinemode (for the.p8).Notes
tsc,vite build, and the Vitest suite (115 tests) pass; the settings UI was smoke-tested live against a connected Pin.