Releases: lebuckman/sona
Releases · lebuckman/sona
v0.2.0 — Spotify Data Layer & Profile Page
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
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