Skip to content

Releases: lebuckman/sona

v0.2.0 — Spotify Data Layer & Profile Page

03 Apr 21:03

Choose a tag to compare

What's in this release

✅ Spotify Data Layer

  • Top tracks, top artists, and playlists with DB caching
  • Last.fm genre breakdown replacing deprecated Spotify audio features
  • Transparent token refresh via withValidToken()
  • Cache-aside pattern with per-resource TTLs

✅ Profile Page

  • Portfolio-style layout with real Spotify data
  • Artists section with editorial top-3 image grid
  • Tracks section with ranked list and album art
  • Genre fingerprint with weighted Last.fm tags
  • Playlists section with cover images
  • TanStack Query with client-side caching

🔧 Fixes

  • Spotify Feb 2026 breaking changes (tracks→items, removed popularity/genres)
  • CodeRabbit: genre query enabled gate, rate limit handling, Last.fm error hardening

🔜 Next

  • v0.3.0 — Sona AI layer (insights, narration, agentic chat)

v0.1.0 — Foundation & Authentication

01 Apr 02:47

Choose a tag to compare

Pre-release

What's in this release

✅ Foundation

  • Next.js 16 with TypeScript strict mode
  • Tailwind v4 + Shadcn UI
  • Drizzle ORM + Neon Postgres with full schema
  • AES-256-GCM token encryption
  • GitHub Actions CI (lint, format, type-check)

✅ Authentication

  • Spotify OAuth 2.0 Authorization Code Flow
  • CSRF protection via cryptographic state parameter
  • Encrypted token storage (access + refresh)
  • Automatic silent token refresh
  • iron-session with httpOnly cookie
  • Protected route layout with server-side session guard

🔜 Next

  • v0.2.0 — Spotify data layer and profile page