Skip to content

v3.1.1

Choose a tag to compare

@1Lucas1apk 1Lucas1apk released this 19 Nov 00:55
· 438 commits to v3 since this release

NodeLink v3.1.1

This release adds support for Apple Music, compatibility with the Bun runtime, and an important restructuring of the worker manager, reorganizing how CPU, memory, and timeouts are handled. The update expands the track-matching logic for Apple Music and Spotify and replaces the use of prism-media with a native Opus and WebM implementation integrated directly into NodeLink.

The volume system was rewritten to include fade-out transitions and smoother adjustments between volume levels, using a custom frame-based transformer to avoid abrupt changes during playback. Internal validation was also revised by moving from Joi to Myzod.

The release includes integration with LrcLib for lyrics and introduces the PlayerBackupManager for state restoration. Maintenance interfaces were added for web, TV, iOS, and Android VR. Several memory leaks were fixed, including issues related to YouTube, audio filters, HTTP/WebSocket agents, and event handling, along with adjustments to the equalizer, routes, URI handling, and event emission.

A plugin system was briefly added but reverted shortly after. The update also removes components that are no longer needed and reorganizes documentation, dependencies, and internal configurations.


Added

  • 042e585 feat(applemusic, spotify): enhance best match scoring logic and improve token handling
  • 637c7b5 feat(applemusic, spotify): refactor best match logic to support async operations and improve scoring criteria
  • 305f056 feat(applemusic): refactor YouTube source handling and improve advanced search logic
  • 9971866 feat(applemusic, spotify): enhance track URI handling and improve best match scoring logic
  • 9f03e98 feat(applemusic): implement token caching and automatic token fetching
  • 1502184 feat(applemusic): enhance setup process and improve token handling
  • 6e11147 feat(spotify): include explicit flag in track URI and handle it in getTrackUrl
  • 617e02e add: Apple Music source implementation
  • 77f8b39 added apple music lyrics source
  • 41d5f6c feat: implement Opus encoder and decoder with WebM support
  • fef8d64 feat: add startbun script
  • 5598794 add: bun support #115
  • 222f456 add: bun support for handleUpgrade
  • 98605f9 add: bun support in sendResponse
  • 72f65b6 feat: implement VolumeTransformer for dynamic volume control in audio processing
  • d405bc8 feat(youtube): enhance source with advanced metadata and improve system stability
  • 02a71ce feat: introduce plugin system with routes/hooks, metadata, tests, and docs #113
  • 70573a3 feat: enhance worker stats tracking with CPU and memory metrics
  • 8974e58 feat: enhance audio cache plugin settings with maxSize and protection options
  • 95003b7 feat(core): add multi-bot player isolation using composite playerKey (guildId:userId)
  • 0cbaae3 feat: update configuration loading and refine .gitignore entries
  • ffc7115 feat: add integration tests for example and audio-cache plugins
  • c582967 feat: add audioCache and prebuffer plugin configurations to default settings
  • c4323e9 feat: add plugin metadata for audio-cache, example, and prebuffer plugins
  • c0aa141 feat: enhance plugin metadata extraction and initialization process
  • a970e92 feat: add cleanupHttpAgents method
  • c970923 feat: clean websocket and http agents, fixes a memory leak
  • 49f8fe1 feat: add _stopHealthCheck to fix memory leaks
  • da3844c feat: Implement plugin system for NodeLink
  • 73b024d feat: implement PlayerBackupManager for player state management and restoration
  • ea1a543 feat: enhance worker management with health checks and command timeouts
  • fddcdc7 feat: player maintance web
  • a1d69be feat: player maintance tv
  • 49b2bfb feat: player maintance ios
  • 0a308de feat: player maintance android_vr
  • 75ca984 feat: implement lrclib integration for lyrics #108
  • f211ed6 feat: lrclib integration for lyrics
  • 8384b22 feat: improve lyricsmanager fallback and add lrclib
  • 928268e feat: add lrclib config to options

