All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Automatically leave the booth after your current play by
PUT /api/booth/leave
. (#600, #642)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Improve
/api/booth/history
performance. (#605, 49cb49c)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Duplicate emote names in the emote integrations are now distinguished by adding
~1
,~2
, etc. suffixes. (#597)
Bugfixes:
- Fix startup, authentication, and
/api/now
crashes if Redis or user cookies contain bad data. (#596, c9ed5f1, 693520b)
Internal:
- Use ES modules. (#558)
- Breaking: üWave now requires Node.js 18.18 or above.
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Bugfixes:
- Fix some crashes in the new emote integrations, and support Twitch and FrankerFaceZ emotes. (#555)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Add experimental BTTV / 7TV emote integrations. (#554)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Bugfixes:
- Fix result count when filtering playlist items. (#546)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Internal:
- Finish booth advances while shutting down the server. (#543)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Waitlist cycle can be disabled in the admin menu. (#519)
- Waitlist lock state is now a setting in the admin menu. (#519)
Internal:
- Test with MongoDB 6.0. (#536)
- Test with Node.js 19. (539)
- Replace use of deprecated
url
module byURL
class. (#540) - Replace LGTM.com by Github Code Scanning. (#462)
- Dependency updates.
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Update
u-wave-source-youtube
. This expects that clients use u-wave-web v2.0.0-alpha.9 or later.
Bugfixes:
- Fix crash when a media source's
play()
hook throws. (#525)
Internal:
- Do not rely on in-process event emitters. (#522)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Make
artist
,title
optional when adding playlist items (#516). With this change, deriving the artist and title for a search result can be deferred until it is actually added to a playlist. Then the search can show only original titles, which makes finding the correct result easier, and is required for compliance with ToS for some services.
Internal:
- Breaking: üWave now requires Node.js 14.17 or above. (#513)
- Use UUIDs for chat message IDs. (#511)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Bugfixes:
- Fix a crash in the
/api/users
endpoint. (#490)
Internal:
- Fetch ACL sub-roles in a single database query. Should be good for performance, but most of all for code quality.
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Bugfixes:
- Improve performance of searches with
?include=playlists
. (#489) Now it's actually usable :)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Bugfixes:
- Fix imports from some media sources (like Youtube).
- Send data from
play()
hook in/api/now
responses. (#486) - Fix adding media to the start of a playlist. (#487)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
This is a hotfix release for problems introduced during development of alpha.5
.
Bugfixes:
- Breaking: Revert
playedAt
to a UNIX timestamp. This fixes an accidental breaking change. I'm sorry if you updated your code already while tracking the development branch these past months :( - Make related playlists opt-in in search results. There is a serious performance problem in that feature, so it is available behind a query parameter for diagnostic purposes.
- Fix registrations getting rejected when ReCaptcha is disabled.
- Fix favouriting tracks.
This is an alpha release, but new servers should use this version rather than an older "stable" one.
This one has many internal changes so please keep an eye on it when you deploy it and report any issues!
Features:
- Add a native ES modules entry point.
- Add
play()
hook for media sources. (#481) With this hook, media sources can provide data to clients that is needed for playback, such as expiring signed URLs to access a certain media.
Internal:
- Breaking: Simplify
mongo
andredis
options: you can now only pass URL strings. - Add type checking with jsdoc and typescript. (#442)
- Upgrade dependencies.
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Features:
- Add
helmet: false
option to disable CSP headers. This is necessary when running the API server and web client in the same Express app.
Internal:
- Upgrade
ajv
to v8.
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Bugfixes:
- Show error message when trying to join the waitlist with an empty playlist. (#438)
- Fix
/api/now
error if user has no playlist. (#439)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
Bugfxes:
- Fix google oauth config schema. (#433)
Internal:
- Breaking: Remove option to disable default roles. (#437)
- More tests. (#432)
This is an alpha release, but new servers should use this version rather than an older "stable" one.
The u-wave-http-api
package has been merged into u-wave-core
. This package now contains both the library and the HTTP and WebSocket API for üWave servers.
The minimum supported Node.js version is v12.20.0.
u-wave-core
now includes a basic CLI with some default configuration.
npm install --global u-wave-core@next
u-wave-core --help
Features:
- Breaking: Merge
u-wave-http-api
. (#333) - Automatically activate a user's first playlist. (#219)
- Implement votes using HTTP requests. (#361)
- Older client versions can still use WebSocket votes.
- Find playlists containing a particular media. (#374)
- Add social authentication support. (#265, #385)
- Add runtime configuration support. (#380, #408)
- Add database migrations. (#410)
- Add a CLI to run a basic, default-configuration server. (#391, #418)
Internal:
- Add
uw.models
property for easier mongoose model access. (#283) - Breaking: Small changes to DB option handling. (#264)
- Breaking: Raise supported Node.js version to 10+. (#342)
- Make
getPlaylistItems
faster with a single query. (#351, #370) - Remove use of
p-props
. (#371) - Breaking: Handle startup with Avvio. (#400)
- Use JSON schemas for request validation. (#416)
- Move active playlist state from Redis into MongoDB. (#419)
- More tests. (#417, #426)
- Update
sourceData
values when adding media from search results. (#405)
Bugfixes:
- Fix changing passwords: (#280)
- Fix finding Authentication method when resetting password.
- Temporarily disable the
type: local
constraint on password changes.
Features:
- Implement filter parameter for getUsers(). (#220)
- Move waitlist into core. (#250)
Internal:
- Rename prepublish npm script to prepare.
- Dependency updates.
Bugfixes:
- Add waitlist.join.locked permission to default moderator role. (#218)
Bugfixes:
- Assign "user" role by default. (#214)
Features:
- Add optional
user
parameter to media sources. (#133) - Use
IORedis#quit
instead ofIORedis#end
. (#139) - Implement bans. (#104)
- Set a default avatar. (#146)
- Generate cjs and es modules builds. (#166)
- Accept user object in more playlist methods. (#183)
- Add
users.findOrCreateSocialUser
. (#187) - Remove custom sourceType parameter. (#153)
- Add login and password change to users plugin. (#200)
- Publish ACL role changes. (#211)
Bugfixes:
- Fix adding items to playlist. (#136)
- Normalize unicode strings before inserting into DB. (#205)
- Fix
acl.deleteRole
. (#207) - Use Redis sets to store votes. (#212)
Features:
- Implement locking during booth advances. (#124)
Bugfixes:
- Skip user plays when their playlist is empty while entering the booth. (#121)
Internal:
- Use temporary databases instead of mockgoose while running tests. (#123)
Features:
- Make email addresses case insensitive. (#112)
Internal:
- Fix warnings in tests. (#113)
- Ensure
Promise
always refers to bluebird. (#114) - Add Node 8 to Travis. (#115)
Features:
- Add option to disable default plugins. (300fc1deab73084fc9aec4852bbe116e00353aa0)
- Add role-based ACL. (#60)
- Implement retrieving play history. (#92)
- Return a
Page
fromgetUsers()
. (#87) - Show a more useful error message when the User slug is empty. (#101)
Internal:
- Switch to
bcryptjs
frombcrypt
. (#97) - Switch to
transliteration
fromspeakingurl
. (#98)
Start tracking changes.