Skip to content

Redesign Your Library page and playlist detail view#738

Merged
marcodejongh merged 2 commits intomainfrom
implement_mainscreen
Feb 8, 2026
Merged

Redesign Your Library page and playlist detail view#738
marcodejongh merged 2 commits intomainfrom
implement_mainscreen

Conversation

@marcodejongh
Copy link
Owner

Summary

  • Library page redesign: Replace tabbed playlists list with Spotify-inspired layout featuring compact 2-column recent playlists grid, "Jump Back In" and "Discover" horizontal scroll sections, and board filter pills
  • Playlist detail view redesign: Add hero card with colored square and playlist info, ellipsis menu (Queue All, Generate, Edit, Delete), and grid/list view toggle for the climb list
  • Backend: Add lastAccessedAt to playlists, new userFavoritesCounts/userActiveBoards queries, updatePlaylistLastAccessed mutation, and discoverPlaylists sortBy parameter
  • Cleanup: Remove old playlists-list-content, discover-playlists-content, playlist-view-actions and associated CSS modules

Test plan

  • Navigate to "Your Library" tab and verify compact grid cards render with colored squares and playlist names
  • Verify "Jump Back In" section scrolls horizontally with liked climbs card first
  • Verify "Discover" section shows public playlists (excludes user's own)
  • Verify board filter pills filter playlists correctly
  • Click a playlist card and verify hero card renders with name, climb count, visibility badge
  • Test ellipsis menu actions: Queue All, Generate, Edit, Delete (owner-only items)
  • Toggle grid/list view in playlist detail and verify preference persists
  • Verify unauthenticated users see sign-in prompt with discover section still visible
  • Run npm run typecheck to verify no type errors
  • Run npm run db:migrate to apply the lastAccessedAt migration

🤖 Generated with Claude Code

Replace the old tabbed playlists list with a Spotify-inspired library experience:
- Compact 2-column grid of recent playlists with horizontal card layout
- "Jump Back In" horizontal scroll section with liked climbs + recent playlists
- "Discover" horizontal scroll section with popular + recent public playlists
- Board filter pills for filtering by board type

Redesign playlist detail view with hero card and ellipsis menu:
- Hero card with colored square, playlist info, and visibility badge
- Ellipsis menu with Queue All, Generate, Edit, and Delete actions
- Grid/list view toggle for climb list with IndexedDB preference persistence
- Fire-and-forget lastAccessedAt tracking on playlist view

Backend changes:
- Add lastAccessedAt column to playlists table with migration
- Add userFavoritesCounts and userActiveBoards GraphQL queries
- Add updatePlaylistLastAccessed mutation
- Enhance discoverPlaylists with sortBy parameter (popular/recent)

Clean up old files: playlists-list-content, discover-playlists-content,
playlist-view-actions, and their associated CSS modules.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel
Copy link

vercel bot commented Feb 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
boardsesh Building Building Preview, Comment Feb 8, 2026 9:18am

Request Review

@claude
Copy link

claude bot commented Feb 8, 2026

Claude Review

Ready to merge - Minor issues noted below, but nothing blocking.

Issues

  1. Missing confirmation dialog for delete - playlist-view-content.tsx:239-252: The delete action immediately deletes the playlist without confirmation. Accidental clicks on the delete menu item could cause data loss.

  2. Duplicate PLAYLIST_COLORS constant - The PLAYLIST_COLORS array is defined twice: in playlist-view-content.tsx:39-47 and playlist-card.tsx:9-17. Should be extracted to a shared constant.

  3. showMessage missing from useCallback deps - playlist-view-content.tsx:224: The handleAddAllToQueue useCallback was missing showMessage from its dependency array until line 225, but now has it. This is fine now but was previously a bug.

Documentation

  • No documentation updates needed - this is a UI redesign that doesn't affect any documented systems (WebSocket architecture, etc.)

…polish

- Add emoji picker to playlist edit drawer using emoji-mart
- Render playlist emoji icons on cards and hero sections
- Create dedicated /liked route with full-stack implementation
  (GraphQL schema, backend resolver, client components)
- Round grid card corners for consistent border-radius
- Move filter pills into white header card with shadow
- Add frosted glass transparency effect to angle selector button
- Fix back button navigation to return to library root

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@claude
Copy link

claude bot commented Feb 8, 2026

Claude Review

Ready to merge - No significant issues found. This is a well-structured redesign with proper backend/frontend alignment.

Minor notes (non-blocking):

  1. Duplicated HOLD_STATE_MAP: packages/backend/src/graphql/resolvers/favorites/favorite-climbs-query.ts:79-108 duplicates the hold state mapping that also exists in playlist queries. Consider extracting to a shared utility.

  2. Emoji picker bundle size: Adding emoji-mart (~500KB) may impact initial load. Consider lazy loading the emoji picker component in playlist-edit-drawer.tsx:11-12.

  3. Missing error boundary: The liked climbs pages (liked-climbs-list.tsx, liked-climbs-view-content.tsx) catch errors but render generic messages. Consider using the snackbar consistently for transient errors.

  4. Unused import in page.tsx: BoardRouteParameters type was updated but BoardDetails and ParsedBoardRouteParameters were removed without checking all usages - confirmed these are correctly unused now.

@marcodejongh marcodejongh merged commit 831e4e0 into main Feb 8, 2026
5 of 8 checks passed
@marcodejongh marcodejongh deleted the implement_mainscreen branch February 8, 2026 09:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant