Commit Graph
109 Commits
Author SHA1 Message Date
vicrodh cec4c32bcc chore: remove unused CSS selectors from Svelte components
Clean up dead CSS that remained after HTML refactors:
- NowPlayingBar, Sidebar, PlaylistManagerView, FavoritesView
- PlaylistModal, LocalLibraryView, PlaylistDetailView
- Dropdown, MigrationModal, AlbumCard, QualityBadge
- SearchPlaylistCard, LocalLibraryTagEditorModal
- TrackReplacementModal, ImmersiveHeader, SuggestionsPanel
- LyricsFocusPanel, ExpandedPlayer, FocusMode
- ArtistDetailView, SearchView, SettingsView
2026-02-02 22:51:42 -06:00
vicrodh 6ff6269f74 feat(blacklist): add grayout styling for blacklisted artist tracks
- TrackRow: Add isBlacklisted prop with grayout styling and ban icon
- VirtualizedTrackList: Check blacklist status for each track
- PlaylistDetailView: Gray out and restrict actions for blacklisted tracks
- AlbumDetailView: Apply album-level blacklist check to all tracks
- HomeView: Gray out blacklisted tracks in Continue Listening section
- ArtistDetailView: Banner shown when viewing blacklisted artist page

Blacklisted tracks show reduced opacity, ban icon instead of track
number, and restricted menu actions (navigation only, no playback).
2026-02-02 14:17:01 -06:00
vicrodh bdffe6c709 feat(blacklist): add toast notifications for blacklist operations
- Show success/error toasts when adding/removing artists
- Show feedback when enabling/disabling blacklist
- Show confirmation toast when clearing all artists
2026-02-02 14:06:10 -06:00
vicrodh e1849f0bb3 feat(blacklist): add frontend store and artist page UI
Phase 3 (minimal) - UI for testing:
- Add artistBlacklistStore.ts with O(1) local checks
- Initialize store on app startup
- Add blacklist toggle button to ArtistDetailView
- Button shows red when artist is blacklisted

