Releases: Joystream/orion
Orion-v3.2.1
3.2.1
Misc
- Added index on timestamp fields on
Video
,Event
andOwnedNft
entities - update
docker.yml
github workflow to build and publish docker images. - added
generate-migrations
makefile command to generate migrations - adds OpenTelemetry tracing integration with
graphql-server
andauth-server
- update nodejs version to
node:18
Bug Fixes:
- Extend session based on activity after initial expiry is over.
- Fix/notification email title.
- Improves off-chain import/export script
Orion-v3.2.0
3.2.0
This minor but important release adds notifications to the orion infrastructure
Schema changes
- Introduced
NotificationEmailDelivery
entity to handle email notifications. It includes fields for tracking the notification, delivery attempts, and a discard flag. - Added
EmailDeliveryAttempt
entity to track each delivery attempt. It includes a status and timestamp. - Created
DeliveryStatus
union type that can be eitherEmailSuccess
orEmailFailure
(which includes an error status). - Introduced
Read
andUnread
types to track if a notification has been read. Both are part of theReadOrUnread
union. - Started defining a
Notification
entity. It includes fields for the account, notification type, event, status, in-app visibility, creation timestamp, and recipient. - Defined RecipientType as a union of
MemberRecipient
andChannelRecipient
. - Introduced various notification types as part of the NotificationType union. Each type has specific fields relevant to the notification.
- Added
ChannelSuspended, NftFeaturedOnMarketPlace, ChannelVerified, ChannelExcluded, VideoExcluded, NewChannelFollower, CommentPostedToVideo, VideoLiked, VideoDisliked, NftPurchased, CreatorReceivesAuctionBid, NftOffered, DirectChannelPaymentByMember, EnglishAuctionSettled, ChannelFundsWithdrawn, ChannelCreated, CommentReply, ReactionToComment, VideoPosted, NewAuction, NewNftOnSale, HigherBidPlaced, AuctionWon, AuctionLost, BidMadeCompletingAuction, NftRoyaltyPaid
types. Each type includes fields relevant to the specific notification. - Introduced
AccountNotificationPreferences
type to handle user notification preferences. - Added fields for each notification type, each of which is of
NotificationPreference
type. - Channel notifications include:
channelExcludedFromApp, videoExcludedFromApp, nftFeaturedOnMarketPlace, newChannelFollower, videoCommentCreated, videoLiked, videoDisliked, yppChannelVerified, yppSignupSuccessful, yppChannelSuspended, nftBought, creatorTimedAuctionExpired, bidMadeOnNft, royaltyReceived, channelPaymentReceived, channelReceivedFundsFromWg, newPayoutUpdatedByCouncil, channelFundsWithdrawn
.
Member notifications include:channelCreated, replyToComment, reactionToComment, videoPosted, newNftOnAuction, newNftOnSale, timedAuctionExpired, higherBidThanYoursMade, auctionWon, auctionLost, openAuctionBidCanBeWithdrawn, fundsFromCouncilReceived, fundsToExternalWalletSent, fundsFromWgReceived
. - Introduced
ChannelYppStatus
as a union type in the GraphQL schema. This type represents the YouTube Partner Program (YPP) status of a channel.
The ChannelYppStatus can be one of three types:YppUnverified, YppVerified, YppSuspended
.
Resolvers
- Ypp status mutation resolvers have been introduced, intended for the Ypp verification ops team:
- Added
verifyChannel
mutation is protected by theOperatorOnly
middleware, meaning it can only be accessed by operators returning a list ofVerifyChannelResults
(each contaning theid
of the new suspension, thechannelId
of the suspended channel, and thecreatedAt
timestamp of when the suspension was created) - Added
excludeChannel
mutation (protected by theOperatorOnly
middleware) to the GraphQL schema. This mutation is used to exclude a channel. It takes channelId and rationale as arguments and returns anExcludeChannelResult
(contaning theid
of the new suspension, thechannelId
of the suspended channel, and thecreatedAt
timestamp of when the suspension was created) - Added
suspendChannels
mutation (protected by theOperatorOnly
middleware) to the GraphQL schema. This mutation is used to suspend. It takeschannelIds
as an argument and returns a list ofSuspendChannelResult
(each contaning theid
of the new suspension, thechannelId
of the suspended channel, and thecreatedAt
timestamp of when the suspension was created)
- Added
- Notification-related resolvers (accessible only through the
AccountOnly
middleware) are intened for the use with the front end app:- Added
markNotificationsAsRead
mutation. This mutation marks specified notifications as read. It takes an array ofnotificationIds
and returns an object with an array of IDs of notifications that were successfully marked as read. - Added
setAccountNotificationPreferences
mutation. This mutation updates the notification preferences for the current account. It takes an object ofnewPreferences
and returns the updated notification preferences. - Both mutations are protected by the
AccountOnly
middleware, meaning they can only be accessed by authenticated accounts. - Added a helper function
maybeUpdateNotificationPreference
to update individual notification preferences if a new value is provided. This function is used in thesetAccountNotificationPreferences
mutation to update each preference.
- Added
- Notification email attepmts and assets
- Added
setMaxAttemptsOnMailDelivery
mutation. This mutation sets the maximum number of attempts to deliver an email notification. It takesnewMaxAttempts
as an argument and returns the new maximum attempts. The mutation is protected by theOperatorOnly
middleware. - Introduced
setNewNotificationCenterPath
mutation. This mutation sets the new notification center path. It takesnewMaxAttempts
as an argument and returns the new maximum attempts. The mutation is protected by theOperatorOnly
middleware. - Added
setNewAppRootDomain
mutation. This mutation sets the new application root domain. It takesnewRootDomain
as an argument and returns an object indicating whether the new root domain was applied. The mutation is protected by theOperatorOnly
middleware.
- Added
Mail Scheduler module
- mail template generation using mjml (see
./src/auth-server/emails/templates/mjml/notification.html.mst.mjml
) - Introduced functions to handle email notifications.
- Added
getMaxAttempts
function to fetch the maximum number of email delivery attempts from the configuration. - Added
mailsToDeliver
function to fetch all email notifications that have not been discarded. - Added
deliverEmails
function to process each email notification. It creates the email content, executes the delivery, and records the attempt. If the delivery is successful or the maximum number of attempts has been reached, the notification is discarded. - The
deliverEmails
function is called in themain
function, which logs the result of the email delivery process. - The email delivery is meant (for the moment) to be scheduled via chron job (as explained on operator documentation)
Misc
- several unit test have been introduced along with CI checks
- Improved homepage relevance scoring logic
- Refactored migration logic in order to migrate global account counter, which will be used also to migrate Notifications counters in future releases
Environment
- Added
EMAIL_NOTIFICATION_DELIVERY_MAX_ATTEMPTS
environment variable to configure the maximum number of attempts to deliver an email notification, before the scheduler stops attending them - Introduced
APP_ASSET_STORAGE
environment variable to specify the URL where the application's assets are stored. - Added
APP_NAME_ALT
environment variable to set an alternative name for the application. - Introduced
NOTIFICATION_ASSET_ROOT
environment variable to specify the URL where the notification icons are stored.
Documentation
- added documentation for setting up the email scheduler having a Sendgrid account
Orion-v3.1.0
This is a minor release that adds two main features:
- relevance score booster for a channel
- A new permission model for non-root
User
s in order to perform specific authorised tasks
Entities
- Adds
User.permission
to theUser
entity, this however doesn't require migration logic. - Adds
Channel.channelWeights
in order to boost channel relevance. This value can be set via thesetChannelWeights
mutation by a user with appropriate permission. TheRELEVANCE_WEIGHTS
env variable now needs to include an additional last parameter for the channel relevance booster. See the.env
file for example
Resolvers
- Adds supports for new permissions model for gateway operator users. Now the root user can assign/revoke operator permission/s to users using
grantPermissions
&revokePermissions
mutations
Orion-v3.0.4
Description
This is a patch release needed by the Atlas front end to display highest paid channels in the referrals page carousel
Schema changes
- Adds non null constraint to
Channel.cumulativeRewardClaimed
as the value is now initialized at0
- Adds field
Channel.cumulativeReward
to keep track from the channel revenue coming from payouts and member transfer
Orion-v3.0.3
Description
This is a patch release, with minor but important improvements
Optimisation:
- Solves n+1 query issue on the
AssetResolver
resolvedUrls
field resolver, by reusingstorageBagId
field if available. Resulting in faster query times and inpacting home page loading speed for front end application significantly. This fix involves only theorion_graphql-server
microservice
Misc
- adds
http://localhost:3000
andhttp://127.0.0.1:3000
as authorized CORS origins for local front end testing
3.0.2
This is a small patch for a bug arising during utf-8 decoding of the member handle
Bug Fixes
- uniqueness constraint on
Membership
entity violated due to correct decoding of the memberhandle
raw bytes
Schema changes
- uniqueness constraint on the
handle
field forMembership
dropped - added a new field
rawHandle
with a uniqueness constraint on theMembership
entity to store rawhandle
bytes
3.0.1
This is a minor release with the following improvements:
-
Graphql Api changes: Anonymous authentication / login is no longer needed to access the graphql schema at the graphql server endpoint. This should ease apps interaction with the graphql api.
-
Optimizations: Added a btree index to the
Video
videoRelevance
field, to optimize query used by apps to display relevant videos in their home page. -
Bug Fixes:
- Added the locking mechanism to prevent multiple asynchronous operation from having concurrent access to Overlay (Orion processor's in-memory cache layer), which otherwise could lead to one asynchronous operation overriding the changes made (to the cache) by the other asynchronous operation.
- Added migration for account identifier global counter
3.0.0
Release Notes
- Major release introducing the user accounts feature.
- New authentication API based on the OpenAPI specification, with routes for anonymous authentication, login, account creation, email confirmation, and more.
- Updated configuration variables for improved customisation and security.
- Changes to entity models in order to accommodate to the new user account feature
- Middleware authentication introduced to restrict access to registered users and subsequent changes to queries and mutations, including improved account information retrieval and updated argument structures.
- Improved documentation with additional tutorials and explainers.
Changelog
https://github.com/Joystream/orion/blob/master/CHANGELOG.md#300
2.3.0
Release notes
- The values of
Video.videoRelevance
have changed due to a new video relevance formula. Adjust the weights in the config of your Gateway accordingly based on the information provided in the CHANGELOG.
CHANGELOG: https://github.com/Joystream/orion/blob/master/CHANGELOG.md#230