Release Notes
The list below shows the latest releases and the respective features/improvements to Axinom Mosaic.
R71 (May 23, 2023)
This release contains the following changes:
General
-
With this release we upgraded the
media-template
to the latest LTS version of Node.js (version 18) and upgraded several other dependencies to newer versions, including thepiral
packages. (see this PR for more details) -
We rolled back our usage of the
importmaps
feature, as we were experiencing some issues with the way it is handling peerDependencies. We will re-introduce it in the future when the issues are resolved. For now we recommend to not make use of this feature in your own Pilets.
Managed Services
-
deleted${EntityName}NodeId
fields are deprecated fromDelete${EntityName}Payload`
graphql schema types for most Managed Mosaic services. They were always returning null before and not used. These fields will be completely dropped in the future. -
Encoding Service: Added a mute button for the video player on the cue point management station. Also improving the error messages in case the playback fails because of invalid DRM configurations.
-
Channel Service: Improved error messaging when adding invalid program entities to a playlist.
Libraries
-
@axinom/mosaic-ui:
-
Added a new optional property
horizontalColumnAlign?: 'left' | 'center' | 'right'
to theColumn
definitions used inList
andExplorer
components now allows for defining varying alignment options for each column. -
The
result
argument ofcreateUpdateGQLFragmentGenerator
does now also support querying of nested fields. -
We upgraded our Storybook to the latest version of Storybook. The stories now include more control options, making stories even more interactive. They now also display the TypeScript type annotations of the component props giving more information about the components directly inside Storybook.
-
Better disabled styles and focus indicators for different form elements.
-
Fixed an issue where station message bodies were displayed below the station content.
-
-
@axinom/mosaic-portal:
-
Extended the
PiletApi
with a new method:getDataHelper
. It helps to retrieve data from Portal data store set by other pilets/workflows usingsetData
. Unlike the already existinggetData
, this method waits for the data to be set if not available immediately and then executes the callback passing in the data as argument. It’s a wrapper around thegetData
method that makes it easier to avoid race conditions when usingsetData
andgetData
in different workflows.
-
-
@axinom/mosaic-e2e-page-model:
-
Selectors to support e2e tests for toast notifications added. Toast message selectors are available in page model under
uiShell.notifications`
property.
-
R69 (April 26, 2023)
Among various small improvements and fixes, this release brings the following note-worthy changes:
General
-
With this release we upgraded
Piral
to version0.15.8
.This change is backward compatible for Pilets built with older versions of
Piral
.However with the upgrade we also started to make use of
importmaps
for our managed Pilets to allow for quicker loading times of the management systems. Because of this change, the managed pilets will make them stop working when using older versions of@axinom/mosaic-portal
as emulator during development time.No worries, this is only affecting the development time. When the Pilet is published through the Micro Frontend Service it will always run using the latest version of mosaic-portal.
To make the managed workflows working again on development time, please update the devDependencies for
@axinom/mosaic-portal
in your workflow(s) to the latest version.NoteIt is recommended to always update the version of @axinom/mosaic-portal
frequently to minimize differences between development- and production-runtime.
From now on, the@axinom/mosaic-portal
will also warn you during development time if you’re using an old version of the emulator. -
Added the
helmet
middleware to all services for increased security.We don’t expect any impact on applications caused by these changes. If you still encounter some issues, please let us know.
Managed Services
-
User Service: When you update to the latest version of
@axinom/mosaic-user-auth
library, it will be possible to receive more granular response codes than before during Sign In errors, so that your FE application can provide more meaningful error messages. -
Encoding Service: Adding support for PerScene encoding mode, for smaller video output file sizes while maintaining quality.
-
Channel Service: Many fixes and smaller improvements on the channel management workflows.
Libraries
-
@axinom/mosaic-ui:
-
Introducing a new filter type:
FilterTypes.SearcheableOptions
. This filter consist of a text input where a user can enter search values and a list of options that match the query.This can be used to make filters with many options (potentially asynchronously loaded) more user friendly. -
Visual improvements for
SelectionExplorer
. -
Some fixes for better support of Safari browsers.
-
R68 (April 10, 2023)
Among various small improvements and fixes, this release brings the following note-worthy changes:
Introducing Channel Service
With this release we’re introducing the latest addition to our managed Service - the Channel Service.
This service is designed to give you the ability to create and manage your own channels and curate playlists for these channels. You can add your existing VOD entities from e.g. your media service to the playlists, optionally define ad breaks using the cue-points and publish them to allow them to be consumed by services that will power e.g. a Free ad-based streaming TV (FAST) experience for your end users.
More information about the service can be found in the Channel Service documentation.
Managed Services
-
Added a toggle to the admin portal settings of the Encoding Service to enable or disable the Video Preview for Cue Points feature. This feature is enabled by default but it allows to opt-out from the feature in case video playback management system is not possible or intended in your use case.
-
Fixed a bug in Hosting Service where the RabbitMQ Connection details station in the Admin Portal would show incorrect hostname. The correct values are displayed now.
Media Template
-
Added a main video filter for Movie/Episode Explorers, allowing to filter out entities that do not have a main video assigned. (#54)
-
Added a
DEMO_MODE
to the encoding service, which allows to skip the webhook secret validation. This is useful for demo purposes and is not recommended for production use. (#50) -
Improved the speed of the
test:reset:dbs
scripts (#48)
Libraries
-
Added a CSS class with the environmentId prefixed with
env-
to the management portalbody
element, allowing environment-specific CSS rules. This is useful to make the portal look different for different environments, e.g. to make it more obvious that you are (not) in production. -
Added a new extension to the Management Portal shell to allow the registration and usage of
RouteResolvers
. Workflows can register resolvers for specific routes that other workflows can then use to resolve the route. This is useful for workflows that need to navigate to a route that is not known to them, but is known to another workflow. This is for example used on the new Channel Service to create the links to the detail pages of the entities inside a playlist which are not known to the playlist workflow but are provided by the media workflows. The new methods allow toregisterRouteResolver
,getAllRouteResolvers
or invoke a certain resolver by usingresolveRoute
. -
Bulk actions triggered by an
Explorer
component will now trigger a toast notification when the action is started and another one in case that the backend returns an error. This will help the user to understand if the action was successful or not. -
Fixed a bug in
@axinom/lib-id-guard
where the JWKS caches were not always used. This would result in making more calls than needed to fetch the public RSA keys when executing GQL requests.
Stripe Payment Connector
-
The payment connector service will no longer use ENV vars for supplying redirect URLs that are used during the payment flows, and instead will use those that are configured in your Billing Service admin area.
You can see the change over here.
R67 (March 21, 2023)
Among various small improvements and fixes, this release brings the following note-worthy changes:
Managed Services
-
We added a video player to the cue point management station of our Encoding Service, to allow editing cue points very conveniently by picking the timing directly from the video itself.
This feature will work out of the box for non-DRM protected videos, which are stored on a publicly accessible storage.
If your videos are DRM protected or the manifest is not accessible directly through the storage URL, you can use the Admin Portal to configure the “Manifest” and “Entitlement” Webhooks we introduced in R65.
The Manifest webhook can be used to instruct the Management System the correct URL that should be used to playback the video.
The Management System uses the Entitlement webhook whenever a DRM protected video should be played. The webhook should validate the request and return an entitlement token if the playback is permitted.
The Entitlement Service on our Media Template is already implementing both webhooks, so you can take that implementation as inspiration - or even configure your version of the entitlement service as target for these Webhooks.
-
We added the option to change and delete existing webhook configurations on our Encoding Service.
-
Fixed a bug which allowed to create a New IDP Connection in User Service for AxAuth, when the AxAuth User Store did not have a valid OAuth Client. Now there will be an exception to stop this.
Media Template
-
The entitlement message included also empty DRM keyIds when some streams were not DRM protected (e.g. subtitle or closed-caption streams). Empty keyId values are now excluded.
Frontend Samples
-
We’ve added more scenarios for the Mosaic FE Samples application.
These new scenarios will showcase how to use the Mosaic Billing Service for managing your End User subscriptions
You can checkout the source over here.
R65 (March 08, 2023)
Among various small improvements and fixes, this release brings the following note-worthy changes:
General
-
We added the capability to raise toast notifications to the
@axinom/mosaic-portal
. There are now three new methods toshowNotification
,updateNotification
anddismissNotification
which can be used to trigger toast notifications inside your workflows.We plan to add more usage of these (and other APIs) inside also the components coming from
@axinom/mosaic-ui
. So make sure you add a call toinitializeUi
, passing over theapp
object (like this), to allow the components to also leverage these features on the shell application to e.g. automatically raise toast notifications in relevant situations. -
The RabbitMQ vhosts that are used by the customizable-services are now created with following limits. We don’t expect this to affect any of your currently running customized-services as the limits are fairly generous.
Please contact Axinom Support if you have any special requirements in this regard.
-
max-connections = 10
-
max-queues = 150
-
-
Due to a change in how Postgraphile subscription lifecycle methods are executed, we’ve now updated all
Postgraphile
and related libraries to the latest minor version, and also released a new version of@axinom/mosaic-id-guard
to handle the new approach of subscription authorization.The following combinations of libraries should play well together when it comes to authorizing GQL subscriptions:
-
graphile-build@4.12.2, graphile-build-pg@4.12.2, graphile-utils@4.12.2, postgraphile@4.12.4
+mosaic-id-guard@0.17.0
-
graphile-build@4.13.0, graphile-build-pg@4.13.0, graphile-utils@4.13.0, postgraphile@4.13.0
+mosaic-id-guard@0.18.0
Action Points:
-
If you are on
postgraphile@4.12.4
or below, and do not intend to upgrade it - no change is required, the existingmosaic-id-guard@0.17.0
or below would work fine with it. -
If you are expecting to upgrade to
postgraphile@4.13.0
or later, then themosaic-id-guard
library would need to be upgraded along with it to match as mentioned above.-
You can find details about the needed change in this PR.
-
-
-
We improved the performance of row-level-security database permission checks.
The corresponding changes on the media template were added in this PR. To manually upgrade an existing customized version based on the media template please upgrade the mosaic libraries to the latest version. Then call the
util:define-func-migration
scripts in all the projects to get the latestax_define
functions into the databases of each service. Then include a call to thedefine_authentication
function into a new database migration for every protected table like:SELECT ax_define.define_authentication('<your view permissions>', '<your edit permissions>', '<table name>', 'app_public');
Managed Services
-
The Image and Encoding Service will now send an error message in case a image type or cue point type is already registered by another service. Services can now subscribe to the error message and handle it accordingly.
-
The Encoding Service now allows the configuration of two new webhooks. A Manifest webhook that should return a manifest URL to use for the video playback and an entitlement endpoint that grants an entitlement message to play back a DRM protected video. These are preparations for new features that will be released in the future, and will allow the management System to playback videos. The webhooks can be configured in the 'Encoding Service' settings inside the Admin Portal.
-
Fixed an issue in Encoding Service where the source video file extension was always set as
.mp4
even for other source video file types. -
We have improved the integration of AxAuth Service and User Service. This will now make it straightforward to pick the “User Store” you want to use from AxAuth Service when configuring the AxAuth IDP in the User Service.
Please read more details about it here.
-
We have fixed a bug in the User Service which resulted in an exception during 'Sign In with Credentials' if the 'Allowed Proxy URLs' were not configured under User Service configuration.
-
The Billing Service exposes now the PayPal related (non-secret) settings as part fo the GraphQL API. Consuming applications can now use those values and don’t need to configure them in every application.
-
When a user subscribed to a subscription plan using the Billing Service he is redirected back from e.g. PayPal to the webpage from where he started the subscription workflow. The corresponding URLs are configured in the admin portal. When those URLs contained a GET parameter, the parameter was missing when redirecting the subscriber. This is now fixed to retain all GET parameters.
-
Fixed a bug on Hosting Service where in some intermittent situations, you receive an error 'Database already exists' when attempting to deploy a service that was previously deployed, and then undeployed.
-
We have added new scenarios to Mosaic Frontend Samples that demonstrates how to use the Image Service as well as how to subscribe to a subscription plan using the Billing & Monetization Services.
Libraries
-
The
PostgraphileOptionsBuilder
from@axinom/mosaic-service-common
got updated:-
the constructor parameters were moved to a dedicated function
setDefaultSettings
-
the
setDevProperties
was dropped and replaced withsetConditionalProperties
to be more flexible on when to use specific properties -
the function
addConditionalPlugins
was added to enable fine granular decisions which plugins should be added e.g. in a development, testing, or production area and similar. TheaddDevPlugins
function was removed.
-
-
Improved the
validateWebhookRequest
method to support both, the raw request body and an already parsed JSON object for the webhook validation.
R63 (February 09, 2023)
This is the 1st release we’re making for the year 2023, and we’re bringing some goodies your way to make up for the long wait!
-
Revamped navigation with the new Navigation Panel
-
We’ve introduced a new
Navigation Panel
into the Management System that will make it faster to find what you’re looking for in less steps. -
You can read more details about the Navigation Panel over here.
-
-
Deploy Mosaic Media Template via the Hosting Service
-
We’ve extended the
Hosting Service
to be capable of provisioning necessary infrastructure and deploying customizable services from Mosaic Media Template to your environments. -
You can read more details about deploying customizable services over here.
-
R60 (December 16, 2022)
-
With this release we remove the support for the deprecated messages mentioned in R55. If you didn’t update your solution yet, please find the instructions below.
-
The
VideoStream
data type on the encoding service was added to describe all the video, audio, subtitle, and closed caption streams within a video. These stream objects are providing detailed information about the different representations of the encoded video. Please note that these values may only get filled for newly encoded videos. -
Introducing an improved breadcrumb in the management system as well as the admin portal, making better use of the available space and also visually more light-weight:
-
We reduced the bundle size of
@axinom/mosaic-ui
by ~35% which should result in better loading times of the management system. We will continue looking into improving loading times in future releases. -
Various other improvements, fixes and preparations for future features.
-
Release 60 of Mosaic Media Template
R58 (November 28, 2022)
-
Various improvements, fixes and preparations for future features.
-
Release 58 of Mosaic Media Template.
R56 (October 25, 2022)
-
Introducing improved ways to handle errors in Mosaic services. More details can be found at Error Handling Development Guide (Basic).
-
Adding three new configuration options for Processing Profiles on Encoding Service.
More information about the features can be found on the information text on the station or in the Content Processing documentation.
-
The Mosaic Media Template is now available on Github
-
Various other improvements and fixes.
-
Release 56 of Mosaic Media Template.
R55 (October 12, 2022)
-
Mosaic Media Template R55 is published
With this release we aligned the names of event and command messages that are sent via the RabbitMQ message bus. We use now consistently a naming pattern of entity/task + actionable verb
for commands and entity/task + past tense verb
for events in all places.
Our services will be compatible with both, the old and the new event and command messages until November 14th 2022. After that date we’re planning to stop supporting messages using the old names. Please make sure to update your solution as described below until that date or let us know if this is not feasible for you.
To update your solution, please update the @axinom/mosaic-messages
package to the latest version, then execute yarn
and yarn build
from the solution root. If this does result in some errors in your messaging implementation please adjust the following types:
Service | Old Message Name | New Message Name | Old Settings Name | New Settings Name |
---|---|---|---|---|
ID Service |
|
|
|
|
Encoding Service |
|
|
|
|
Encoding Service |
|
|
|
|
Image Service |
|
|
|
|
Image Service |
|
|
|
|
Monetization Grants Service |
|
|
|
|
Commands are accepted in a backward-compatible way and the queues to handle the commands are within our managed services. So no adjustment is required.
Events are also sent in a backward-compatible way. Some target queues were renamed to follow a consistent naming schema. Once you are done with your migration you can delete the following queues - they only exist if you subscribed to the corresponding events:
-
ID Service based event queues:
-
synchronize_permissions.finished
-
synchronize_permissions.failed
-
user.deleted
-
user_role.deleted
-
-
Encoding Service based event queues:
-
ensure_video_exists.start
-
archive_videos.start
-
ensure_video_exists.already_existed
-
ensure_video_exists.creation_started
-
ensure_video_exists.failed
-
archive_videos.finish
-
-
Image Service based event queues:
-
ensure_image_exists.start
-
image.archive
-
ensure_image_exists.already_existed
-
ensure_image_exists.image_created
-
ensure_image_exists.failed
-
images.archived
-
-
Monetization Grants Service based event queues:
-
synchronize_claim_definitions.start
-
synchronize_claim_definitions.finished
-
synchronize_claim_definitions.failed
-
R54 (September 22, 2022)
-
Mosaic Media Template R54 is published
-
The Encoding Service was upgraded to support Cue point management, including a first simple management workflow.
R53 (September 06, 2022)
-
Mosaic Media Template R53 is published
-
The Hosting Service receives the alpha version of service-deployment support for early adopters.
R52 (August 24, 2022)
-
Mosaic Media Template R52 is published
-
We have now published a new open-source repository that will give best practices for FE developers who plan on integrating with Mosaic Services. More details of the Mosaic Frontend Samples can be found here
R51 (August 11, 2022)
-
Mosaic Media Template R51 is published
-
The
mosaic-ui
library was updated to provide support for Explorer stations to use GraphQL Subscriptions for identifying dirty states. Now when you are viewing data on an Explorer station, and if some of that displayed data is mutated by another user, the Explorer station will show a notification to the user indicating the displayed data maybe stale and a refresh maybe required.-
This logic is currently implemented on Image & Video explorers.
-
R50 (August 01, 2022)
-
Mosaic Media Template R50 is published
-
The Encoding Service now has the ability to configure content acquisition and publishing profiles with AWS S3 as well. Earlier it only supported Azure storage accounts.
-
Similar to above feature, the Image Service also now supports configuring acquisition profiles with AWS S3.
R48 (July 19, 2022)
-
Mosaic Media Template R48 is published
-
Improved loading times of the Management System by distributing the micro-frontend Pilets to be served via object-storages rather than by the service. This should significantly improve the waiting time of the CMS initial load.
R47 (June 20, 2022)
-
Mosaic Media Template R47 is published
-
Preliminary support to use the User Service on native devices (i.e. Android) was added. Current
mosaic-user-auth
was updated to work with React Native to offer this compatibility.
R46 (June 06, 2022)
-
Mosaic Media Template R46 is published
-
The Hosting Service is now promoted as a core-service. What this means is, it will always be enabled for every environment created via the Admin-Portal, and it cannot be disabled. This service will be also responsible for generating the Rabbit MQ Connections required for the customizable services, and the corresponding stations to configure them are moved under Hosting Service.
R45 (May 23, 2022)
-
Mosaic Media Template R45 is published
-
Several improvements and bug-fixes to the managed workflows were made.
-
User Role Permissions station now applies correct filters.
-
Video details station now has a re-encode action in the UI.
-
R44 (May 16, 2022)
-
Mosaic Media Template R44 is published
-
The Billing Service is now ready for Production usage. It supports the PayPal provider out-of-the-box, with both
redirect
&pop-up
based flows. -
An improvement was made for the Micro-FE Service to support publishing pilets with dynamic target URLs (build-once & deploy anywhere). This will significantly streamline build pipelines of the customized workflows, and now you do not need to rebuild the same workflow with different deployment target URLs.
R43 (April 26, 2022)
-
Mosaic Media Template R43 is published
-
A big documentation update was pushed describing one of the most commonly used scenario Media Service Publishing.
R42 (April 12, 2022)
-
Mosaic Media Template R42 is published
-
The Billing Service was updated to allow configuring Payment Providers via the Admin Portal.
R41 (March 29, 2022)
-
Mosaic Media Template R41 is published
-
The User Service now supports Delegated Access Tokens, a feature that would cut down the time needed to migrate pre-existing end-user stores into the Mosaic User Service stores.
R40 (March 10, 2022)
-
Mosaic Media Template R40 is published
-
The
Google
Identity Provider used for the Management System now supports to be configured in one-click via the 'Use Built-In IDP' setting in the admin-portal. -
The Management System received an update with new workflow stations to browse and manage End-Users created via the User Service.
R39 (February 24, 2022)
-
Mosaic Media Template R39 is published
-
The Billing Service how has an end-user facing API and supports PayPal as a payment provider.
R38 (February 15, 2022)
-
Mosaic Media Template R38 is published
-
First version of the Entitlement Service is included to the Mosaic Media Template. This is a customizable service showing how to generate an Entitlement Message for the DRM License Service to enable playback of DRM-protected videos.
-
Communication to Encoding Service is now using Mosaic Service Accounts
-
User Service - AxAuth support - possibility to register end-users with an email and password without using an external identity provider
-
User Service - Support for custom Identity Providers
-
Initial version of the Hosting Service now allows manage storage accounts via the Admin Portal.
R37 (December 17, 2021)
-
Mosaic Media Template R37 is published
-
An alpha version of the Monetization Service API is now available for testing by early adopters.
R33 (December 6, 2021)
-
Mosaic Media Template R33 is published
-
First version of the Personalization Service is now available for use from our Managed Services offering.
-
Documentation for User Service and related libraries are now updated. Read more details at User Service Lib Documentation
R32 (November 30, 2021)
-
Mosaic Media Template R32 is published
-
User Service is available in the initial scope
-
GraphQL Subscriptions now support authentication & authorization. This support is added via the
mosaic-id-guard
library.