What's Changed
- feat(react-native): Add a react native npm package for hooks by @scopsy in #6556
- fix(node): add the missing integration override to sms by @ainouzgali in #6546
- feat(api): apply member limit per billing plan by @ChmaraX in #6630
- fix(api): response interceptor by @BiswaViraj in #6639
- fix(js): incorrect date by @BiswaViraj in #6641
- feat(api): Add api exception mapping by @tatarco in #6601
- fix(framework): Default to health action by @SokratisVidros in #6634
- feat(dashboard): Api methods for v2 by @desiprisg in #6642
- feat(dashboard): Workflow list by @desiprisg in #6615
- fix(api): Log bridge url validation errors by @SokratisVidros in #6643
- feat(framework): Add
disableOutputSanitization
flag for channel step definitions by @rifont in #6521 - feat(api): add status by @tatarco in #6616
- feat(web): update billing plans by @ChmaraX in #6652
- fix(web): Show how often usage metrics update by @SokratisVidros in #6655
- feat(dashboard): env change logic and routes by @LetItRock in #6632
- chore(api): Remove Sentry profiling from all apps by @SokratisVidros in #6660
- feat(application-generic): Add the ability to have query parameters in bridge checks by @elmdecoste in #6633
- feat(dashboard): Workflow list polish by @desiprisg in #6645
- feat(framework): Add NestJS
serve
handler by @rifont in #6654 - feat(dashboard): Empty workflow list state & improvements by @desiprisg in #6666
- fix(worker): Reduce distraction errors by @SokratisVidros in #6662
- chore(application-generic): Stop logging Segment and Mixpanel invocations by @SokratisVidros in #6664
- chore(framework): Release version 2.2.0 by @rifont in #6667
- feat(dashboard): Workflow list dropdown actions by @desiprisg in #6669
- fix(api): fixed deletion + origin bug by @tatarco in #6663
- feat(web): Add autocomplete example to Playground by @rifont in #6668
- chore(dashboard): side nav updates by @LetItRock in #6658
- ci(root): remove redundant API unit test by @ChmaraX in #6678
- fix(api): Use the MongoId for stepId when fetching step controls by @rifont in #6679
- feat(dashboard): header navigation by @LetItRock in #6672
- feat(api): refactor get step schema by @djabarovgeorge in #6651
- fix(api): created at identify using ISO date instead of epoch by @scopsy in #6683
- fix(api): analytics module by @scopsy in #6684
- fix(api): Log exception traits by @rifont in #6685
- refactor(api, worker, application-generic, dal, shared): Rename "ControlVariables" to "ControlValues" by @rifont in #6680
- refactor(api,worker): untagle modules and deps by @ChmaraX in #6673
- feat(js): Com 208 improve the dx of the novu on function to return the cleanup by @BiswaViraj in #6650
- feat(js): Com 145 introduce novunextjs by @BiswaViraj in #6647
- feat(web): Request company size during sign-up by @SokratisVidros in #6676
- feat(api): add workflow trigger identifier parity by @djabarovgeorge in #6657
- feat(api): Add Novu-managed Bridge endpoint per environment by @rifont in #6451
- feat(dashboard): workflow editor route and basic layout by @LetItRock in #6681
- fix(js): Stabilize JS build process by @SokratisVidros in #6695
- feat(dashboard): workflow editor canvas - base step nodes and edges by @LetItRock in #6694
- fix(worker): Use
url
validator forAPI_ROOT_URL
by @rifont in #6698 - chore(web,api): remove redundant code; add/update e2e tests by @ChmaraX in #6688
- chore(dashboard): bring the hrm alive by @LetItRock in #6703
- fix(js): Bypass cache during novu.notifications.list() by @SokratisVidros in #6690
- feat(api): allow passing workflow identifier as id in new v2 workflow crud by @djabarovgeorge in #6691
- chore(web): Added custom step tooltip by @twentyone24 in #6579
- fix(web): Minor UI fix in billing plans by @SokratisVidros in #6665
- feat(dashboard): Nv 4476 workflow editor header navigation by @BiswaViraj in #6700
- feat(api): add get environment tags endpoint by @ChmaraX in #6713
- fix(framework): Support json values in LiquidJS templates by @rifont in #6714
- fix(api): Throw
BadRequestException
when missing controls by @rifont in #6716 - feat(framework, api, web, application-generic): Add
name
anddescription
to Framework workflow options by @rifont in #6708 - feat(novu): custom tunnel support by @wh1337 in #6711
- feat(api, worker, application-generic): Add exhaustive error handling for bridge requests by @rifont in #6715
- feat(dashboard): Create workflow sheet by @desiprisg in #6699
- feat(dashboard): workflow editor add in-app step by @LetItRock in #6706
- refactor(framework): Remove unused retryable codes constant by @rifont in #6720
- fix(application-generic): Allow unauthorized certs for bridge url by @SokratisVidros in #6717
- build(deps-dev): bump rollup from 3.20.2 to 3.29.5 by @dependabot in #6618
- chore(root): Prettier alignment by @SokratisVidros in #6723
- feat(dashboard): workflow editor autosave by @LetItRock in #6718
- feat(framework, web, application-generic): Propagate Bridge server errors to Bridge client by @rifont in #6726
- fix(api): update previous step identifier to step id instead of inter… by @djabarovgeorge in #6689
- chore(framework, novu): Release new versions by @rifont in #6731
- fix(application-generic): handle lock acquisition conflicts by @rifont in #6733
- fix(js): build types by @BiswaViraj in #6732
- feat(dashboard): Tag input suggestions by @desiprisg in #6728
- chore(dashboard): Remove branding from sidebar by @SokratisVidros in #6736
- fix(application-generic, api, worker): Throw client timeout exception for Bridge timeout errors by @rifont in #6737
- feat(api): Add preview endpoint by @tatarco in #6648
- fix(api): Return correct workflow.origin by @SokratisVidros in #6740
- feat(framework): CJS/ESM for framework by @SokratisVidros in #6707
- build(deps-dev): bump rollup from 3.20.2 to 3.29.5 by @dependabot in #6752
- build(deps-dev): bump http-proxy-middleware from 3.0.2 to 3.0.3 by @dependabot in #6745
- fix(root): rebuild env on container start for web by @L-U-C-K-Y in #6722
- fix(framework): Specify
zod-to-json-schema
as a dependency by @rifont in #6741 - feat(api): add slug parser in the api requests by @djabarovgeorge in #6705
- feat(dashboard): handle v1 legacy workflows redirect by @BiswaViraj in #6734
- fix(node): add @novu/nest deprecated warning and add novu/node self host info by @jainpawan21 in #6758
- fix(api): get subscriber preference parameter swagger value by @jainpawan21 in #6696
- chore(api): Increase rate limit window duration to 5 seconds by @rifont in #6759
- fix(framework): Experiement with importing json-schema-faker by @SokratisVidros in #6762
- feat(dashboard): Nv 4479 workflow editor configure workflow drawer by @BiswaViraj in #6729
- feat(dashboard): Avatar picker component by @desiprisg in #6765
- feat(api): revert to full slug by @djabarovgeorge in #6756
- feat(dashboard): Add handleValidationIssues util by @desiprisg in #6755
- fix(root): add novu cli flags and remove magicbell by @jainpawan21 in #6779
- fix(application-generic): update channels credentials with create and update subscriber by @jainpawan21 in #6724
- feat(api): add env url switch support by @djabarovgeorge in #6778
- feat(dashboard): workflow editor error handling + sentry by @LetItRock in #6776
- feat(api): Delete subscriber channel preference when updating global channel by @rifont in #6767
- chore(framework, api): Remove deprecated
X-
prefixed headers by @rifont in #6783 - fix(framework): Resolve CJS issues this time with json-schema-faker by @SokratisVidros in #6766
- fix(dashboard): Fix tag input CommandList placement and invalidate tags on workflow creation by @desiprisg in #6791
- fix(dashboard): Create workflow drawer fixes by @desiprisg in #6774
- feat(dashboard): Nv 4510 configure step base form with validation by @BiswaViraj in #6782
- docs(root): Improve readability and fix typos in README by @PrathameshSPawar in #6795
- chore(api, web, application-generic, shared, dal, framework): Remove deprecated
inputs
,data
andoptions
Framework properties by @rifont in #6785 - chore(dashboard): the edit step empty drawer and animations by @LetItRock in #6793
- feat(api): add promote workflow endpoint by @ChmaraX in #6771
- feat(dashboard): Action picker and URLInput primitive by @desiprisg in #6796
- feat(dashboard): test workflow functionality by @LetItRock in #6768
- feat(api): add ui scehma by @tatarco in #6764
- chore(api, worker): Remove redundant trigger
state
for Bridge API requests by @rifont in #6797 - feat(root): move docker images from github packages to aws ecr by @merrcury in #6792
- chore(root): Remove IS_WORKFLOW_PREFERENCES_ENABLED feature flag by @SokratisVidros in #6636
- feat(dashboard): Use slugs in workflow urls by @desiprisg in #6803
- chore(dashboard): in-app editor base form by @LetItRock in #6801
- chore(js, react, nextjs): Release version
2.6.0
by @rifont in #6814 - fix(framework): Explicitly exit workflow evaluation early after evaluating specified
stepId
by @rifont in #6808 - refactor(root): Update monorepo to use
@novu/react
workspace version by @rifont in #6816 - fix(api): Fix 500 error in /identify by @SokratisVidros in #6815
- fix(framework): Polish secretKey and apiUrl resolution by @SokratisVidros in #6819
- feat(api): treat workflow name as editable, non-unique values by @djabarovgeorge in #6780
- feat(api): treat step name as editable, non-unique values by @djabarovgeorge in #6807
- fix(worker): Add simple Subscriber Global Preference use-case for SendMessage usage by @rifont in #6817
- feat(api): make name required by @djabarovgeorge in #6818
- fix(api): Preserve control values across syncs by @SokratisVidros in #6824
- feat(dashboard): Read only code first workflows & sidebar cleanups by @desiprisg in #6823
- feat(dashboard): in-app editor form fields based on codemirror by @LetItRock in #6809
- chore(api): Move bridge e2e tests under bridge folder by @SokratisVidros in #6825
- chore(dashboard): InApp /docs redirect fix by @twentyone24 in #6831
- feat(dashboard): Nv 4511 configure step the preview section by @BiswaViraj in #6806
- feat(api): move step-schema to step by @tatarco in #6810
- feat(dashboard): codemirror styling by @LetItRock in #6830
- chore(root): remove QEMU setup action and streamline Docker buil… by @merrcury in #6813
- feat(dashboard): workflow promotion by @ChmaraX in #6804
- fix(dashboard): workflow row on-click redirect by @ChmaraX in #6839
- chore(dashboard): remove monaco editor from the dashboard by @LetItRock in #6837
- feat(api): Introduce includeTopics to GET /v1/subscribers/:id by @SokratisVidros in #6838
- fix(dashboard): Display the workflowId, not the Mongo ObjectID by @SokratisVidros in #6842
- fix(root): multi-arch docker build for community by @merrcury in #6836
- refactor(root): introducing graceful shutdown and optimise docker images by @merrcury in #6754
- fix(api): fix ui schema retrieval by @tatarco in #6844
- fix(root): update @nestjs/common and aws-sdk dependencies for consist… by @merrcury in #6845
- feat(api): update pnpm by @tatarco in #6847
- feat(application-generic, api, worker): Add instrumentation suffix builder by @rifont in #6827
- feat(api): add support for env switch by slug by @djabarovgeorge in #6828
- feat(api): add step parse on preview by @djabarovgeorge in #6851
- perf(api, worker): Add indexes to preferences schema for lookup by @rifont in #6853
- feat(dashboard): In app template preview by @desiprisg in #6843
- fix(api): get step data by @djabarovgeorge in #6855
- chore(dashboard): use step slug in the url by @LetItRock in #6854
- revert(root): PR #6754 by @merrcury in #6856
- feat(dashboard): delete step editor functionality by @ChmaraX in #6860
- feat(dashboard): generic confirmation modal by @ChmaraX in #6861
- fix(web): show organization verified domains by @ChmaraX in #6862
- fix(api): Remove double logging of Bridge errors by @SokratisVidros in #6864
- fix(web): Display billing cycle dates in event usage. by @SokratisVidros in #6863
- feat(dashboard): Click to copy workflowId on workflow list by @desiprisg in #6857
- feat(api): add plain support service by @jainpawan21 in #6848
- fix(api): refactor SupportService to use environment variable for API… by @merrcury in #6870
- feat(api): Complete email preview logic by @tatarco in #6772
- feat(api): expose payload schema on get step response by @djabarovgeorge in #6867
- feat(dashboard): Highlight selected step with border by @desiprisg in #6869
- feat(dashboard): Block navigations when unsaved changes are present by @desiprisg in #6874
- feat(framework): Add support for specifying mock results by @rifont in #6878
- fix(framework): Stop validating controls for non previewed step by @rifont in #6876
- refactor(api): new test-data endpoint to pass dynamic data by @djabarovgeorge in #6871
- feat(dashboard): Save immediately when a step is added by @desiprisg in #6882
- feat(novu): update novu init landing page by @scopsy in #6805
- feat(web): v3 dashboard opt-in widget by @ChmaraX in #6873
- feat(dashboard): in-app editor form driven by BE schema by @LetItRock in #6877
- chore(web): Remove Clerk sign-in patch by @SokratisVidros in #6888
- chore(root): Upgrade NX to latest packages by @SokratisVidros in #6775
- feat(api): Add Error Handling 2XX issues by @tatarco in #6884
- chore(deps): bump @sentry/browser from 8.33.1 to 8.34.0 by @dependabot in #6892
- fix(shared): Remove all dependencies from @novu/shared by @SokratisVidros in #6891
- refactor(framework): Make discovery completely asynchronous by @rifont in #6879
- fix(api): Subscriber deletion side-effects by @SokratisVidros in #6872
- chore(root): Fix misspellings in token keys and svgs by @rifont in #6895
- chore(root): inherit secrets in dev-deploy-webhook.yml by @merrcury in #6898
- feat(web): user profile menu opt-in by @ChmaraX in #6886
- feat(framework): Support Next.js 15 with Turbopack dev server by @rifont in #6894
- feat(dashboard): Autofill payload with example in step preview by @desiprisg in #6899
- feat(dashboard): Nv 4516 in app step editor custom step controls form by @BiswaViraj in #6900
- feat(dashboard): Autosuggestions for step variables by @desiprisg in #6903
- chore(root): Upgrade
picocolors
in lockfile by @rifont in #6907 - fix(web, dashboard): replace
BridgeStatus
type withHealthCheck
type, providestate
for preview by @rifont in #6910 - style(dashboard): Correct text capitalization for
Novu
in FreeTrialCard by @rifont in #6911 - chore(root): use smaller github action machines for e2e test by @merrcury in #6919
- fix(framework): Prevent adding duplicate workflows by @rifont in #6913
- feat(dashboard,web): opt-in welcome modal by @ChmaraX in #6920
- fix(dashboard): Instant preview on preview tab for step by @desiprisg in #6924
- docs(nextjs): Add backticks to readme
<Inbox />
usage by @rifont in #6927 - feat(root): release 2.0.1 for all major packages by @merrcury in #6925
New Contributors
- @elmdecoste made their first contribution in #6633
- @PrathameshSPawar made their first contribution in #6795
Full Changelog: v2.0.0...v2.0.1