Skip to content

feat: post-MVP phases 11-13 (player controls, catalog search, now-playing, mobile sheet) - #12

Merged
paramcodes merged 17 commits into
mainfrom
release/post-mvp-complete
Oct 18, 2026
Merged

paramcodes merged 17 commits into
mainfrom
release/post-mvp-complete

Conversation

@paramcodes

Copy link
Copy Markdown
Owner

Summary

This PR ships Phases 11, 12, and 13 from docs/roadmap-post-mvp.md, plus updated README media and high-resolution screenshots.

Delivered Capabilities

  • Phase 11 (Player controls):

    • Responsive volume slider + mute toggle in PlayerBar, synced to HTML audio element and persisted in localStorage (sunao.player.v1).
    • Context-aware shuffle keeping active track at index 0, randomizing remaining queue, and restoring original order on toggle.
    • 3-state repeat toggle (off / all / one) wired into audio ended handler.
    • Keyboard shortcuts: Space (play/pause), Shift+N / J (next), Shift+P / K (prev), L (like/unlike), ArrowUp / ArrowDown (volume), input-guarded against text entry.
  • Phase 12 (Search & discovery):

    • Search category tabs (All, Songs, Albums, Artists, Playlists).
    • Recent searches persisted in localStorage with click-to-search and clear.
    • Live iTunes Search API catalog querying with 300ms debounce, AbortController cancellation, and offline fallback.
    • Detail routes: /artist/[id] (header, top songs, discography) and /album/[id] (cover, tracklist, "Play all").
    • Home discovery rows: "Recently Played" and "Made For You" recommendation pool.
  • Phase 13 (Now-playing & mobile):

    • Fullscreen expanded Now-Playing panel (NowPlayingPanel) with 420px artwork, full transport controls, seek bar, queue drawer link, and lyrics switcher.
    • Mobile bottom-sheet player (MobileSheetPlayer) with touch swipe gestures (swipe-up from bar, swipe-down with velocity threshold to dismiss, inert when closed).
    • Synchronized scrolling lyrics (LyricsPanel) tracking playback time with click-to-seek.
  • Media & Documentation:

    • Refreshed all screenshots in artifacts/readme/ across desktop, detail routes, expanded now-playing, lyrics, and mobile bottom sheet.
    • Recorded fresh demo.webm, demo.mp4, and demo.gif walkthroughs.
    • Updated README.md and docs/architecture.md.

Verification Gate

  • Biome: 83 files checked, 0 errors.
  • TypeScript: tsc --noEmit passed cleanly.
  • Vitest: 15/15 test files passed, 71/71 tests passed.
  • Production build: next build compiled successfully in 3.8s, generating all 12 routes.

Recapture screenshots and the demo video/GIF from a production build, and
add mobile and collapsed-queue captures. Rewrite the README features and
stack to the current app, and update the stack, architecture, design-system,
workflow, and roadmap docs to match. Add scripts/capture-readme.mjs so the
media can be regenerated.
Add five concept guides under docs/concepts/ (state ownership, the
repository seam, server/client split, the audio engine, SEO + AI discovery)
and refresh existing docs to match the shipped tree:

- architecture: three-owner state model, repo-seam data flow, versioned
  localStorage library document, discoverability surface, updated folders
- design-system: updated surface tokens, primary=accent red, reduced-motion
  animation:none/100ms, cursor rule, EmptyState action slot, mobile seek
  slider, content-visibility on song rows
- roadmap/roadmap-post-mvp: phase 8 done (repo seam, e2e evidence),
  phase 9 in progress with 9.2 (Liked Songs projection) as the open gap;
  likes/persistence moved out of descoped
- stack/workflows: concept cross-links, localStorage validation scope,
  SEO tooling entry, persistence + full-journey specs, worktrees note
- README: tagline notes backend-less mode, persisted likes/library,
  updated structure/docs index/status; GitHub description + topics set
@vercel

vercel Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
sunao Ready Ready Preview Oct 18, 2026 3:39am UTC

@paramcodes
paramcodes merged commit 08c0ffe into main Oct 18, 2026
3 checks passed
@paramcodes
paramcodes deleted the release/post-mvp-complete branch October 18, 2026 03:52
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