|
| 1 | +# 5.0.0 |
| 2 | + |
| 3 | +## Changes |
| 4 | + |
| 5 | +### Channel weights and video relevance calculation |
| 6 | + |
| 7 | +- **Automatic channel weights:** The new _Relevance Service_ supports automatic calculation of channel weights based on factors such as channel's _cumulative revenue_, _YPP tier_, _number of followers_, _CRT liquidity_ and _CRT volume_ (the weight of which can be configured). |
| 8 | +- **Improved video relevance formula:** Factors such as number of _views_ / _comments_ / _reactions_ are now represented as `0 - 1` range rates, which simplifies assigning adequate weights. |
| 9 | +- **Fixed video relevance calculation bugs** (such as https://github.com/Joystream/orion/issues/361) |
| 10 | +- **More flexible configuration** (updates interval or number of scored videos per channel can now be configured via the GraphQL API) |
| 11 | + |
| 12 | +### Improved permissions system |
| 13 | + |
| 14 | +- **New view/read permission levels: `VIEW_CURATOR_SCHEMA`, `VIEW_ADMIN_SCHEMA`** . Thanks to the introduction of a new `curator` database schema, the view permissions to access hidden content (hidden / censored channels and videos) can be separated from view permissions to access more sensitive data (Orion account emails, session data, configuration etc.) and other root-level permissions. |
| 15 | +- Changing YPP status of a channel now requires `SET_CHANNEL_YPP_STATUS` permission. |
| 16 | +- Changing other app-scoped configuration settings which don't have a separate permission category now requires `SET_APP_CONFIGS` permission. |
| 17 | +- Changing the new relevance service weights and configuration requires `SET_RELEVANCE_WEIGHTS` and `SET_RELEVANCE_CONFIG` permissions respectively. |
| 18 | + |
| 19 | +### Support for setting channel YPP tiers and sync status |
| 20 | + |
| 21 | +- `Channel.yppStatus` now includes YPP tier |
| 22 | +- `Channel` now has a new `isYtSyncEnabled` field |
| 23 | +- Those values can be set via the new `setChannelYppStatus` and `setChannelYoutubeSyncEnabled` mutations respectively (given sufficient permissions) |
| 24 | + |
| 25 | +### Fixed _Offchain state_ migrations |
| 26 | + |
| 27 | +- Fixed https://github.com/Joystream/orion/issues/360 |
| 28 | + |
| 29 | +### Performance impovements (indexes, faster sync etc.) |
| 30 | + |
| 31 | +- **New indexes:** New PostgreSQL indexes have been added to support faster filtering / ordering of channels and videos in Atlas and [Content admin dashboard](https://github.com/Joystream/gleev/issues/72). |
| 32 | +- **Post-sync index creation:** The creation of some custom PostgreSQL indexes has been delayed to post-sync phase (ie. the time when processor catches up to chain head) to allow faster from-scratch syncing of new Orion instances and faster migrations. |
| 33 | + |
| 34 | + |
| 35 | +## Upgrade instructions |
| 36 | + |
| 37 | +TBD. |
| 38 | + |
| 39 | +## Affected components: |
| 40 | +- **(M)** `assets/patches/@subsquid+typeorm-config+2.0.2.patch` (support for custom TypeORM subscribers) |
| 41 | +- Processor |
| 42 | + - **(M)** `processor.ts` |
| 43 | + - support for new `RelevanceService` |
| 44 | + - support for post-sync index generation (via `model/indexes.ts`) |
| 45 | + - improved logging |
| 46 | + - **(A)** `mappings/subscribers/TransactionCommitSubscriber.ts` |
| 47 | + - **(M)** `mappings/utils.ts` (added `relevanceQueuePublisher` instance) |
| 48 | + - Event handlers: |
| 49 | + - **(M)** `Content.ChannelCreated` |
| 50 | + - **(M)** `Content.VideoCreated` |
| 51 | + - Events triggering re-calculation of channel / video relevance: |
| 52 | + - **(M)** `Content.ChannelRewardUpdated` |
| 53 | + - **(M)** `Content.ChannelRewardClaimedAndWithdrawn` |
| 54 | + - **(M)** `Content.EnglishAuctionSettled` |
| 55 | + - **(M)** `Content.BidMadeCompletingAuction` |
| 56 | + - **(M)** `Content.OpenAuctionBidAccepted` |
| 57 | + - **(M)** `Content.OfferAccepted` |
| 58 | + - **(M)** `Content.NftBought` |
| 59 | + - **(M)** `Members.MemberRemarked` |
| 60 | + - `ReactVideo` (meta-action) |
| 61 | + - `CreateComment` (meta-action) |
| 62 | + - `DeleteComment` (meta-action) |
| 63 | + - `MakeChannelPayment` (meta-action) |
| 64 | +- Migrations: |
| 65 | + - **(!) Re-generated all data migrations** |
| 66 | + - **(!) Custom indexes are no longer part of migrations, moved to `model/indexes.ts`** |
| 67 | + - **(M)** `db/migrations/1000000000000-Admin.js` |
| 68 | + - **(D)** `db/migrations/2200000000000-Indexes.js` |
| 69 | + - **(R)** `db/viewDefinitions.js` => `model/views.ts` |
| 70 | + - **(M)** `db/generateViewsMigration.js` |
| 71 | +- Schema / Models: |
| 72 | + - Entities moved from `admin` to `curator` schema |
| 73 | + - **(M)** `OwnedNft` |
| 74 | + - **(M)** `Auction` |
| 75 | + - **(M)** `Bid` |
| 76 | + - **(M)** `Channel` |
| 77 | + - **(M)** `BannedMember` |
| 78 | + - **(M)** `Event` |
| 79 | + - **(M)** `NftHistoryEntry` |
| 80 | + - **(M)** `NftActivity` |
| 81 | + - **(M)** `UserInteractionCount` |
| 82 | + - **(M)** `VideoViewEvent` |
| 83 | + - **(M)** `Report` |
| 84 | + - **(M)** `NftFeaturingRequest` |
| 85 | + - **(M)** `ChannelFollow` |
| 86 | + - **(M)** `StorageDataObject` |
| 87 | + - **(M)** `MarketplaceToken` |
| 88 | + - **(M)** `CommentReaction` |
| 89 | + - **(M)** `Comment` |
| 90 | + - **(M)** `VideoCategory` |
| 91 | + - **(M)** `Video` |
| 92 | + - **(M)** `VideoFeaturedInCategory` |
| 93 | + - **(M)** `VideoHero` |
| 94 | + - **(M)** `VideoMediaMetadata` |
| 95 | + - **(M)** `VideoMediaEncoding` |
| 96 | + - **(M)** `License` |
| 97 | + - **(M)** `VideoSubtitle` |
| 98 | + - **(M)** `VideoReaction` |
| 99 | + - Entities with removed `@index` decorators (index defs moved to `model/indexes.ts`): |
| 100 | + - **(M)** `Channel` (`createdAt`, `language`) |
| 101 | + - **(M)** `Video` (`createdAt`, `orionLanguage`, `videoRelevance`) |
| 102 | + - Auth server: |
| 103 | + - **(M)** `auth-server/handlers/createAccount.ts` (dependency on `NextEntityId` removed) |
| 104 | + - Entities removed: |
| 105 | + - **(D)** `ChannelVerification` |
| 106 | + - **(D)** `ChannelSuspension` |
| 107 | + - **(D)** `Exclusion` |
| 108 | + - **(M)** `OperatorPermission` |
| 109 | + - **(M)** `Channel` |
| 110 | + - added `isYtSyncEnabled` |
| 111 | + - extended `yppStatus` |
| 112 | + - **(M)** `ChannelYppStatus` |
| 113 | + - **(A)** `model/views.ts` (PostgreSQL view creation utils) |
| 114 | + - **(A)** `model/indexes.ts` (PostgreSQL index creation utils) |
| 115 | +- Auth server: |
| 116 | + - **(M)** `openapi.yml` spec |
| 117 | + - **(M)** `anonymousAuth` route |
| 118 | +- GraphQL server: |
| 119 | + - **(M)** `server-extension/check.ts` (more granular view permissions, `curator` / `admin` schema) |
| 120 | + - **(M)** `server-extension/utils.ts` |
| 121 | + - **(A)** `server-extension/subscribers/TransactionCommitSubscriber.ts` |
| 122 | + - Fixed permissions: |
| 123 | + - **(M)** `setAppAssetStorage` |
| 124 | + - **(M)** `setAppNameAlt` |
| 125 | + - setNewNotificationAssetRoot |
| 126 | + - setMaxAttemptsOnMailDelivery |
| 127 | + - **(A)** `setChannelYppStatus` |
| 128 | + - **(M)** `followChannel` |
| 129 | + - **(M)** `addVideoView` |
| 130 | + - **(D)** `suspendChannels` (replaced by `setChannelYppStatus`) |
| 131 | + - **(D)** `verifyChannel` (replaced by `setChannelYppStatus`) |
| 132 | + - **(D)** `excludeChannel` (duplicate of `excludeContent`) |
| 133 | + - **(D)** `excludeVideo` (duplicate of `excludeContent`) |
| 134 | + - **(D)** `setVideoWeights` |
| 135 | + - **(D)** `setNewNotificationCenterPath` (duplicate of `setMaxAttemptsOnMailDelivery`) |
| 136 | + - **(D)** `setChannelsWeights` |
| 137 | + - **(M)** `processCommentsCensorshipStatusUpdate` |
| 138 | + - **(A)** `setRelevanceWeights` mutation |
| 139 | + - **(A)** `setRelevanceServiceConfig` mutation |
| 140 | +- **(A) NEW RELEVANCE SERVICE (`relevance-service`)** |
| 141 | +- **(D)** `utils/VideoRelevanceManager.ts` |
| 142 | +- Config: |
| 143 | + - **Defaults now can be specified directly in `src/utils/config.ts`** (but can still be overriden by `env` variables and/or db config) |
| 144 | + - **(A)** `RELEVANCE_SERVICE_CONFIG` |
| 145 | + - **(A)** `CHANNEL_WEIGHT_FOLLOWS_TICK` |
| 146 | +- Environment: |
| 147 | + - **(A)** `RABBITMQ_PORT` (required) |
| 148 | + - **(A)** `RABBITMQ_URL` (required) |
| 149 | + - **(A)** `CHANNEL_WEIGHT_FOLLOWS_TICK` (required) |
| 150 | + - **(M)** `VIDEO_RELEVANCE_VIEWS_TICK` (`50` => `10`) |
| 151 | + - **(D)** `RELEVANCE_WEIGHTS` |
| 152 | +- Utils: |
| 153 | + - **(M)** `utils/OrionVideoLanguageManager.ts` (`admin` => `curator` schema) |
| 154 | + - **(M)** `utils/customMigrations/setOrionLanguageProvider.ts` (`admin` => `curator` schema) |
| 155 | + - **(D)** `utils/nextEntityId.ts` |
| 156 | + - **(M)** `notification/helpers.ts` (dependency on `NextEntityId` removed) |
| 157 | + - **(M)** `utils/offchainState.ts` |
| 158 | + - **(M)** `utils/overlay.ts` (prevent deadlocks) |
| 159 | +- **(M)** `docker-compose.yml` |
| 160 | + - Added RabbitMQ queue |
| 161 | + - Added relevance service |
| 162 | +- **(M)** `Makefile` |
| 163 | + - Turned off `SQD_DEBUG` for mappings in `process` |
| 164 | + - Added `relevance-service` |
| 165 | + |
1 | 166 | # 4.5.0 |
2 | 167 | ## Affected components: |
3 | 168 | - Auth server: |
|
0 commit comments