cc
2026-02-02 13:18:38 -06:00
vicrodh 583bf8f774 Merge PR #35: Make release sort options on artist detail view sticky and global 2026-01-31 20:07:13 -06:00
Joel C 40cd8ddb70 Make release sort options on artist detail view sticky and global
This way the selected options are applied to all artists,
and persisted after app restart.
2026-01-31 17:12:27 +01:00
vicrodh c0e9a94f98 Refactor quality badges to use QualityBadge component with compact mode
- Add compact prop to QualityBadge for inline usage in track lists
- Compact mode shows simple text (24bit/96kHz or CD Quality)
- Use golden gradient for hires badges in compact mode
- Update ArtistDetailView to use QualityBadge compact
- Update FavoritesView to use QualityBadge compact
- Update SearchView to use QualityBadge compact
- Remove duplicate CSS and getQualityLabel functions
- LocalLibrary views keep custom format showing codec (FLAC 24/96)
2026-01-28 19:28:43 -06:00
vicrodh aa224d7167 Standardize quality badges and fix header favorite button
- Use golden gradient (#fbbf24 to #b8860b) with dark text for hires badges
- Increase min-width to 90px for consistent sizing across all badges
- Rename track-row favorite button to avoid CSS conflict with header button
- Header favorite button now properly circular like radio and network buttons
2026-01-28 19:14:52 -06:00
vicrodh eef89f904c Fix quality badge and favorite button styling in ArtistDetailView
- Use correct quality badge colors (alpha variables, orange gradient for hires)
- Fix favorite button to match TrackRow component styling (opacity-based)
2026-01-28 19:04:14 -06:00
vicrodh 0354917221 Add search re-focus, quality badges in artist view, fix favorites quality label
1. Search: Re-clicking Search button in sidebar scrolls to top and focuses input
   - Added triggerSearchFocus mechanism in searchState store
   - SearchView subscribes to focus trigger for scroll + focus

2. ArtistDetailView: Added quality badge and favorite button to Popular Tracks
   - Added getQualityLabel function with bit depth/sample rate
   - Added quality-badge element with hires styling
   - Added favorite button in track actions

3. FavoritesView: Fixed getAlbumQualityLabel to show detailed format
   - Now shows "24bit/96kHz" instead of generic "Hi-Res"
2026-01-28 18:45:21 -06:00
vicrodh c5c6ddc721 Fix ArtistNetwork sidebar height to fit content area
- Use top/bottom positioning instead of calculated height
- top: 32px (below title bar), bottom: 104px (above player)
- Add adjustment for when title bar is hidden (top: 0)
- Sidebar now always fits within visible content area
2026-01-27 04:54:18 -06:00
vicrodh 01c21fffb1 Rename "Play later" to "Add to queue" in all menus
Changes the menu action label from "Play later" to "Add to queue"
for better clarity and consistency with standard music player UX.

Updated in:
- AlbumMenu.svelte
- TrackMenu.svelte
- ArtistDetailView.svelte (tracks context menu)

Relates to #21
2026-01-25 23:55:48 -06:00
vicrodh e9c7e4672c Add release date display to AlbumCard overlay
- Add releaseDate prop to AlbumCard component
- Display release date below genre in overlay (format: "Jan 25, 2026")
- Update all AlbumCard usages across views to pass releaseDate:
  - ArtistDetailView (all album sections)
  - HomeView (all featured album sections)
  - SearchView (search results)
  - FavoritesView (favorite albums)
  - LabelView (label albums)
  - AlbumDetailView ("By the same artist" section)
- Add releaseDate to types and adapters
- Skip local library view (VirtualizedAlbumList)
2026-01-25 23:47:33 -06:00
vicrodh 2c6cf6a56c feat: add musician resolution to Member Of section
Groups/bands in the sidebar now use the musician resolution flow.
Since bands typically have Qobuz artist pages, they resolve as
confidence=3 (Confirmed) and navigate directly to the artist page.
2026-01-25 22:29:26 -06:00
vicrodh 9b47a8bde2 feat: add musician click handlers to artist sidebar members
Wire up onMusicianClick for Members & Former and Collaborators
sections in ArtistDetailView sidebar. Clicking a member now triggers
the musician resolution flow (modal for weak confidence, musician
page for contextual, or artist page for confirmed).

Uses the first role from MusicBrainz relationships or defaults to
"Band Member" / "Collaborator" as the role parameter.
2026-01-25 22:26:04 -06:00
vicrodh f92db3d675 feat: hide MusicBrainz Relationships section when disabled or unavailable
- Add mbAvailable state to track MusicBrainz availability
- Set mbAvailable=false when MB is disabled or API fails
- Wrap entire Relationships section with {#if mbAvailable}
2026-01-25 21:48:42 -06:00
vicrodh 6651ba84b4 fix: filter labels to only include main Discography albums
- Only extract labels from albums categorized as 'albums' (Discography)
- Excludes EPs, live albums, compilations, tributes, and others
- Change icon from Tag to Disc (record label, not tag)
2026-01-25 21:14:49 -06:00
vicrodh 9f104433f3 feat: implement Labels section in Artist Network sidebar
- Add labels field to ArtistDetail type
- Extract unique labels from artist albums in convertQobuzArtist
- Update appendArtistAlbums to merge new labels
- Display labels in sidebar with click navigation to label view
- Use Tag icon from lucide-svelte
2026-01-25 21:10:18 -06:00
vicrodh e9eff7403d fix(sidebar): remove top gap, align with title bar (top: 32px)
cc
2026-01-25 20:59:52 -06:00
vicrodh 562c770cf9 feat(sidebar): add content sidebar store for mutual exclusion
- Add ContentSidebarType to sidebarStore
- Network sidebar uses store for open/close
- Prepared for lyrics/queue integration

cc
2026-01-25 20:53:05 -06:00
vicrodh 8236f3683a refactor(sidebar): match Lyrics sidebar style, use element-connect icon
- Remove ended visual distinction (all members same style)
- Match Lyrics sidebar dimensions (340px, same height)
- Update header structure to match Lyrics
- Use element-connect.svg icon
- Equal spacing between items in all sections

cc
2026-01-25 20:51:07 -06:00
vicrodh 5429c7d504 fix(sidebar): rename Members to 'Members & Former' for clarity
cc
2026-01-25 20:41:17 -06:00
vicrodh 8271cb2436 fix(musicbrainz): don't separate members by ended status
- All band members go to single 'Members' list
- Show ended status with muted color
- Tooltip shows roles + period (e.g. 'guitar (1981 - 2003)')
- Remove separate 'Former Members' section

cc
2026-01-25 20:38:44 -06:00
vicrodh a1e0e7c606 feat(sidebar): group members by MBID, show roles in tooltip
- Deduplicate members that appear multiple times with different roles
- Combine roles and show in mouseover tooltip
- Apply to Members, Former Members, Member Of, Collaborators

cc
2026-01-25 20:18:31 -06:00
vicrodh 53dbff219e feat(sidebar): restructure relationships section
- Members: current band members
- Former Members: past members (with muted style)
- Member Of: groups artist belongs to
- Collaborators: collaboration relationships

cc
2026-01-25 20:06:46 -06:00
vicrodh e9039f9909 style(sidebar): homogenize item styles, more compact
- Add User icon to Similar Artists items
- Reduce padding and gap for denser layout
- Smaller font size (12px)

cc
2026-01-25 19:54:45 -06:00
vicrodh bcb6b88713 feat(artist): add Artist Network sidebar with sections
- Fixed position sidebar that slides in from right
- Labels section (placeholder)
- Similar Artists section (functional)
- MusicBrainz Relationships section (functional)

cc
2026-01-25 19:52:38 -06:00
vicrodh c4426d19ea feat(artist): add Artist Network toggle button next to Radio
cc
2026-01-25 19:45:47 -06:00
vicrodh 513b6ef210 wip: temporarily hide similar artists and MB relationships for sidebar experiments
cc
2026-01-25 19:26:32 -06:00
vicrodh 0a632d4c04 feat(artist): reduce bio preview from 3 to 2 lines
cc
2026-01-25 19:23:47 -06:00
vicrodh 2a89b025a6 Merge PR #22: Add genre display on album hover
Resolved merge conflicts with size="large" changes from pre-release.
Both genre and size="large" props now included in AlbumCard components.
2026-01-25 12:35:27 -06:00
Joel C 22f0aa5a0e Display genre on AlbumCard when mouse over it 2026-01-25 16:08:46 +01:00
vicrodh c97d62393d feat(musicbrainz): add artist page enrichment (Stage 3)
Display MusicBrainz artist relationships on artist detail page:
- Band Members section with role info (for groups)
- Past Members section (former members)
- Member Of section (groups this artist belongs to)

Features:
- Automatic MusicBrainz artist resolution on page load
- Click to navigate to related artist's Qobuz page
- Graceful degradation when data unavailable
- Respects MusicBrainz enabled setting

Uses Stage 1 MusicBrainz infrastructure for data fetching.

cc
2026-01-25 06:56:37 -06:00
vicrodh f9115aa620 fix(ui): reduce left padding from 24px to 18px in all views 2026-01-25 05:06:01 -06:00
vicrodh 1407516b34 fix(ui): standardize AlbumCard size and grid layout across all views
- Use size="large" (180px) for all AlbumCard instances
- Change album grids from CSS grid with 1fr to flexbox
- Fix LocalLibrary gap issue by using consistent spacing
- Align VirtualizedAlbumList, ArtistDetailView, SearchView,
  FavoritesView, HomeView, and AlbumDetailView
2026-01-25 04:51:29 -06:00
vicrodh 8dfea8a38e Hide 'Go to artist' menu option in ArtistDetailView
Redundant to show navigation to artist when already viewing that artist.
2026-01-24 17:24:58 -06:00
vicrodh bdb49f65bb Fix PlaylistDetailView track list header column alignment
Update header to use flexbox layout matching AlbumDetailView pattern.
Add missing column classes: col-title, col-album, col-quality, col-icon, col-spacer.
2026-01-24 17:05:08 -06:00
vicrodh 848322681d refactor: replace hardcoded rgba white with theme-aware alpha variables
Add --alpha-* CSS variables (4-95%) to app.css that adapt to theme:
- Dark themes: white-based rgba
- Light themes: black-based rgba (auto-inverts for proper contrast)

Mass-replaced 100+ instances of rgba(255,255,255,...) across 23 files
with var(--alpha-*) for consistent theming support.

This fixes borders, overlays, and UI elements being invisible or
having poor contrast in light themes.
2026-01-24 11:35:54 -06:00
vicrodh a87b8e11bb refactor: move action button styles to shared app.css
- Extract .action-btn-circle styles to app.css for reuse
- Remove duplicate button styles from ArtistDetailView and AlbumDetailView
- Use theme-aware colors (--text-primary) instead of hardcoded white
- Icons now use currentColor for theme compatibility
2026-01-24 11:23:05 -06:00
vicrodh 4b999c4561 style: replace play button glow with solid white border
Remove box-shadow glow effect from primary action button and
replace with 2px solid white border for cleaner appearance.
2026-01-24 11:19:57 -06:00
vicrodh b296d3091b fix: remove horizontal scroll caused by jump-nav overflow
The jump-nav sticky header uses negative margins to extend beyond
the container padding. The right margin was -16px (or -32px in Settings)
but the container only has 8px (or 24px) of right padding, causing
8px of horizontal overflow.

Fixed by matching the negative right margin to the actual padding:
- ArtistDetailView: -16px → -8px, width calc(100%+40px) → calc(100%+32px)
- FavoritesView: -16px → -8px, width calc(100%+40px) → calc(100%+32px)
- LocalLibraryView: -16px → -8px, width calc(100%+40px) → calc(100%+32px)
- SettingsView: -32px → -24px, width calc(100%+64px) → calc(100%+56px)
2026-01-24 00:40:37 -06:00
vicrodh d721859046 feat(artist): make Tributes collapsible with info tooltip
- Reorder sections: Others -> Playlists -> Tributes
- Tributes section now collapsed by default with expand/collapse caret
- Add info icon with tooltip explaining content may include covers by other artists
- Implement pagination with Load More (20 items at a time)
- Sort dropdown only visible when section is expanded
2026-01-24 00:34:17 -06:00
vicrodh a84cf97d36 feat(artist): independent sort filters per section, remove divider lines
- Add margin-bottom 2px to local-library-section in sidebar
- Make dividers transparent (keep spacing, remove visible line)
- Add independent sort dropdowns to: EPs & Singles, Live Albums,
  Compilations, Tributes & Covers, Others
- Each section maintains its own sort state
2026-01-24 00:19:49 -06:00
vicrodh ada7b7b84c style(artist): remove solid backgrounds, Load More button, thin badges
- Remove solid background from Discography and all sections below
- Remove Load More button from Discography (initial display sufficient)
- Change badge font-weight to 100 (Thin) in AlbumCard and QualityBadge
- Use LINE Seed JP font family for badges
2026-01-23 23:29:09 -06:00
vicrodh e404048c5b fix(artist): bio truncation reactivity, adjust margins
- Observe parent container for resize (not clamped element)
- Double RAF ensures CSS applies before measurement
- top-tracks-section: margin-top 32px
- artist-header: margin-bottom 22px
2026-01-23 20:51:09 -06:00
vicrodh f19081ee1d feat(artist): smart 3-line bio truncation with resize detection
- Use CSS line-clamp for exactly 3 lines (reactive to container width)
- ResizeObserver detects window/container resizes
- Auto-hide Read more/Show less if text fits in 3 lines
- Works across all screen sizes (4K to HD)
2026-01-23 18:58:15 -06:00
vicrodh 30bb7bc980 fix(artist): spacing, hover glow, context menu homologation
- Change margin-top to padding-top for 10px spacing (avoids collapse)
- Add animated glow expansion on Play All button hover
- Match context menu styling to TrackMenu component
2026-01-23 18:52:50 -06:00
vicrodh dc0038fbfb style(artist): subtle glow on Play All, outline on context button 2026-01-23 18:47:49 -06:00
vicrodh 3f9d7e4de5 style(artist): polish Popular Tracks buttons and menu
- Add 10px top margin for spacing from jump-nav
- Play All button (44px) larger than context menu button (40px)
- Add backdrop to context menu for click-outside-to-close behavior
- Reduce icon size in smaller button (18px)
2026-01-23 18:47:06 -06:00
vicrodh 2f026fa181 feat(artist): redesign Popular Tracks section
- Remove solid background container
- Show 5 tracks by default with progressive loading (5 → 20 → 50)
- Add "Load More" link that disappears after 50 tracks
- Replace text Play All button with circular icon button
- Add context menu (...) with: Play Next, Play Later, Shuffle, Add to Playlist
- All actions apply to full track list (up to 50)
- Remove divider line before section
2026-01-23 18:43:53 -06:00