Repository navigation
Releases: ansango/lastfm-api
Releases · ansango/lastfm-api
Release list
Release v3.7.1
🐛 Bug Fixes
- user: correct pagination schema field names in
getLovedTracks,getRecentTracks,getTopAlbums,getTopArtists, andgetTopTracks@attrto match the Last.fm wire names (page/perPageinstead of the previously incorrectpages/perPages). Also drops the unsupportedpageparameter fromuser.getTopTagsto align with the Last.fm API surface. (#172)
Thanks to @corygibbons for the original fix and to all contributors.
Full Changelog: v3.7.0...v3.7.1
Release v3.7.0
Release v3.7.0
See CHANGELOG.md for details.
Release v3.6.0
What's Changed
⚡ Pluggable Cache Layer (client.cache / @ansango/lastfm-api/cache)
MemoryCacheStorefor Node/Bun with configurable TTL and auto garbage collection.StorageCacheStorefor browser environments (localStorage / sessionStorage).CacheManagerwith hierarchical TTL resolution (per-method, per-namespace, and default fallback).- Integrated caching in
fetcherwith cache bypass for authenticated and mutation requests.
📡 Real-Time Scrobble Watcher (client.watcher / @ansango/lastfm-api/watcher)
- Fully typed
TypedEventEmitterevent bus. ScrobbleWatcherpolling engine emittingnowPlaying,nowPlayingEnd,scrobble,idle, anderrorevents.- Lifecycle management with
.start(),.stop(),.isActive(), and.forcePoll().
📦 Modular Subpath Exports & Zero Dependencies
- Added
@ansango/lastfm-api/cache,@ansango/lastfm-api/cache/schemas,@ansango/lastfm-api/watcher, and@ansango/lastfm-api/watcher/schemastopackage.json. - Removed
dotenvdependency in favor of native Node/Bun environment resolution.
Full Changelog: v3.5.0...v3.6.0
Release v3.5.0
What's Changed in v3.5.0
🚀 Core Async Pagination & Streaming Iterators
- core: Automatic asynchronous pagination helpers (
iterateItems,collectAll,iteratePages) supportingfor awaitloops, rate-limiting (delayMs), and boundaries (maxPages,maxItems) (closes #154). - arch: Decoupled canonical Core API (56 official methods) from the Analytics & Ecosystem engines with modular subpath exports
@ansango/lastfm-api/coreand@ansango/lastfm-api/insights(closes #151).
🧠 Advanced Insights & Analytics Engine Expansion (20 total methods)
- insights: Added 11 new analytical methods across music taste profiling, temporal patterns, and recommendations (closes #136):
getObscurityScore: Mainstream vs Underground listening score (closes #137).getObsessions&getForgottenFavorites: Track heavy rotation spikes and lost gems (closes #138).getListeningStreaks&getListeningHeatmap: Daily streaks and 24x7 activity matrix (closes #139).getAlbumHabits: Full-album vs single-track listening ratio (closes #140).getGenreBreakdown&getGenreEvolution: Taxonomy and taste shifts over time (closes #141).getSmartRecommendations&getBridgeArtists: Graph-based discovery and connector artists (closes #142).compareTasteGroup: Multi-user affinity matrix and common ground tracks (closes #143).
📊 Reports & Wrapped Namespace (client.reports.*)
- reports:
getWrapped(yearly review / custom period with seasonal breakdown & record day detection) (closes #155). - reports:
getMilestones(scrobble milestone tracking & estimated arrival dates) (closes #155). - reports:
getMonthlyDigest(monthly listening digest with growth metrics) (closes #155).
🎵 Smart Playlists Namespace (client.playlists.*)
- playlists:
generatewith 4 algorithmic modes:heavy-rotation,time-capsule,deep-cuts, anddiscovery-radar(closes #156). - playlists:
exportM3UandexportCsvfor standard media players and Spotify search queries (closes #156).
💾 Data Exporter & Backup Namespace (client.exporter.*)
- exporter:
exportScrobbleswith UTS timestamp checkpointing for resumable backward scans, and export formatsjson,jsonl,csv, andlistenbrainz(closes #157). - exporter:
exportLovedTracksandexportLibraryfor complete offline catalog backups (closes #157).
🔍 Interactive OpenAPI Reference & Scalar Docs
- tool/api-scalar: Collapsible 5-tier tag groups (
x-tagGroups) organizing all 83 interactive endpoints.
Full Changelog: v3.4.0...v3.5.0
Release v3.4.0
What's Changed in v3.4.0
✨ Features (Insights & Analytics Engine)
- insights: implement compareUsers with Jaccard affinity index (closes #125)
- insights: implement getMood psychometric classifier and getPersonality archetypes (closes #124)
- insights: implement getTrends ranking diff and getDiscoveries new-artist detector (closes #123)
- insights: implement getHoursHistogram and getBinges temporal analytics (closes #122)
- insights: implement getNowPlaying with artist bio and similarity enrichment (closes #121)
- insights: implement getSummary with Shannon diversity index (closes #120)
- insights: base architecture, Zod schemas infrastructure, and client wiring (closes #119)
- insights: wire insights namespace and endpoints in method registry & OpenAPI Scalar explorer
📚 Documentation
- insights: full documentation in
README.mdwith examples for all 9 analytical methods - insights: dedicated OpenAPI descriptions in Scalar
- insights: comprehensive
lastfm-climigration guide (docs/cli-migration.md)
Full Changelog: v3.3.0...v3.4.0
Release v3.3.0
What's Changed in v3.3.0
✨ Features
- auth:
auth.getToken()now returns{ token, authUrl }with pre-built authorization URL (closes #115)
⚠️ Breaking Changes
- auth: remove deprecated
auth.getMobileSessionmethod (closes #117)
📚 Documentation & Tooling
- docs: update authentication flows and README guides for web authorization
- tool/api-scalar: remove
POST /auth/get-mobile-sessionand update auth header documentation
Full Changelog: v3.2.0...v3.3.0
Release v3.2.0
What's Changed in v3.2.0
✨ Features
- tool/api-scalar: add
x-lastfm-skheader support for authenticated write methods (closes #100)
📚 Documentation
- docs: document session key (
sk) usage across all 10 write methods and web auth flow (closes #104) - docs: document Last.fm callback URL setup prerequisites (closes #113)
- auth: deprecate
auth.getMobileSessionin favor of web authentication flow (closes #106)
🛠️ Tooling & Infrastructure
- tool/api-scalar: provide actionable startup error message when
LASTFM_API_KEYis missing (closes #107) - tooling: migrate linting and formatting to Biome (closes #112)
Full Changelog: v3.1.3...v3.2.0
Release v3.1.3
What's Changed in v3.1.3
📚 Documentation
- docs: update README documentation for error handling, session keys, and canonical method naming (bd1d51b)
Full Changelog: v3.1.2...v3.1.3
Release v3.1.2
What's Changed in v3.1.2
🐛 Bug Fixes
- auth: drop required
api_keyfromauthGetSessionRequestSchema(#62) (f1158de) - errors: normalize API errors via
LastFmApiErrorclass (#61) (143bede) - track: auto-inject
sessionKeyfrom config for scrobble calls (#60) (b2c3599) - track: rename scrobble methods to canonical Last.fm names (#59) (c997868)
- utils: provide default
baseUrlinbuildUrlandbuildAuthUrl(#58) (c6e45e6)
🔧 Chores
- build: rebuild distribution output before release (ba62a5a)
Full Changelog: v3.1.1...v3.1.2
Release v3.1.1
What's Changed in v3.1.1
🔧 Chores
- deps: update chore dependencies (543dd25)
- deps: remove unused dependencies and obsolete files (8a3d5e2)
Full Changelog: v3.1.0...v3.1.1