Fixed

  • 6d935b4 fix: fixed encoded tracks with "+" not working
  • c2efe17 fix: remove unnecessary debug logging in BaseClient class
  • 688b016 fix: enhance logging for command timeouts to include command type and payload
  • b2065ae fix: correct property name from packetsExpect to packetsExpected in getStats function
  • 043b14a fix: sort dynamic routes in loadRoutes function and remove unused line in sessions.id.js
  • b0d4600 fix: update clients for resolving track information to include additional platforms
  • 990f400 fix: add GET method support to session handler and clean up imports in index.js
  • ccacb68 fix: correct script name from startbun to start:bun in package.json
  • de657f6 fix: adjust makeup gain calculation and clamp output values in equalizer
  • 5b6de45 fix: update player to handle equalizer filter settings correctly
  • 071604f fix: update player schema to deprecate encodedTrack field and improve queryParamsSchema
  • e8d80f7 fix: critical youtube/stream memory leak
  • d9b4a6d fix: karaoke mass volume gains
  • 45dcd73 fix: fix equalizer filter bands calculation.
  • 8f9c3d0 fix(youtube): improve error handling for stream disconnections and aborts fix(worker): enhance uncaught exception logging for stream-related errors
  • 057f0a2 fix: update plugin retrieval method in API response
  • ea4f532 fix: small memory leaks #112
  • ef52b02 fix: youtube memory leaks on events
  • 9eb6acb fix: improve error handling for IPC communication and add uncaught exception logging
  • c0dc993 fix: correctly handle TRACK_START emission based on resuming state
  • 96470df fix: emit TRACK_START event only for new tracks, not resumes
  • cf744db fix: missing ) on ios

Refactor

  • a278e8d refactor: drop joi usage and use myzod instead.
  • d428822 refactor: karaoke filter
  • e8e8669 refactor(spotify): streamline configuration loading and improve logging consistency
  • 565eadb refactor: rename functions and variables for improved clarity in audio cache and prebuffer plugins
  • 44240ce refactor: improve code clarity and consistency in PluginManager class
  • 7043b80 refactor: rename variable for clarity in plugin handler function
  • fd0e4a8 refactor: simplify source manager logic and streamline plugin retrieval
  • 7e33a19 refactor: lazy load audio resource creation in PlayerManager and Player classes
  • 49e3b64 refactor: rework the worker manager for performance #110
  • bff38fa refactor: rework the worker manager for performance

Removed

  • 9c7336e remove: investigated and found that this leads to an external API for the Musixmatch provider. WE ALREADY HAVE THAT.
  • d528f90 chore(security): remove self-hosted YTM endpoint per policy and switch to YTMusic advanced search
  • bd44f1e chore: removed fuse.js – improved and more accurate lyric matching
  • 3728ab9 Disable audioCache and prebuffer plugins

Updated

  • 1b78f77 chore: biome formatter
  • 6517f69 update: Node.js version requirements in README
  • 728dffa chore: skip git update checks for Bun environment
  • 0f6fdb1 feat: update biome to 2.3.4 & mp4box to 2.2.0
  • ca0a2b2 chore: biome formatter
  • d162d39 docs: expand and reorganize plugin documentation for improved clarity and usability
  • e34ca7d docs: restructure and enhance NodeLink plugin documentation for clarity and completeness
  • 03b8363 docs: update plugin documentation with prebuffer settings and naming conventions
  • 5bbebdb Update config import to use default file
  • cdfe348 feat: update plugin documentation with metadata and example enhancements
  • 7b7417f chore: bump YouTube clients version for consistency #109

Reverted

  • 7dd40dc revert: decodetrack let usage and fix sendresponse
  • 6aacfc8 revert: refine makeup gain logic and update output clamping in equalizer
  • 2465bbd revert: introduce plugin system with routes/hooks, metadata, tests, and docs #113

Improved

  • abcad6b improve: spotify source parsing and track resolution #111
  • f63620f improve: spotify source parsing and track resolution

pull request's

New Contributors

Full Changelog: v3.0.0...v3.1.1