v0.23.0
版本发布时间: 2024-02-10 01:41:49
novuhq/novu最新发布版本:v0.24.0(2024-03-18 17:44:43)
What’s new in Novu 0.23?
TL;DR: All you need to know about the latest Novu 0.23.0 release. Translation management, provider integrations, notification center updates, performance updates, and more!
0.23 Release Updates
We're excited to highlight the newest features introduced in our latest release. Join us as we explore what awaits you!
Translation Management
💡Note: This feature is only available for Novu Cloud for Business and Enterprise Clients.
The translation management feature allows users to create, upload, and edit translation groups and files from the Novu dashboard.
It’s new and we’re excited for you to start using it in your apps!
With this feature comes a new handlebar helper for translations, {{ i18n ... }}
. Novu users can now translate their notification templates to different languages using the i18n
handlebar helper and the translation keys in the editor.
Support for Non-Root User (UID 1000)
In our continued effort to enhance security and compatibility in enterprise environments, we are proud to announce a significant update aimed at supporting systems with restricted root access.
Key Features:
- Non-Root User Support: Novu now officially supports deployment under a non-root user with a fixed UID of 1000. This update is crucial for enterprise deployments on systems that enforce strict no-root policies, ensuring compliance with security best practices.
- Seamless Integration: This enhancement facilitates smoother integration of Novu into secure environments, reducing the need for workarounds or exceptions in security policies.
- Enhanced Security: Running Novu under a non-root user reduces potential security risks and aligns with the principle of least privilege, further safeguarding our notification infrastructure.
Getting Started:
No action is required from your side to take advantage of this update. The changes have been seamlessly integrated into Novu, ensuring that your enterprise deployments comply with non-root user policies without any additional configuration needed.
ARM Image Support
We're thrilled to share that Novu has officially introduced support for ARM images, marking a significant step in our dedication to embracing innovation and responsibility within the tech landscape. This development ensures that Novu stays ahead in the realm of notification infrastructure by broadening our platform's accessibility, compatibility, and sustainability.
Key Highlights:
- ARM Architecture Support: Users can now deploy Novu on systems powered by ARM processors, benefiting from the efficiency and performance improvements that ARM architectures offer.
- Optimized Performance: ARM support brings optimized performance for ARM-based deployments, ensuring faster and more efficient notification processing.
Getting Started with ARM Images:
To use Novu on an ARM-based system, simply pull the ARM-compatible Docker image from our registry. If you are on a not a ARM based system you can use the following command in docker to pull the image.
docker pull --platform linux/arm64 ghcr.io/novuhq/novu:v0.23.0
💡Note: Emulating ARM hardware may be slower then running an ARM image on ARM hardware.
Deprecation of Original Notifire Packages
Novu has evolved so much from when it was originally created. On the release of v0.24.0, we will be deprecating the original Notifire packages hosted on GitHub and any package within the @notifire
namespace on NPM.
The following packages hosted on GitHub under the novuhq
organization are scheduled for deprecation:
Deprecated Packages
-
Notifire WebSocket Package (
notifire/ws
) -
Notifire Widget Package (
notifire/widget
) -
Notifire SDK Package (
notifire/sdk
) -
Notifire Web Package (
notifire/web
) -
Notifire API Package (
notifire/api
)
NPM Namespace Deprecation
All packages within the @notifire namespace on NPM are also scheduled for deprecation. This includes any package prefixed with @notifire/
, ensuring a comprehensive and clear transition away from these older offerings.
Users currently relying on these deprecated packages should promptly transition to the official @novu
packages.
Field-level Encryption to API Keys
We're security conscious at Novu. The API keys are now encrypted at rest in the database and hashed at rest in the cache.
We added this security feature to prevent direct use of the API key in the event of a database breach or bad actor trying to use the key with bad intentions.
Note: All existing API keys become encrypted through a data migration script for self-hosted users. Running the script more than once does not re-encrypt the api keys.
Bulk Delete Notifications in Notification Center
Users can now remove multiple notifications using an array of message ids (limit of 100) via the Notification center hooks and Headless library.
Notification Center Hook
const onSuccess = (data: IMessage) => {};
const onError = (error: Error) => {};
const { removeNotifications, isLoading, isError, error } = useRemoveNotifications({
onSuccess,
onError,
});
Headless Service
headlessService.removeNotifications({
listener: (
result: UpdateResult<IMessage, unknown, { messageId: string }>
) => {
console.log(result);
},
onSuccess: (message: IMessage) => {
console.log(message);
},
onError: (error: unknown) => {
console.error(error);
},
messageIds: ["message_id_1", "message_id_2" ],
});
Rocket Chat Provider Integration
You can now send Chat messages via the Rocket Chat provider integration:
Brevo (SendInBlue) SMS Provider Integration
You can now send SMS messages via the Brevo SMS provider integration:
iSend SMS Provider Integration
You can now send SMS via the iSend sms provider integration:
CustomData Overrides for SMS
A customData
overrides provider for SMS now exists. This property allows us to support provider specific configurations in future for SMS providers.
For now, it only supports DLT (Distributed Ledger Technology) for the Gupshup SMS provider.
Trigger workflow with customData
novu.trigger("gupshup-workflow", {
to: {
subscriberId: "1234",
},
payload: {
user: "Viraj",
},
overrides: {
sms: {
customData: {
principalEntityId: "principal entity Id",
dltTemplateId: "dlt template Id",
},
},
},
});
Email Editor Variables Auto-suggestion Dropdown
We've made a little adjustment to the workflow email editor to enhance user experience by including auto-suggestions while adding variables.
This feature greatly minimizes the chance of selecting the wrong variable and having incorrect template content.
Notable changes
- v0.20.0 LTS node upgrade by @scopsy in https://github.com/novuhq/novu/pull/4556
- fix(api): ApiKey auth guard performance by @rifont in https://github.com/novuhq/novu/pull/4972
- Add field-level encryption to API Keys by @djabarovgeorge in https://github.com/novuhq/novu/pull/5046
- Refactor move inbound mail parser to worker by @djabarovgeorge in https://github.com/novuhq/novu/pull/4986
- Feat(API): Add Remove Messages By Bulk by @djabarovgeorge in https://github.com/novuhq/novu/pull/5117
- feat(notification-center): add use remove notifications hook by @djabarovgeorge in https://github.com/novuhq/novu/pull/5126
- feat(headless): add remove notifications method by @djabarovgeorge in https://github.com/novuhq/novu/pull/5125
What's Changed
- Update Novu to Node 18 LTS by @raikasdev in https://github.com/novuhq/novu/pull/4014
- docs(providers): Clickatell documentation incorrectly shows TwilioSmsProvider by @jacques in https://github.com/novuhq/novu/pull/4897
- fix(web): Intercom chat bubble should not show after closing integrat… by @PaperBoardOfficial in https://github.com/novuhq/novu/pull/4951
- fix(fcm): do not mutate overrides object by @strangeAeon in https://github.com/novuhq/novu/pull/4866
- fix(api): logo extension and type should be validated on branding endpoint by @scopsy in https://github.com/novuhq/novu/pull/4965
- refactor(api): remove admin unused permissions by @scopsy in https://github.com/novuhq/novu/pull/4964
- feat(api): dont cache auth endpoints by @scopsy in https://github.com/novuhq/novu/pull/4970
- Add subscriber source to metric by @djabarovgeorge in https://github.com/novuhq/novu/pull/4953
- feat(api): Add common responses and headers to OpenAPI spec paths by @rifont in https://github.com/novuhq/novu/pull/4922
- fix(worker): timed digest event merging by @scopsy in https://github.com/novuhq/novu/pull/4979
- hotfix: timed digest event merging (#4979) by @LetItRock in https://github.com/novuhq/novu/pull/4981
- chore(web): make apns provider production field optional by @LetItRock in https://github.com/novuhq/novu/pull/4978
- chore(web): update the conditions icon by @LetItRock in https://github.com/novuhq/novu/pull/4977
- fix(api): Disable cspell on spectral file by @rifont in https://github.com/novuhq/novu/pull/4984
- fix(api): subscribers page performance by @PaulFasola in https://github.com/novuhq/novu/pull/4985
- Add support for cid based attachment in email by @djabarovgeorge in https://github.com/novuhq/novu/pull/4952
- style(web): Fix add Integration button location by @nick2432 in https://github.com/novuhq/novu/pull/4997
- fix: digest with passing filters are not aggregated by @ainouzgali in https://github.com/novuhq/novu/pull/4992
- chore(deps): upgrade sendgrid version to latest by @scopsy in https://github.com/novuhq/novu/pull/4999
- feat(node): add sdk methods for organization apis by @michaldziuba03 in https://github.com/novuhq/novu/pull/4826
- feat(pkg): added integrationidentifier in setcredential method in nod… by @Prashant-dot1 in https://github.com/novuhq/novu/pull/4994
- Add execution-details and inbound-parse to node sdk by @peoray in https://github.com/novuhq/novu/pull/4746
- fix: Change wrong property name in bulk apply changes param in node sdk by @peoray in https://github.com/novuhq/novu/pull/4930
- feat(api): Return api service level in rate limit headers by @rifont in https://github.com/novuhq/novu/pull/4976
- fix: Done [NV-3300] most recent change should be on the top in change… by @Ujjwal55 in https://github.com/novuhq/novu/pull/5010
- fix(web): Fixed Integrations Store's add button alignment by @dhairyarajbabbar in https://github.com/novuhq/novu/pull/4995
- feat(notification-center): improve notification list styling by @katyaterletskaya in https://github.com/novuhq/novu/pull/5019
- Add execution log on invalid delay configuration by @djabarovgeorge in https://github.com/novuhq/novu/pull/4946
- feat: new variable management and search var feature by @ainouzgali in https://github.com/novuhq/novu/pull/5037
- refactor: replace deprecated segment library by @scopsy in https://github.com/novuhq/novu/pull/5039
- Add missing params in node sdk get changes method by @peoray in https://github.com/novuhq/novu/pull/4932
- Fix - add missing organization by @djabarovgeorge in https://github.com/novuhq/novu/pull/5047
- Added iSend SMS Provider by @Saff-Elli-Khan in https://github.com/novuhq/novu/pull/5000
- fix: headless api client remove/refetch query scenarios by @vichustephen in https://github.com/novuhq/novu/pull/5021
- feat: add queue and workers dto typed by @djabarovgeorge in https://github.com/novuhq/novu/pull/4963
- Nv 3002 email editor variables auto suggestion dropdown by @BiswaViraj in https://github.com/novuhq/novu/pull/5059
- [NV-3328] fix(web,api,webhook): add missing webhook field in the integration sidebar by @LetItRock in https://github.com/novuhq/novu/pull/4449
- Feat add nodejs sdk methods for workflow overrides api by @Prashant-dot1 in https://github.com/novuhq/novu/pull/5020
- fix: self host env file and docker compose file by @jainpawan21 in https://github.com/novuhq/novu/pull/5038
- feat: add analytics event for locale used in workflow by @davidsoderberg in https://github.com/novuhq/novu/pull/5063
- feat(api): Add LanchDarkly feature flag for API Idempotency by @rifont in https://github.com/novuhq/novu/pull/5062
- feat(provider): add rocket.chat chat provider by @varsubham in https://github.com/novuhq/novu/pull/5035
- fix: add options in resend senderName by @jainpawan21 in https://github.com/novuhq/novu/pull/5069
- fix: add default description for secret credentials by @jainpawan21 in https://github.com/novuhq/novu/pull/5060
- fix: resend sdk version by @scopsy in https://github.com/novuhq/novu/pull/5077
- fix(pkg): user 1000 instead of root by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5084
- feat(pkg): Add Open-Telemetry and Prometheus Montioring to Novu by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5014
- Execution Detail - Route by FF to store by queue or directly to DAL layer by @djabarovgeorge in https://github.com/novuhq/novu/pull/5083
- fix(web): prevent updating variants to have empty conditions (front-end only) by @antonjoel82 in https://github.com/novuhq/novu/pull/5073
- fix(api): prevent saving variants without any conditions by @antonjoel82 in https://github.com/novuhq/novu/pull/5096
- ci: pr previews cors fix by @scopsy in https://github.com/novuhq/novu/pull/5089
- fix: add to string in create subscriber command transformation by @jainpawan21 in https://github.com/novuhq/novu/pull/5081
- fix: filters dont apply to a delay that is the first step in workflow by @ainouzgali in https://github.com/novuhq/novu/pull/5091
- feat(web): hubspot embed for cloud by @scopsy in https://github.com/novuhq/novu/pull/5114
- feat(worker): Add customData overrides for sms and fix gupshup provider by @BiswaViraj in https://github.com/novuhq/novu/pull/5118
- feat(ci): Get a build process back to a docker build instead of a dep… by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5111
- feat(brevo): add support for brevo email templates by @ludorenzetti in https://github.com/novuhq/novu/pull/5121
- feat: add switch description and label by @jainpawan21 in https://github.com/novuhq/novu/pull/5044
- fix: make date path and authenticate by token optional by @jainpawan21 in https://github.com/novuhq/novu/pull/5045
- refactor: extracted worker queue chunk size to env var by @Khongchai in https://github.com/novuhq/novu/pull/4991
- feat(provider): add brevo-sms provider by @nohira in https://github.com/novuhq/novu/pull/5067
- test: fix error message by @ainouzgali in https://github.com/novuhq/novu/pull/5134
- fix(ci): Changed the process of token getting. From docker arguments … by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5131
- feat(api, web, shared, app-gen): Refactor feature flags for key enum by @rifont in https://github.com/novuhq/novu/pull/5100
New Contributors
- @jacques made their first contribution in https://github.com/novuhq/novu/pull/4897
- @PaperBoardOfficial made their first contribution in https://github.com/novuhq/novu/pull/4951
- @strangeAeon made their first contribution in https://github.com/novuhq/novu/pull/4866
- @PaulFasola made their first contribution in https://github.com/novuhq/novu/pull/4985
- @Prashant-dot1 made their first contribution in https://github.com/novuhq/novu/pull/4994
- @Ujjwal55 made their first contribution in https://github.com/novuhq/novu/pull/5010
- @dhairyarajbabbar made their first contribution in https://github.com/novuhq/novu/pull/4995
- @Saff-Elli-Khan made their first contribution in https://github.com/novuhq/novu/pull/5000
- @varsubham made their first contribution in https://github.com/novuhq/novu/pull/5035
- @ludorenzetti made their first contribution in https://github.com/novuhq/novu/pull/5121
- @nohira made their first contribution in https://github.com/novuhq/novu/pull/5067
Full Changelog: https://github.com/novuhq/novu/compare/v0.22.0...v0.23.0