Rework the music UI: circles/squares instead of movie posters, a real now-playing screen #11
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/music-ui"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
tiles.ts'stileHtml()now dispatches on Emby type:MusicArtistgets a circular tile (no hover overlay - there's only ever one action, open the artist page),MusicAlbumgets a square tile. Zero changes needed at any of the three call sites (home carousels, library grid, artist page) since the dispatch lives inside the one shared function.views/artistgets a real hero header (circular photo, album count, a pill-shaped play button) - newArtist.css, this page had none before.views/albumkeeps its existing header shape (already square/flex-row) but gains the same pill play button, aheroKicker("Album · 2023"), and each track row's wide text button becomes a small icon that swaps play/plus with the same two states as before.musicBar/MusicBargains a real mobile "now playing" full-screen view - tap the new collapsed#mobileMiniBarto expand#musicBarPanelinto a full-screen overlay, close via a new chevron. Desktop keeps the bar always visible, restyled as a centered 3-column layout. None of the existing cast/HLS/seek/vote logic was touched - only the DOM/CSS around it.Context
Follows a round of mockups explicitly inspired by mainstream music apps, confirmed before implementation. Deliberately invents nothing without a real data source behind it - no "popular tracks" (no listening-stats endpoint), no previous-track (no playback history, just the shared queue), no favorites (no such concept server-side).
Worth calling out: the two hero play buttons stay icon+label, not icon-only - this app already standardizes on icon-only for pure transport controls but explicit text for request/action-shaped ones (see docs/architecture.md's player-rework section), and starting/queueing a whole discography reads as the latter. The per-track buttons are the one deliberate exception, since a whole album's worth of them just repeats the same action as the hero button one row up.
Verification
typecheck/build(client only).app.css+ the realShell.html/MusicBar.htmlmarkup, driven with fake artist/album/track data (no Emby login reachable from this sandbox): circular vs. square tiles confirmed viagetComputedStyle(border-radius/aspect-ratio), the per-track play/plus icon swap confirmed per row,#mobileMiniBar's open/close and its guard against the play-button tap driven end to end via real click events..musicBarPlayBigwas silently losing its background/border-radius to.iconBtn's own rule at equal selector specificity (outcome depended on esbuild's bundle order). Fixed with the more specific.iconBtn.musicBarPlayBigselector. Full writeup in docs/architecture.md.Test plan
🤖 Generated with Claude Code