v0.5.0 - ⭐ New workflow engine and UI Editor
Extremly excited to anounce our latest release which includes an entire redesign of our trigger engine, a brand new and shining workflow editor on the web management platform, notification center theme customization, and a lot more goodies! Let's check it out:
Redesigned backend trigger engine
To support a more complex Novu usecase with custom flows and events we had to reimagine how our trigger engine works, instead of processing just the hardcoded configuration of delivery a user can now specify a tree-like flow with a custom order of nodes. This infra change will help us to support the upcoming: Digest, Delay, Decision trees, and more.
In this change, we also introduced BullMQ to manage or step execution Queue to support better persistency and scalability as it will allow us to scale trigger processing across multiple machines in the next upcoming releases.
Redesigned Notification Template Editor
One of the biggest steps to support our future plans is the redesigned Workflow Editor when editing a notification template. Previously, you could only decide on a channel but couldn't control more than one message of this particular channel, and couldn't control the order of execution.
Introducing the new workflow editor powered by React-Flow:
This new workflow will be the basis of more exciting features we are about to release in the upcoming weeks!
Attachment support on email providers
Thank to our amazing contributor @devblin, it is possible to send attachments with your emails. You can easily add attachments using the following API:
import { Novu } from '@novu/node';
const novu = new Novu(process.env.NOVU_API_KEY);
novu.trigger('event-name', {
to: {
subscriberId: '...'
},
payload: {
attachments: [{
file: fs.readFileSync(__dirname + '/data/test.jpeg'),
name: 'test.jpeg',
mime: 'image/jpg'
}]
}
})
Notification center theme customization
Based on a lot of your requests, it is possible now to customize the notification center component visuals for in our React component. Here is how you can do that:
const theme = {
dark: {
// Dark Theme Props
},
light: {
// Light Theme Props
},
common: {
// Common
}
};
return (
<PopoverNotificationCenter theme={theme}>
</PopoverNotificationCenter>
);
For more information about the different parts of the theme configuration:
export interface INovuTheme {
layout?: IThemeLayout;
header?: IThemeHeader;
popover?: IThemePopover;
notificationItem?: IThemeNotificationListItem;
footer?: IThemeFooter;
loaderColor?: string;
unseenBadge?: IThemeUnseenBadge;
}
export interface IThemeLayout {
background?: string;
boxShadow?: string;
borderRadius?: string;
wrapper?: {
secondaryFontColor?: string;
};
}
export interface IThemeHeader {
badgeColor?: string;
badgeTextColor?: string;
fontColor?: string;
}
export interface IThemePopover {
arrowColor?: string;
}
export interface IThemeNotificationListItem {
seen?: {
fontColor?: string;
background?: string;
timeMarkFontColor?: string;
};
unseen?: {
fontColor?: string;
background?: string;
boxShadow?: string;
notificationItemBeforeBrandColor?: string;
timeMarkFontColor?: string;
};
}
export interface IThemeFooter {
logoTextColor?: string;
logoPrefixFontColor?: string;
}
export interface IThemeUnseenBadge {
color?: {
fillColor?: string | ISvgStopColor;
borderColor?: string;
};
}
More changes and improvements
- fixed grammatical error in notification form by @tusharsrivastav in #613
- Made changes in the CONTIBUTING.md file for ports information by @AakashRaj20 in #637
- update readme by @souravjain540 in #638
- fix: added support for attachments passing within Novu API by @devblin in #608
- Proper Error Message when used without NovuProvider by @BiswaViraj in #639
- Added env flag for github oauth option by @BiswaViraj in #644
- Upgrade Widget cypress to v10 by @kymppi in #658
- Docker-compose for local development by @kymppi in #659
- style changed integration to integrations by @AlexVCS in #669
- changed api to API by @Tosin-webdev in #670
- Fixed typo on line 36 by @AlexVCS in #673
- fix: updated the docker env to string by @BiswaViraj in #688
- fix: updated scripts to use cross-env by @BiswaViraj in #685
- fix: team invite not working when already logged in by @samsoft00 in #678
- feat: #686 add termii sms provider by @samsoft00 in #690
- import IMessage + Dark mode (colorScheme update) Documentation by @Lorakus in #698
- Added unseenCount in popover notification component by @Lorakus in #699
- Update Types to support nested payload properties by @dcbartlett-fadv in #701
- Upgraded apps/web cypress to v10 by @devblin in #689
- Fix/update provider hygen template by @samsoft00 in #710
New Contributors
- @tusharsrivastav made their first contribution in #613
- @AakashRaj20 made their first contribution in #637
- @souravjain540 made their first contribution in #638
- @kymppi made their first contribution in #658
- @Tosin-webdev made their first contribution in #670
- @samsoft00 made their first contribution in #678
- @Lorakus made their first contribution in #698
- @vannyle made their first contribution in #558
- @dcbartlett-fadv made their first contribution in #701
Full Changelog: v0.4.2...v0.5.0