- auth: implement Spotify OAuth flow, config, and token encryption (ed2e948)
- cli: add Typer command-line interface (aad81a5)
- core: add track discovery, playlist manager, and scheduler (d4f035a)
- curate: build a catalogue of niche playlists from liked songs (#28) (488d841)
- curate: expand — grow thin playlists with unheard same-niche tracks (#32) (dd70b89)
- curate: human, artist-led playlist descriptions + describe command (#30) (e74aef9)
- curate: photo cover art from Pexels, matched to each playlist's vibe (#35) (7628412)
- curate: stats command — snapshot follower counts, report growth (#31) (db7006c)
- db: add Alembic migrations with initial schema (b8940f3)
- db: add engine, session, and repositories (1464683)
- models: define core SQLAlchemy data models (938cac7)
- web: add FastAPI app, routes, and dependencies (697aeba)
- ci: call the OSV reusable workflow instead of a nonexistent action (#20) (8834785)
- ci: declare only the languages this repo contains (#19) (4882f75)
- covers: abstract art only, no people, account-unique photos (#36) (f398b52)
- curate: features covers pinned expansion tracks too (#33) (2d5f057)
- make SpotifyForge fully functional, proven by execution (#27) (b2099bc)