What’s new in Novu 2.0.0?
TL;DR: All you need to know about the latest Novu 2.0.0 release. @novu/framework
and novu
CLI release for code-first workflows, React-based inbox component @novu/react
and headless Inbox component @novu/js
release.
2.0.0 Release Updates
We're excited to share the new features in our latest release. Join us as we reveal the cool things our team have been working on!
@novu/framework
typescript SDK to build code-first workflows
- Building notification workflows with the Novu Framework
- Manage and test local workflows using local studio
- Using custom step to fetch data from external sources
- SDK Specification
- Quick start guide for next.js, nest.js and express.js
novu
CLI to run local studio, generate boilerplate code and sync the workflows
- Use
npx novu@latest init
command to create new project having@novu/framework
based workflows - Use
npx novu@latest dev
command to start the local studio, generate tunnel URL - Use
npx novu@latest sync
command to sync workflows with novu cloud or self hosted environment - Read more on the npm page how to use novu cli and supported flags with each command
What's Changed
- chore: Update submodule by @rifont in #5264
- Nv 3522 sort the languages in the dropdown by @ainouzgali in #5259
- Create a script to increase the amount of storage space on default runner by @Cliftonz in #5262
- Convert script to github action by @Cliftonz in #5266
- Fix gupshup request by @RahulDutta007 in #5258
- Update groups for new default language by @ainouzgali in #5260
- Experimental by @scopsy in #5253
- fix(ci): Versions compatibility by @AliaksandrRyzhou in #5269
- feat: add preview debounce by @scopsy in #5281
- Pyroscope Integration by @Cliftonz in #5243
- chore: update vite package by @scopsy in #5208
- [Design System] Grouped PRs for Panda Setup by @antonjoel82 in #5267
- feat: add messages new api res by @scopsy in #5285
- V0.24.x by @scopsy in #5287
- Fix main branch for package-enterprise by @ainouzgali in #5272
- v0.24.x by @scopsy in #5288
- feat: error handling echo by @scopsy in #5291
- feat(api): search workflows by name or trigger identifier by @LetItRock in #5268
- feat: add echo error activity feed logs by @djabarovgeorge in #5294
- Adds seen read reliable update endpoint by @djabarovgeorge in #5280
- Editor autocomplete - does not open in a second use by @ainouzgali in #5290
- feat: add echo project waitlist components by @jainpawan21 in #5270
- feat(web): workflows allow searching by name or trigger identifier by @LetItRock in #5276
- fix: set novu providers as primary for new orgs by @ainouzgali in #5299
- feat: add hubspot component in shared web by @jainpawan21 in #5286
- Fix: Unhandled Error: Objects are not valid as a React child by @ainouzgali in #5295
- fix(web): workflow settings - providers warnings were cut off by @LetItRock in #5300
- fix: action popover crash by @BiswaViraj in #5301
- justnems-analytics-updates by @justnems in #5284
- NV-3561 | Component Audit by @antonjoel82 in #5297
- fix: Color tokens & legacy mapping by @antonjoel82 in #5307
- Update Otel Exporters by @Cliftonz in #5277
- Unhandled Error: SyntaxError JSON.parse() by @ainouzgali in #5303
- fix: provide notification group on creation by blueprint by @djabarovgeorge in #5296
- fix: update value of cxo founder by @jainpawan21 in #5315
- fix: Fixed Visual Bug in Workflow Editor with Digests by @lovishduggal in #5279
- feat(api): Allow img tags in the In-App & Email Editor by @efaraz27 in #5312
- Translation with params not included in payload generation by @ainouzgali in #5302
- Nv 3526 promoting a translation group default locale not promoted by @ainouzgali in #5316
- feat(dal): add deleted index and type safety index by @djabarovgeorge in #5309
- Add exponential backoff with jitter for the In-App Notification Center to re-establish WebSocket connections by @djabarovgeorge in #5321
- Nv 3593 bug tooltip issue on activities page graph by @BiswaViraj in #5326
- fix: Surface all auth server errors during login in email input. by @SokratisVidros in #5319
- fix(web): Tweak scrollbar placement in sidebar by @SokratisVidros in #5320
- feat: Tweak semantic color tokens by @antonjoel82 in #5332
- feat(api, web): Add annual subscription support by @davidsoderberg in #5335
- build(design-system): Add scripts for storybook build using nx by @rifont in #5333
- fix: used mantine color scheme hook to handle color scheme by @jainpawan21 in #5342
- fix: handle resend error case by @jainpawan21 in #5351
- feat: add product feature interceptor and hook by @davidsoderberg in #5327
- feat: add free trial banner and widget by @davidsoderberg in #5228
- chore(infra): Remove CI steps for redundant general worker by @rifont in #5354
- fix: cache validation during notification template promotion by @BiswaViraj in #5352
- feat(workers): add instrumentation for errors by @scopsy in #5356
- Small dx touch leveraging env var in node sdk by @SokratisVidros in #5346
- feat: Add type guard to improve error handling by @antonjoel82 in #5338
- Conventional comments setup by @antonjoel82 in #5358
- chore: updated the conventional comments script to include emoji by @LetItRock in #5361
- fix(worker): Skip template rendering for Echo Workflow steps by @rifont in #5364
- fix(worker): Skip template rendering for Echo Workflow steps by @rifont in #5365
- chore(infra): Remove CI steps for redundant general worker by @rifont in #5366
- fix(worker): Move missing SMS content check inside echo conditional by @rifont in #5368
- fix(worker): Move missing SMS content check inside echo conditional by @rifont in #5369
- fix(notification-center,widget): infinite scroll issue by @LetItRock in #5371
- chore(deps): bump sanitize-html from 2.10.0 to 2.12.1 by @dependabot in #5251
- build(deps-dev): bump vite from 4.5.2 to 4.5.3 by @dependabot in #5357
- feat: decluttering sentry errors by @ainouzgali in #5336
- fix: console warning controlled to uncontrolled component by @ainouzgali in #5324
- fix(web): make InApp code editor fit the height of its parent container by @FlacorLopes in #5372
- fix(deps): update dependency sanitize-html to v2.12.1 [security] by @renovate in #5252
- chore(deps): update dependency @types/inquirer to v8.2.10 by @renovate in #4899
- feat(ci): add stale bot for pull requests by @scopsy in #5374
- fix: free trial banner by @davidsoderberg in #5378
- chore: Remove unused dependencies by @SokratisVidros in #5382
- Revert "chore: Remove unused dependencies" by @SokratisVidros in #5383
- chore(web): Add feature flag for Hubspot onboarding flow by @rifont in #5386
- chore(web): Add feature flag for Hubspot onboarding flow by @rifont in #5388
- feat: add reply to field in resend by @jainpawan21 in #5389
- chore(repo): Disable body-max-line-length by @SokratisVidros in #5392
- feat: optimize organization queries by @djabarovgeorge in #5314
- fix: Ensure panda works with nested output directory by @antonjoel82 in #5394
- fix: Ensure health check return the correct status by @SokratisVidros in #5391
- feat: add modal on get started page for onboarding experiment v2 by @jainpawan21 in #5401
- chore(repo): Stream logs in local dev by @SokratisVidros in #5405
- Change pull request template by @ainouzgali in #5385
- Remove redundant step for uploading a new translation file by @ainouzgali in #5400
- feat: add comparison operators helpers by @michaldziuba03 in #5334
- chore(web): the playwright e2e tests poc by @LetItRock in #5313
- refactor(web): import echo from echo ee echo web by @djabarovgeorge in #5379
- feat(auth-v2): Add externalId to user and organizations by @SokratisVidros in #5406
- chore(ci): remove the api docker image build job from the test pipeline by @LetItRock in #5411
- fix: add domain parser hook and domain condition by @jainpawan21 in #5413
- fix(web): Remove strict lastname validation by @SokratisVidros in #5414
- feat: add webhook listener for customer subscription updated by @davidsoderberg in #5330
- test: Add visibility for CORS processing by @antonjoel82 in #5420
- Nv 3567 subscribers are duplicated during the burst of events by @djabarovgeorge in #5308
- test(api): add echo sync tests by @scopsy in #5421
- fix(worker): Provide correct execution context to Echo endpoints by @rifont in #5416
- test(web): Fix annual subscription tests by @rifont in #5423
- Nv 3651 sync flow should delete workflows removed in code by @ainouzgali in #5415
- fix: Use origin instead of host by @antonjoel82 in #5426
- Revert "Add exponential backoff with jitter for the In-App Notification Center to re-establish WebSocket connections" by @rifont in #5425
- ci: Use * instead of ['*'] by @antonjoel82 in #5428
- refactor: code index alignment by @djabarovgeorge in #5422
- feat: add mobile condition with modal by @jainpawan21 in #5432
- test(api): Filter on integrationId before assertion by @rifont in #5434
- next > 0.25.x by @scopsy in #5417
- feat(ci): Docker build cache by @AliaksandrRyzhou in #5433
- feat: update source by @davidsoderberg in #5410
- fix(@novu/node): Fix parameter parsing by @SokratisVidros in #5440
- Feat eazy sms by @sr-26 in #5393
- Information Architecture Feature Branch by @BiswaViraj in #5238
- feat: update source by @davidsoderberg in #5439
- [Design System] - Finish initial base token specification by @antonjoel82 in #5427
- [Information Architecture] - Fix tests & billing page by @antonjoel82 in #5444
- feat(api): Add resource throttler by @rifont in #5447
- feat(ws): Mount Socket.io Admin UI by @SokratisVidros in #5435
- chore: Bump ee submodule pointer by @SokratisVidros in #5448
- Add Initial code owners for web and docker files by @Cliftonz in #5318
- fix: billing cypress tests by @davidsoderberg in #5446
- chore(design-system): Remove cypress by @SokratisVidros in #5449
- Create a CI pipeline to run cypress and playwright tests 4 times a day by @AliaksandrRyzhou in #5443
- refactor(api): move update workflow to app gen by @djabarovgeorge in #5419
- fix(e2e): build by @djabarovgeorge in #5455
- Nv 3559 show the upgrade plan information by @ainouzgali in #5450
- feat: add google analytics script tag by @jainpawan21 in #5437
- fix(ci): Rollback by @AliaksandrRyzhou in #5459
- [Information Architecture] Feedback from Design by @antonjoel82 in #5456
- chore: Do not lint during e2e run by @SokratisVidros in #5452
- fix(ci): Cypress E2E has been disabled for PR temporary by @AliaksandrRyzhou in #5461
- fix(ci): Cypress E2E schedule update by @AliaksandrRyzhou in #5462
- fix(ci): Workflow_dispatch for the Testing Pipeline by @AliaksandrRyzhou in #5463
- fix(ci): Workflow_dispatch for Web E2e by @AliaksandrRyzhou in #5464
- fix(web): sidebar overflow issue by @LetItRock in #5470
- feat(ci): Schedule update by @AliaksandrRyzhou in #5472
- fix: sending email provider error to sentry by @davidsoderberg in #5471
- feat: update source by @davidsoderberg in #5469
- feat: add custom header support for resend, brevo and sendgrid by @jainpawan21 in #5343
- feat(ci): E2E API tests have been disabled by @AliaksandrRyzhou in #5473
- fix: sentry error overflow by @davidsoderberg in #5476
- chore(repo): Simplify health indicators interface by @SokratisVidros in #5404
- feat(providers): Add Whatsapp business as provider by @vitoorgomes in #5232
- fix: remove get started onboarding experiment modal by @jainpawan21 in #5475
- fix: remove hubspot script to avoid duplicate events tracking by @jainpawan21 in #5468
- feat: Change prettier config to js so it can be 'extended' by @antonjoel82 in #5480
- Revert "feat: Change prettier config to js so it can be 'extended' (#… by @antonjoel82 in #5488
- [Information Architecture] - Routing tweaks by @antonjoel82 in #5466
- Add novu enterprise trail docker compose file by @Cliftonz in #5491
- Revert "Add novu enterprise trail docker compose file" by @Cliftonz in #5494
- fix: helm chart by @aj-ya in #5495
- feat(wip): add custom step by @djabarovgeorge in #5323
- helmchart secret store-encryption-key lenght 32 by @filiprafaj in #5497
- nv-3687-consolidate-provider-npm-packages-into-a-single by @tatarco in #5453
- remove testing from webhook by @tatarco in #5503
- feat: change by @scopsy in #5504
- feat: test NV-3726 by @scopsy in #5505
- fix: test NV-3727 by @scopsy in #5507
- [Information Architecture] Refactor to Fix Brand Tests by @BiswaViraj in #5506
- refactor(app-generic): update distributed-lock.service.ts by @eltociear in #5499
- perf: improve mongodb pref fetching by @scopsy in #5508
- fix: hidden message dropdown below notifications center header by @racky7 in #5496
- Update README.md by @scopsy in #5509
- chore(deps): update dependency gh-pages to v5 [security] by @renovate in #5442
- refactor: echo getting started page by @davidsoderberg in #5477
- feat: disable old tests by @davidsoderberg in #5511
- Nv 2906 remove the is topic notification enabled feature flag by @denis-kralj-novu in #5493
- feat(ci): Run e2e when a label exist by @AliaksandrRyzhou in #5512
- refactor(echo-cli,echo-sdk): relocate to monorepo by @djabarovgeorge in #5501
- refactor(app-gen,worker): move add job to worker by @djabarovgeorge in #5458
- helmchart - add existingSecret functionality by @filiprafaj in #5515
- helmchart fix extraEnvVars by @filiprafaj in #5516
- chore: remove feature flags for localization by @scopsy in #5518
- Update README.md by @rannn505 in #5438
- E2E fail slack notification + scheduled API tests by @AliaksandrRyzhou in #5500
- This PR add a proprientary non-production docker compose file for Novu enterprise by @Cliftonz in #5519
- feat: add backend proxy for segment by @davidsoderberg in #5474
- feat: remove sending provider error to sentry by @davidsoderberg in #5482
- feat(ci): Condition update for Slack Notification by @AliaksandrRyzhou in #5520
- fix(ci): Instant rollback process by @AliaksandrRyzhou in #5460
- feat(ci): One platform for Docker images by @AliaksandrRyzhou in #5521
- chore(deps-dev): bump express from 4.18.2 to 4.19.2 by @dependabot in #5502
- build(deps-dev): bump tar from 6.1.13 to 6.2.1 by @dependabot in #5397
- fix: sentry error options.inverse is not a function by @ainouzgali in #5523
- chore: Pass production environment input when running API e2e by @SokratisVidros in #5524
- initial addition of test suite for cli-next NV-3653 by @ainouzgali in #5514
- fix: remove hostlist by @BiswaViraj in #5522
- feat(ci): Condition fix by @AliaksandrRyzhou in #5525
- Api e2e condition fix by @AliaksandrRyzhou in #5526
- v0.25.x by @scopsy in #5289
- feat: catch errors of wrong use of handlebars by @ainouzgali in #5527
- guard does not fit handlebar error, revert to show informative error message by @ainouzgali in #5529
- Fix form not dirty on image upload by @BiswaViraj in #5528
- fix: auto-scroll on provider sidebar [NV-3745] by @ChmaraX in #5531
- Fixes for scheduled e2e by @SokratisVidros in #5532
- fix(actions): Consolidate slack notification logic on test failure by @SokratisVidros in #5533
- fix mongodb secret condition and helper by @filiprafaj in #5534
- run deploy dev on app generic changes by @ainouzgali in #5530
- fix: provider sidebar from 'get-started' screen by @ChmaraX in #5535
- Release 2024_05_10 by @SokratisVidros in #5539
- fix(actions): Exclude prod branch from community labels by @SokratisVidros in #5540
- feat: add ability to set channels during trigger by @scopsy in #5541
- Nv 3673 add cli mvp test suite by @djabarovgeorge in #5547
- chore: Bump @nrwl/nx-cloud by @SokratisVidros in #5553
- [NV-3735]: Improve launch darkly by @antonjoel82 in #5517
- feat: Replace sign-in png with webp by @antonjoel82 in #5559
- Helmchart - add google bucket support by @filiprafaj in #5557
- Polish nx token setup by @SokratisVidros in #5567
- feat: add invite team members nudge flow by @jainpawan21 in #5549
- feat(api): Add automatic quota throttling by @rifont in #5485
- fix(app-gen): Fix ts directive by @rifont in #5572
- chore(providers): Update readme to describe installation and usage by @rifont in #5573
- Remove logging for health check by @Cliftonz in #5481
- feat(ci): Community releases by @AliaksandrRyzhou in #5578
- fix(web): fixed the flaky failing e2e tests after the changes we introduced with the async launch darkly by @LetItRock in #5575
- fix(ee): Move nestjs deps to peer deps by @rifont in #5580
- Remove All Staging Related CI/CD Pipelines by @Cliftonz in #5587
- fix(actions): Polish prepare-cloud-release.yaml by @SokratisVidros in #5594
- [Design System] Deprecations, linting, and helpers by @antonjoel82 in #5579
- [Design System] - New Package by @antonjoel82 in #5467
- fix(deps): update dependency sanitize-html to v2.12.1 [security] by @renovate in #5373
- fix(web): Align version of internal packages by @SokratisVidros in #5602
- chore: Upgrade to pnpm 9, add conventional commit PR title linting by @rifont in #5598
- fix(echo): Use dist for Echo artifacts by @rifont in #5590
- Inf 371 community release workflow by @AliaksandrRyzhou in #5595
- fix(ci): Fix of actions/download-artifact version by @AliaksandrRyzhou in #5608
- feat(api): add enable type validation by @djabarovgeorge in #5603
- chore(root): Add repo to scopes by @SokratisVidros in #5609
- Refactor [@novu/client] : remove axios dependency and use fetch instead by @BiswaViraj in #5554
- ci(root): require scope in conventional commit config by @rifont in #5611
- chore(root): Fix for prepare-cloud-release checkout by @SokratisVidros in #5615
- ci(root): Better readability of PR title linting comment by @rifont in #5616
- chore(root): Set NOVU_ENTERPRISE to doppler by @SokratisVidros in #5618
- chore(root): Move @novu/application generic under libs by @SokratisVidros in #5612
- fix(web): Email add-logo to brand page redirect by @ChmaraX in #5610
- ci(root): Check of EE files within community docker images by @AliaksandrRyzhou in #5617
- refactor(web): remove jwt-decode and refactor auth logic by @rifont in #5620
- refactor(web): Single theme entry point & ensure Mantine singletons by @rifont in #5624
- fix(web): Update copywriting by @SokratisVidros in #5627
- chore(web): Information Architecture Feedback by @antonjoel82 in #5591
- perf(web): Convert image assets to
webp
& skip flaky tests by @antonjoel82 in #5570 - fix(notification-center): Translation error in french by @GabrielFavot in #5629
- chore(web): Refactor auth logic by @SokratisVidros in #5626
- fix(web): Build error correction for
useAuth
by @antonjoel82 in #5630 - style(web): Correct dark mode background color for loader by @rifont in #5631
- ci(root): Run CSpell only on community PRs by @Cliftonz in #5633
- fix(web): Workflow trigger on-click sidebar render loop by @ChmaraX in #5634
- fix(web): workflow run test tab and failing e2e tests by @LetItRock in #5637
- chore(web): More auth refactoring by @SokratisVidros in #5636
- fix(echo): add server options handlers option by @scopsy in #5640
- test(echo): Mvp test suite by @djabarovgeorge in #5583
- ci(root): add feature flag checker by @Cliftonz in #5642
- ci(root): Run CSpell only on web app by @Cliftonz in #5639
- test(api): Echo server mvp test suite by @ainouzgali in #5584
- feat(echo): sync version with package json by @djabarovgeorge in #5625
- fix(web): export claims orgid and env id by @BiswaViraj in #5643
- fix(api): Remove faker by @SokratisVidros in #5645
- test(web): Migrate Cypress tests to Playwright by @tatarco in #5555
- build(root): Fix deployment.yaml indent error after adding google bucket support by @pedrohavay in #5635
- chore(root): Upgrade all projects to React 18 by @antonjoel82 in #5641
- feat(novui,web): Setup Mantine v7 and demonstrate ability to style in lib and app by @antonjoel82 in #5651
- chore(root): Bump pnpm to its latest version by @SokratisVidros in #5652
- chore(root): Bump pnpm to its latest version by @SokratisVidros in #5653
- build(echo): Use tsup for building distributable by @rifont in #5658
- feat(echo): add SvelteKit serve function by @awbx in #5650
- fix(api): tenant field description in event trigger api by @jainpawan21 in #5647
- feat(root): NV-3847 include create-novu-app to monorepo by @denis-kralj-novu in #5664
- chore(web): Stabilize PW E2E by @SokratisVidros in #5656
- chore(root): Tweak test.yml by @SokratisVidros in #5667
- feat(echo): add support for Remix framework by @rifont in #5666
- feat(js): the base js sdk package scaffolding by @LetItRock in #5654
- refactor(root): Nv 3846 consolidate env file behavior by @denis-kralj-novu in #5662
- refactor(automation): Simplify docker compose files by @Cliftonz in #5657
- feat(design-system,web): Move icons by @antonjoel82 in #5677
- fix(echo): Replace faulty instanceof check with static code check by @rifont in #5678
- refactor(automation): Update CI pipeline actions by @Cliftonz in #5669
- refactor(automation): Add Check to ensure only next moves code to prod by @Cliftonz in #5676
- fix(web): Fix component type for
VariableManagement
by @antonjoel82 in #5679 - feat(web): Local sidebar by @antonjoel82 in #5673
- refactor(api): improve notification and email handling by @rifont in #5683
- fix(web): add redirect to page after login by @jainpawan21 in #5668
- fix(api): wrap invite nudge in try catch by @jainpawan21 in #5686
- feat(novui,web): V2 flow list by @antonjoel82 in #5682
- build(root): Update Jarvis to run docker infra instead of through brew by @Cliftonz in #5659
- fix(api): invite nudge members count by @jainpawan21 in #5690
- fix(ee-echo-web): Inherit input styling for inputs component by @rifont in #5691
- ci(root): Create New Cloud Deployment by @Cliftonz in #5693
- chore(web): Remove unused multi-provider from example env by @rifont in #5695
- chore(web): Remove translation manager feature flag by @rifont in #5696
- refactor(worker): add job by @djabarovgeorge in #5663
- fix(root): Update Dockerfile ag path by @ameensom in #5702
- feat(client): add novu user agent by @BiswaViraj in #5671
- feat(novui): Map panda values to mantine theme by @antonjoel82 in #5692
- feat(js): lazy session initialization and interface fixes by @LetItRock in #5665
- fix(web): Hubspot onboarding invite member flow by @jainpawan21 in #5674
- feat(root): include local tunnel work by @denis-kralj-novu in #5698
- chore(root): update ee package reference by @denis-kralj-novu in #5707
- chore(create-novu-app): Update README with quickstart guide and release by @rifont in #5709
- refactor(worker): Local instance selection handlebars by @scopsy in #5622
- chore(root): rename chimera to bridge by @denis-kralj-novu in #5711
- feat(echo): add skip support by @djabarovgeorge in #5619
- fix(node): Fixing chat missing in events interface by @ameensom in #5661
- chore(root): update react monorepo by @renovate in #5713
- fix(novu): bring back community self host docker compose file by @jainpawan21 in #5718
- feat(web,design-system,novui): Add embeddable docs by @davidsoderberg in #5513
- fix(novui): semantic colors tokens for table by @davidsoderberg in #5721
- chore(web): More e2e stability fixes by @SokratisVidros in #5712
- chore(web): Consolidate all web code into a single app by @SokratisVidros in #5716
- feat(echo): add regular delay step feature parity by @djabarovgeorge in #5670
- chore(web): Consolidate web and shared web by @SokratisVidros in #5722
- chore(root): Consolidate web and shared web - part 2 by @SokratisVidros in #5723
- feat(web,novui): Button, Title, Text,
colorPalette
experiments by @antonjoel82 in #5719 - build(echo): Bundle only cjs and remove esm build by @rifont in #5726
- feat(echo): add inputs variable compilation by @djabarovgeorge in #5724
- feat(novui,web): Fix Button types, scaffold Flow detail by @antonjoel82 in #5727
- chore(create-novu-app): update readme by @denis-kralj-novu in #5734
- docs(api): Documentation Changes - updating and removing endpoints from swagger by @tatarco in #5687
- chore(echo): Release 0.24.3-alpha.4 by @rifont in #5732
- feat(novui,web): Add IconButton, build aesthetics of flow editor by @antonjoel82 in #5730
- chore(root): fix submodule reference by @denis-kralj-novu in #5737
- feat(novui): json schema form initial implementation by @ainouzgali in #5700
- feat(echo): introduce options method for cors config with nextjs by @scopsy in #5744
- test(echo): migrate from Jest to Vitest by @rifont in #5736
- refactor(echo): introduce declaring workflow by @denis-kralj-novu in #5717
- feat(novui,web): V2 step editor. Tabs by @antonjoel82 in #5738
- feat(web,novui): Add Echo onboarding by @davidsoderberg in #5646
- fix(web): Fix variants prop by @davidsoderberg in #5751
- chore(echo): rename @novu/echo to @novu/framework by @denis-kralj-novu in #5750
- test(api): Remove create-usage-records feature flag tests by @rifont in #5753
- chore(create-novu-app): rename @novu/echo to @novu/framework by @denis-kralj-novu in #5754
- chore(root): update submodule commit by @rifont in #5758
- ci(root): remove enterprise docker containers by @Cliftonz in #5740
- chore(create-novu-app): bump version to 0.24.3-alpha.5 by @rifont in #5757
- feat(providers): Mobishastra sms provider by @ameensom in #5648
- refactor(api): mark ee enpoints as hidden by @tatarco in #5759
- chore(web): Nv 3810 remove information architecture ff by @SokratisVidros in #5756
- feat(web): v2 Backend integration by @scopsy in #5752
- feat(novui): Input component by @antonjoel82 in #5760
- fix(api): connect parameter to level path param bug fix by @tatarco in #5771
- Release 2024-06-18 19:42 by @github-actions in #5773
- chore(web): Restore layouts page by @SokratisVidros in #5764
- feat(web): V2 step previews by @ainouzgali in #5775
- chore(web): Consolidate env hooks by @SokratisVidros in #5766
- feat(framework,worker): add digest parity by @djabarovgeorge in #5765
- feat(novui): Select & Checkbox components by @antonjoel82 in #5769
- feat(web): add test for workflow and step by @davidsoderberg in #5777
- feat(web): add docs for step types in workflow floating menu by @davidsoderberg in #5779
- fix(web): Restore vercel integration flow by @BiswaViraj in #5780
- fix(web): button styling for onboarding by @davidsoderberg in #5785
- fix(web): preview email web height by @davidsoderberg in #5786
- feat(web): add so user is redirect to studio if feature flag v2 is enabled by @davidsoderberg in #5787
- feat(web): add docs for add workflow button by @davidsoderberg in #5789
- feat(node): add support for bridge URL submission and default value by @denis-kralj-novu in #5770
- feat(novui): JsonSchemaForm styling by @antonjoel82 in #5784
- feat(js): js sdk feeds module by @LetItRock in #5688
- feat(js): js sdk preferences by @LetItRock in #5701
- feat(js): handling the web socket connection and events by @LetItRock in #5704
- feat(novui,web): General UI / UX fixes and improvements by @antonjoel82 in #5797
- feat(api): the new inbox controller by @LetItRock in #5735
- feat(web): v2 errors in preview by @ainouzgali in #5802
- feat(framework): add auto deterministic preview for required payload variables by @scopsy in #5743
- feat(worker, framework): Dynamic bridge url to not require local <> dev syncs by @scopsy in #5761
- feat(web): update echo docs links to framework by @davidsoderberg in #5801
- feat(web): add test workflow for dev and prod by @davidsoderberg in #5804
- feat(web): add empty properties state by @davidsoderberg in #5800
- feat(web): add mixpanel session recording by @davidsoderberg in #5793
- feat(web): add correct code snippets by @davidsoderberg in #5807
- feat(framework): Add Zod support by @rifont in #5806
- feat(web): add color palette to onboarding pages by @davidsoderberg in #5809
- fix(api): invalidation by @scopsy in #5810
- feat(framework): Add cron expression helper enums by @rifont in #5811
- feat(framework): Set
strictAuthentication
to false whenprocess.env.NODE_ENV==='development'
by @rifont in #5813 - fix(web): wrong theme color on navigation between local and development by @ainouzgali in #5816
- feat(api): inbox - the new get notifications endpoint by @LetItRock in #5792
- feat(js): Introduce UI by @BiswaViraj in #5746
- feat(web,novui): V2 inputs panel improvements by @ainouzgali in #5815
- fix(web): Nv 3931 bug skip onboarding is redirecting to dev environment by @ainouzgali in #5817
- feat(novu): Add
npx novu dev
command by @denis-kralj-novu in #5824 - refactor(framework): Rename inputs to controls by @rifont in #5819
- feat(js): Scope variables under class by @desiprisg in #5820
- feat(js): Localization infra by @desiprisg in #5822
- feat(web,novui): Step preview improvements by @ainouzgali in #5832
- feat(web): add checks if org have v2 enabled or not by @davidsoderberg in #5829
- feat(web): add sync and update bridge button by @denis-kralj-novu in #5798
- feat(web): add segment tracking by @davidsoderberg in #5827
- feat(web): fix so scroll in onboarding is correct by @davidsoderberg in #5834
- refactor(web, api, worker, dal): Rename inputs to controls by @rifont in #5833
- feat(api): inbox - get notifications count endpoint by @LetItRock in #5823
- feat(novui): Add LoadingOverlay component by @antonjoel82 in #5838
- feat(framework): update novu framework headers by @denis-kralj-novu in #5837
- feat(web): Local studio being local by @SokratisVidros in #5812
- fix(web): Polish Bridge URL modal by @SokratisVidros in #5841
- fix(web): Flicker when using Nav menu by @antonjoel82 in #5842
- feat(novu): add cli loading states by @scopsy in #5843
- feat(create-novu-app): localtunnel removal from create-novu-app by @denis-kralj-novu in #5835
- feat(web): Add Local Studio sidebar & add header items by @antonjoel82 in #5844
- feat(web): refactor onboarding by @davidsoderberg in #5849
- feat(web): hide more for v2 enabled feature flag by @davidsoderberg in #5845
- refactor(framework, web): Rename
data
topayload
by @rifont in #5846 - feat(web): Nv 3952 create new get started page by @davidsoderberg in #5850
- feat(framework): add trigger action by @djabarovgeorge in #5839
- fix(framework): add json parse by @djabarovgeorge in #5853
- refactor(web): studio onboarding to use same bridge hook as rest of studio by @davidsoderberg in #5854
- feat(web): V2 local studio layout by @ainouzgali in #5856
- feat(web): New onboarding by @SokratisVidros in #5855
- feat(web): Fix styling, centralize routing utils by @antonjoel82 in #5861
- feat(novu): move sync command by @denis-kralj-novu in #5852
- feat(js): Com 36 render the bell button by @BiswaViraj in #5825
- chore(framework, create-novu-app, novu): Publish prerelease by @rifont in #5859
- chore(framework,node): Rename NOVU_API_KEY to NOVU_SECRET_KEY by @SokratisVidros in #5857
- refactor(novu): Rename CLI options and README for dev command by @rifont in #5860
- chore(create-novu-app): remove unused params by @denis-kralj-novu in #5867
- refactor(framework): Add env-var for strict authentication by @rifont in #5866
- fix(api): create in-app integrations when new org is created by @jainpawan21 in #5783
- feat(js): Flatten localization prop type by @desiprisg in #5858
- feat(web): Teach studio to connect to Novu API for execution details by @SokratisVidros in #5865
- feat(js): Introduce baseTheme prop and theme merging by @desiprisg in #5851
- refactor(create-novu-app): Rename references from Next App to Novu App by @rifont in #5870
- chore(novu, novu-labs, framework, create-novu-app): Publish prerelease by @rifont in #5869
- feat(web): empty and loading states for local studio by @ainouzgali in #5862
- feat(web): Refactor docs to hide voting widget on error or load by @antonjoel82 in #5872
- fix(web, novu): Onboarding flow authentication and iFrame popups by @rifont in #5873
- feat(web): use hook for showing execution details in onboarding by @ainouzgali in #5878
- feat(web): Nv 3982 run a test doesnt work in dev environment by @ainouzgali in #5882
- fix(framework): fetch bad request response by @djabarovgeorge in #5881
- fix(web): echo terminal not working in docs modal by @davidsoderberg in #5875
- feat(web,novui): Loading tweaks by @antonjoel82 in #5874
- chore(api): Move
triggerBulk
,triggerBroadcast
andcancel
Event API methods to the top-level of the sdk by @rifont in #5879 - fix(framework): Add missing
peerDependencies
and fix dynamic imports by @rifont in #5883 - style(novu): Really cool CLI animation experiment- WIP by @scopsy in #5847
- fix(web): Fix show inputs when not in studio by @ainouzgali in #5886
- style(novu): Update spinner messages with emojis by @rifont in #5888
- fix(js): Use key prefix instead of id for alpha shades by @desiprisg in #5890
- chore(novu): bump version to 0.24.3-alpha.8 by @rifont in #5891
- fix(web): set cookie as secure by @ainouzgali in #5892
- feat(api, worker): add support for stateless step controls by @djabarovgeorge in #5889
- fix(web): replace useApiKeysPage with useStudioState by @rifont in #5898
- feat(api): change control dto structure by @djabarovgeorge in #5900
- fix(web): Make "Edit endpoint" button look more clickable by @rifont in #5901
- fix(web): Remove faulty cross-iframe link for Discord invite by @rifont in #5899
- chore(create-novu-app): align code with latest state by @denis-kralj-novu in #5896
- fix(root): no more eslint on pre-commit by @scopsy in #5905
- fix(web): store localhost url by @denis-kralj-novu in #5906
- feat(web): fix cloud bridge status by @scopsy in #5904
- feat(web): add controls to the preview by @scopsy in #5884
- style(web): add CTA focus for test workflow by @scopsy in #5909
- feat(web): add refetch on windon focus for previews by @scopsy in #5907
- feat(web): fix url preview by @scopsy in #5908
- fix(web): activity feed workflow names by @scopsy in #5911
- fix(web): Display bridgeUrl on cURL command, refactor code snippets by @rifont in #5913
- fix(web): local to dev sync modal improvement by @scopsy in #5912
- fix(api): Nv 4021 syncing to production environment fails for new org by @ainouzgali in #5916
- refactor(root): Rename from
web.novu.co
todashboard.novu.co
by @rifont in #5876 - feat(framework): Add trigger capability to defined workflows by @rifont in #5877
- fix(api): Ensure both web and dashboard subdomains work in parallel by @SokratisVidros in #5919
- fix(worker): store null in cache after stateless trigger by @djabarovgeorge in #5922
- fix(create-novu-app): Remove redundant checkout step in deploy job by @rifont in #5924
- refactor(novu): replace
ntfr.dev
withnovu.sh
by @rifont in #5920 - feat(web): add tracking event for sync button clicked by @davidsoderberg in #5925
- feat(web): add new empty state for workflows in v2 by @davidsoderberg in #5917
- chore(novu, create-novu-app): Publish prereleases by @rifont in #5928
- fix(web): tracking events in studio by @davidsoderberg in #5897
- fix(web): so track is not spammed by @davidsoderberg in #5930
- chore(framework): Release
@novu/framework
@0.24.3-alpha.14 by @rifont in #5923 - feat(web,novui): Studio <-> Dashboard Button, other small fixes by @antonjoel82 in #5914
- feat(web): add mixpanel identifiy by @davidsoderberg in #5935
- fix(framework): Remove compile time secret key check by @rifont in #5932
- feat(web): Nv 4013 non tech missing back button when in workflowstep test view by @ainouzgali in #5929
- fix(web): Always pick the secret key from development environment by @SokratisVidros in #5938
- chore(novu): bump version to 0.24.3-alpha.10 by @rifont in #5941
- fix(framework): Allow trigger without
payloadSchema
and require Vercel preview flag for previewbridgeUrl
by @rifont in #5942 - feat(web): update get started by @davidsoderberg in #5937
- fix(web): Crate with fixes by @SokratisVidros in #5940
- fix(web): preview not rendering initial controls by @ainouzgali in #5944
- feat(web): add event for workflow open by @davidsoderberg in #5945
- feat(root): remove app option by @djabarovgeorge in #5951
- fix(web): github action svg by @davidsoderberg in #5950
- fix(web): cta on get started by @davidsoderberg in #5952
- fix(api): Fetch API keys consistently regardless of the current env by @SokratisVidros in #5954
- fix(web): so correct v2 feature flags usage by @davidsoderberg in #5957
- fix(create-novu-app): Fix onboarding workflow by @rifont in #5959
- fix(web): so skeleton for preview web takes full width by @davidsoderberg in #5961
- chore(root): Release version
2.0.0-canary.0
across monorepo by @rifont in #5960 - fix(web): eslint error by @davidsoderberg in #5964
- fix(web): onboarding check marks by @davidsoderberg in #5966
- chore(root): Only build and deploy in production by @SokratisVidros in #5965
- docs(web): update doc links by @ainouzgali in #5970
- fix(framework): Add
OPTIONS
endpoint for Sveltekit, improveserve
typedoc by @rifont in #5971 - docs(web): Docs old quickstart links by @ainouzgali in #5973
- chore(root): Remove cli-next package by @SokratisVidros in #5968
- fix(web): Remove double-quotes from Segment identifiers by @antonjoel82 in #5974
- fix(web): remove echo from tooltip info by @denis-kralj-novu in #5977
- fix(web): so buttons are working correctly on get started by @davidsoderberg in #5978
- feat(js): Create component renderer by @desiprisg in #5953
- fix(web): Nv 3999 actions channels side controls overflow in chrome by @ainouzgali in #5982
- feat(web): hide webhook menu item if v2 is enabled by @davidsoderberg in #5983
- feat(js): Com 38 inbox popover by @BiswaViraj in #5828
- fix(novu): From 60kb to 30KB by @SokratisVidros in #5969
- feat(js): Enforce appearance keys by @desiprisg in #5984
- feat(root): persistent tunnel urls by @djabarovgeorge in #5931
- refactor(framework): replace action strings with enum by @rifont in #5985
- refactor(api): Error handling for bridge apps and use enums for action types by @rifont in #5989
- chore(root): update submodule reference by @rifont in #5990
- feat(web): Onboarding funnel updates by @scopsy in #5991
- chore(novu, framework): update package versions in CLI and framework by @rifont in #5993
- feat(web, cli): cli anonymous state by @scopsy in #5994
- fix(js): Export NovuUI from ui directory only by @desiprisg in #5998
- fix(js): Fix portal default props by @desiprisg in #6000
- chore(novu): Release version 2.0.0-canary.4 by @rifont in #5999
- refactor(framework): Move API servers into collective folder by @rifont in #5995
- refactor(root): Rename Echo to Bridge by @rifont in #6003
- feat(web): refetch discovery after bridge url update by @djabarovgeorge in #6005
- feat(api): inbox - update the notification status endpoint by @LetItRock in #5836
- feat(api): inbox - change all notifications status by @LetItRock in #5934
- build(api, worker, ws, webhook): Use Nest.js SWC compiler plugin by @rifont in #6006
- feat(web,cli): change favicons by @ainouzgali in #6007
- chore(root): Replace default imports with named imports by @rifont in #6014
- chore(root): Update submodule to latest commit by @rifont in #6016
- refactor(web): use namespace import for MixPanel by @rifont in #6022
- chore(repo): Bump AWS Github actions by @SokratisVidros in #6019
- build(root): add vscode tasks for app by @scopsy in #6026
- fix(web): Use
refetch
in dependency array for discovery refetch by @rifont in #6024 - chore(api,worker): Just deploy Novu Cloud to staging by @SokratisVidros in #6023
- feat(worker): extract i18n instance from command serialization by @djabarovgeorge in #6025
- redactor(cli): move create-novu-app to cli [GRW-1] by @scopsy in #6018
- refactor(web): Use context instead of non-singleton Auth hook by @antonjoel82 in #5976
- feat(ee-auth): Use clerk in the enterprise version by @ChmaraX in #5755
- feat(web, cli): sync the url between http server and dashboard by @djabarovgeorge in #6013
- chore(cli): Publish version
2.0.0-canary.6
by @rifont in #6032 - chore(api): Rename WEBHOOK_SECRET by @SokratisVidros in #6033
- feat(framework): add generic support for providers by @davidsoderberg in #6021
- chore(cli): update version and build script by @rifont in #6034
- Com 41 implement inbox header and footer components by @BiswaViraj in #6008
- feat(root): Fix JS build and introduce playground applications by @desiprisg in #5988
- feat(js): Auto apply generic appearance keys via style() by @desiprisg in #6041
- feat(web): Add onboarding as the first post-signup by @scopsy in #6036
- chore(root): update staging URLs by @denis-kralj-novu in #6043
- feat(web): Add Clerk components for the EE version by @ChmaraX in #5895
- feat: add minor studio improvements by @scopsy in #6044
- fix(ee-auth): onboarding check by @ChmaraX in #6046
- chore(root): update application-generic path in code workspace by @ChmaraX in #6047
- Plat 2 migrate novu staging environment to novu stagingcom by @denis-kralj-novu in #6052
- feat(framework): add first five schemas for providers by @davidsoderberg in #6039
- fix(js): Popover cleanups by @desiprisg in #6049
- fix(ee-auth): update session when org metadata are updated by @ChmaraX in #6048
- fix(ee-auth): retrieve user organizations list from clerk by @ChmaraX in #6054
- Com 50 implement the settings component by @BiswaViraj in #6035
- chore(api, worker, application-generic, shared, dal): Move Bridge API and Worker to open-source code by @rifont in #6045
- feat(framework): add lambda handler by @scopsy in #6053
- feat(api): vercel sync integration for marketplace by @scopsy in #6015
- fix(api): delete all credentials of one providerId type by @jainpawan21 in #6055
- feat(api): inbox cors wildcard configuration by @LetItRock in #6063
- chore(api): Remove environmentId from auth JWT by @SokratisVidros in #5768
- feat(web): add changes sync changes dot indication by @djabarovgeorge in #6042
- fix(api): Restore switchToProdEnvironment during E2E by @SokratisVidros in #6067
- fix(web): ensure onboarding flow for cli by @scopsy in #6066
- fix(web): translation e2e tests by @ChmaraX in #6068
- fix(api): replace axios instance with test agent in events e2e by @ChmaraX in #6069
- fix(api): fix user registration e2e - removal of env from token by @ChmaraX in #6070
- fix(api): get organizations e2e by @ChmaraX in #6072
- feat(worker): Disable inline-css behind feature flag by @antonjoel82 in #6073
- fix(api): Ensure that environment switching endpoints is backwards compatible by @SokratisVidros in #6071
- fix(js): Fix build types by @desiprisg in #6064
- fix(web): Restore all variants specs by @SokratisVidros in #6076
- feat(js): Button variants, asChild on Popover by @desiprisg in #6057
- feat(api): inbox - update the mark single/all notification endpoint urls by @LetItRock in #6074
- fix(api): clerk e2e ee tests by @ChmaraX in #6079
- fix(js): Scope inbox notification status context by @desiprisg in #6080
- fix(web): Restore Local Studio opening by @SokratisVidros in #6081
- feat(js): Com 82 implement filters on sdk by @BiswaViraj in #6060
- chore(web): ensure onboarding for v2 works by @denis-kralj-novu in #6083
- fix(web): get new envs directly instead of via usequery update by @ChmaraX in #6085
- fix(framework): twilio schema in framework by @davidsoderberg in #6065
- fix(js): accordion close by @BiswaViraj in #6087
- chore(js): update the sdk with the latest api changes by @LetItRock in #6086
- fix(web): don't show org form twice for new users by @denis-kralj-novu in #6089
- fix(api, web): More fixes on env and org switching by @SokratisVidros in #6091
- fix(api): bring back reload organization callback by @ChmaraX in #6093
- chore(web): remove unused auth provider hook by @ChmaraX in #6094
- feat(framework): add sanitize html to step output by @davidsoderberg in #6082
- feat(novui,web): Apply CSS Layers by @antonjoel82 in #6050
- feat(novui): Re-style Step Controls by @antonjoel82 in #6029
- ci(root): add ee clerk e2e tests to dev deploy by @ChmaraX in #6056
- fix(web): ensure we wait for loads to happen by @denis-kralj-novu in #6098
- fix(web): add internal id condition to ee switch org callback by @ChmaraX in #6096
- feat(js): Notification list by @desiprisg in #6002
- feat(js): Com 70 the endpoint that returns all preferences global workflow by @BiswaViraj in #6077
- fix(worker): Use Bridge data for Delay step during stateful execution by @rifont in #6107
- chore(client): add the novu api version header by @LetItRock in #6090
- chore(api): inbox - improve the avatar and subject fields on the notification interface by @LetItRock in #6105
- feat(root): Create clean-build.sh by @antonjoel82 in #6095
- fix(worker): Update metadata when handling Bridge application digest by @rifont in #6111
- feat(web): GRW-12 - create a bridge app with sample workflows for new signups by @scopsy in #6058
- feat(js): inbox - single websocket connection across tabs by @LetItRock in #6099
- fix(framework): Make step channel output sanitization more permissive by @rifont in #6106
- fix(js): Fix checkmark for selected value and localize text by @desiprisg in #6104
- fix(novu): Upgrade react-email dependencies to fix headers in example app by @rifont in #6120
- feat(js): Com 71 the endpoint to update preferences global workflow by @BiswaViraj in #6116
- fix(web): V2 minor fixes by @antonjoel82 in #6114
- fix(web): vercel logged in flow by @scopsy in #6126
- refactor(web): update sandbox endpoint to remove push channels by @scopsy in #6127
- Plat 10 setup clerk for novu stagingco by @denis-kralj-novu in #6129
- fix(web): banner is not show after signup by @scopsy in #6115
- feat(api): change sync org request scope to default (singleton) by @ChmaraX in #6121
- chore(root): update submodule pointer by @ChmaraX in #6132
- fix(worker): Use susbcriber locale for in-app and email steps by @rifont in #6134
- refactor(worker): use 'system' for environmentId and userId for inline-css flag evaluation by @rifont in #6136
- chore(root): update submodule to latest commit by @rifont in #6142
- chore(web): Crate with auth fixes by @SokratisVidros in #6123
- fix(web): Simplify enterprise sign up by @SokratisVidros in #6141
- fix(web): make clerk redirect properly by @denis-kralj-novu in #6147
- fix(web): include required env vars for proper clerk deployment in gi… by @denis-kralj-novu in #6148
- fix(api): Replace hat randomID generation with native node crypto by @SokratisVidros in #6012
- chore(novu, framework, worker, application-generic): Publish prerelease and improve types by @rifont in #6122
- feat(web): normalize user emails in ee by @ChmaraX in #6137
- feat(js): Implement the renderNotification prop by @desiprisg in #6125
- chore(web): adjust staging settings by @denis-kralj-novu in #6153
- chore(root): update clerk sdk to version supporting multi app domains by @denis-kralj-novu in #6157
- chore(novui): Setup Panda-learning resources by @antonjoel82 in #6145
- fix(web): Fix monitoring ids by @denis-kralj-novu in #6150
- chore(root): Release 2024-07-25 08:06 by @github-actions in #6151
- chore(root): Release 2024-07-26 08:05 by @github-actions in #6161
- fix(web): ensure refresh happens on org and env trigger when in specific workflow by @denis-kralj-novu in #6162
- fix(web): remove duplicate title and description by @denis-kralj-novu in #6164
- fix(web): hide branding for v2 users by @denis-kralj-novu in #6168
- feat(web): update ee questionnaire by @ChmaraX in #6171
- chore(root): Move K8s community work to a separate repo by @SokratisVidros in #6166
- chore(web): enable redirect from legacy dashboard url in stage by @denis-kralj-novu in #6177
- feat(js): Improve style() functionality by @desiprisg in #6170
- fix(framework): Remove only failing validation properties and simplify Slack schema by @rifont in #6160
- chore(web): Redirect legacy domain by @denis-kralj-novu in #6179
- chore(web): target visual issues in the clerk menu integration by @denis-kralj-novu in #6176
- fix(web): http api client missing env and memoizing jwt by @ChmaraX in #6174
- chore(root): move source of clerk config data to workflow params for all envs by @denis-kralj-novu in #6180
- fix(web): ee modals overlapping by @ChmaraX in #6181
- feat(js): Com 95 add preferences method to sdk and UI by @BiswaViraj in #6117
- feat(js): Default notification component by @desiprisg in #6163
- fix(root): include missing environment declaration by @denis-kralj-novu in #6182
- feat(js): inbox support multiple counts for the provided filters by @LetItRock in #6159
- fix(root): Put in real values into variables (they are not secret) by @denis-kralj-novu in #6185
- fix(web): dedicated billing page for ee (tmp) by @ChmaraX in #6186
- fix(web): Update api keys on regeneration by @SokratisVidros in #6187
- feat(web): Add color scheme toggle to Studio by @antonjoel82 in #6175
- feat(web,novui): initial implementation of var autocomplete in controls by @ainouzgali in #6097
- fix(web): various UI fixes by @denis-kralj-novu in #6188
- chore(root): prepare to release clerk to prod US [MERGE WHEN READY] by @denis-kralj-novu in #6190
- fix(api): syncing of external entities in ee by @ChmaraX in #6193
- fix(api, dal): add access key in dto and integration schema by @jainpawan21 in #6191
- fix(js): Set inbox width top level by @desiprisg in #6194
- chore(root): update submodule pointer by @ChmaraX in #6196
- chore(root): flip wrong flags by @denis-kralj-novu in #6198
- fix(web): prompt onboarding only for users registered after today by @ChmaraX in #6200
- fix(api): omit clerk api calls when using api key by @ChmaraX in #6203
- fix(api): omit clerk call when retrieving org in widgets by @ChmaraX in #6205
- fix(api): widgets clerk call by @ChmaraX in #6207
- feat(framework, api, worker, application-generic, dal): Support workflow tags in Framework by @rifont in #6195
- fix(api): add community org repo as dependency to widgets module by @ChmaraX in #6208
- chore(js): inbox sdk interface and events improvements by @LetItRock in #6184
- chore(root): Parallelize EU/US API deployment by @SokratisVidros in #6210
- fix(api): Remove admin check and track always by @SokratisVidros in #6211
- chore(root): update ee reference by @denis-kralj-novu in #6213
- feat(js): Introduce a Tooltip primitive by @desiprisg in #6189
- fix(framework): remove pnpm install enforcement by @scopsy in #6215
- fix(web): pre-login email denormalization when using pass manager by @ChmaraX in #6217
- feat(web): Web containers Onboarding by @scopsy in #6172
- fix(web): fix container logs by @scopsy in #6221
- feat(js): inbox tabs by @LetItRock in #6149
- feat(js): Com 111 refactor naming settings to preferences by @BiswaViraj in #6183
- feat(web): read orgs createdAt from clerk by @ChmaraX in #6224
- chore(root): update submodule pointer by @ChmaraX in #6226
- revert(web, framework, novui): Revert autocomplete in Studio by @rifont in #6228
- fix(web): report correct date format to LD by @denis-kralj-novu in #6232
- fix(web, api, ee-billing): Fetch current plan from db by @SokratisVidros in #6230
- chore(root): flip clerk switch for PROD EU [MERGE BEFORE PROD DEPLOY] by @denis-kralj-novu in #6219
- fix(web): include redirect by @denis-kralj-novu in #6236
- fix(api, ee-billing, application-generic): Add conditionality to CachedEntity decorator caching by @rifont in #6238
- fix(root): fix ci docker compose build by @scopsy in #6240
- feat(web): wip web containers by @djabarovgeorge in #6225
- feat(framework): Add new Inbox properties to
step.inApp
schema by @rifont in #6075 - chore(root): Production deployment fixes by @SokratisVidros in #6235
- feat(react): Com 40 create the novureact package by @BiswaViraj in #6167
- feat(web): add watch ignore on ts config change by @djabarovgeorge in #6244
- chore(js,react): inbox props for the notification item click and action button clicks by @LetItRock in #6227
- refactor(application-generic): Increase Bridge request timeout to 15 seconds by @rifont in #6245
- feat(js): inbox sdk manage pagination state in cache by @LetItRock in #6206
- fix(api): clerk sync concurrency by @ChmaraX in #6246
- fix(web): web light mode colors for onboarding by @scopsy in #6248
- feat(web): playground fix server reset after ts config changes by @djabarovgeorge in #6250
- refactor(framework): Unify providers interface across all schemas to use
camelCase
by @rifont in #6251 - fix(root): update ee package reference by @denis-kralj-novu in #6255
- style(web): set default scheme as dark by @scopsy in #6256
- chore(framework): Release prerelease version by @rifont in #6253
- feat(js): date formatting and absolute actions by @BiswaViraj in #6257
- feat(js): New notifications notice by @desiprisg in #6223
- fix(web): redirect to org creation if org is missing by @denis-kralj-novu in #6259
- chore(js,react): inbox implemented the filtering logic: unread + read, unread, archived by @LetItRock in #6254
- chore(js,react): inbox props propagation fix by @LetItRock in #6262
- chore(js): inbox localization keys fix by @LetItRock in #6263
- feat(js): Com 123 implement the new notifications cta handler by @BiswaViraj in #6267
- Com 103 fetch and render the unread notifications count for tabs by @desiprisg in #6266
- feat(react): readme by @BiswaViraj in #6272
- fix(worker, application-generic): Remove In-App message lookup for stateless Workflows by @rifont in #6264
- feat(js): inbox load css with the link element in header by @LetItRock in #6269
- fix(js): button padding and preferences response by @BiswaViraj in #6274
- fix(js): test by @BiswaViraj in #6275
- fix(js): show loading when changing filters by @BiswaViraj in #6277
- chore(js,react): move options to be first class citizens on the inbox component by @LetItRock in #6279
- refactor(api,application-generic,ws,worker,webhook): resolve circular dependencies; import refactor by @ChmaraX in #6268
- feat(api): add usage of bridge provider options in send message usecases a… by @davidsoderberg in #6062
- fix(node): Remove bridge URL generation for Next.js preview deployments by @rifont in #6283
- chore(root): update submodule pointer by @ChmaraX in #6292
- fix(api): remove ee-auth self-referencing imports by @ChmaraX in #6294
- fix(api): add type to clerk client mock by @ChmaraX in #6295
- chore(root): Release 2024-08-08 08:05 by @github-actions in #6281
- feat(js): Add a bell emoji as separator for targetable classes by @desiprisg in #6297
- chore(api,web,application-generic): remove legacy EE auth by @ChmaraX in #6276
- fix(api): bring back ee user signup analytics tracking by @ChmaraX in #6282
- chore(root,api): import from application generic library by @ChmaraX in #6284
- ci(root,api): remove separate clerk ee test suite by @ChmaraX in #6286
- fix(api): bring back storage controller for v1 users by @ChmaraX in #6289
- feat(web): make impersonation fab react to theme change by @ChmaraX in #6291
- fix(headless): dont refetch notifications by @BiswaViraj in #6290
- fix(novu): Update package.json by @SokratisVidros in #6270
- fix(root): Pull default locale and branding data only from community repository by @denis-kralj-novu in #6306
- fix(api): disallow preference update for critical workflows by @BiswaViraj in #6311
- feat(api): analytics add env name on sync by @djabarovgeorge in #6260
- refactor(webhook,worker,ws): remove redundant dependencies by @ChmaraX in #6303
- fix(framework): so passthrough body is not casing transformed by @davidsoderberg in #6305
- feat(web): reference to new Inbox by @BiswaViraj in #6299
- feat(web): remove visit playground on unsupported browsers by @djabarovgeorge in #6313
- fix(web): Remove redundant scrolling across web application by @rifont in #6300
- fix(js): call counts if tabs exists by @BiswaViraj in #6287
- style(web, novui): Add custom scrollbar styling and remove workflow preview overflow by @rifont in #6318
- feat(js): Recalculate notification date each minute by @desiprisg in #6320
- fix(js): Add a minimum height to notification list by @desiprisg in #6298
- feat(api): rate limit throttler dry run mode by @ChmaraX in #6317
- chore(root): Release 2024-08-13 08:05 by @github-actions in #6316
- chore(root): Release 2024-08-14 08:05 by @github-actions in #6321
- fix(web): Add missing control schema in onboarding and fix formatting by @rifont in #6324
- chore(root): make clean-build script executable by @ChmaraX in #6310
- chore(api,web): Invitation analytics improvements by @antonjoel82 in #6017
- refactor(web): Remove "Formerly Notifire" text from login page by @rifont in #6325
- refactor(shared): simplify Clerk imports by @ChmaraX in #6312
- fix(worker): Remove custom Slack provider handling in send-message-chat by @rifont in #6328
- fix(api): Explicitly generate metadata for
nest build
script by @rifont in #6329 - fix(web): Styling of SMS bubble by @antonjoel82 in #6315
- fix(novu): Set
maxRetries
toInfinity
for tunnel connection by @rifont in #6334 - fix(framework): add locale to subscriber by @L-U-C-K-Y in #6165
- test(widget): Adjust HMAC init and skip flaky test by @rifont in #6340
- fix(framework): Ensure all steps are logged during discovery and add step connector by @rifont in #6337
- fix(api, application-generic): Don't slugify workflow identifier for bridge workflows by @rifont in #6333
- feat(web): add v2 components for docs by @davidsoderberg in #5975
- fix(api,application-generic): assign user to logger context by @ChmaraX in #6339
- refactor(api): Set new integrations as
active
& first integration asprimary
by @rifont in #6335 - chore(framework, novu): Publish prerelease by @rifont in #6342
- feat(web,api): add vercel integration support with clerk ee by @djabarovgeorge in #6302
- feat(js): Use render props universally with a single argument by @desiprisg in #6341
- fix(web): update vercel completion request and redirect by @scopsy in #6349
- fix(web): get default locale data from correct place by @denis-kralj-novu in #6351
- fix(api, shared, application-generic): Replace branded types with
string
type by @rifont in #6354 - fix(web): Re-render for clerk component breaks error reporting by @scopsy in #6361
- feat(js): Include headers and tabs in separate components by @desiprisg in #6323
- feat(api): expose organization usage; improve performance by @ChmaraX in #6359
- refactor(api): remove unecessary Clerk calls by @ChmaraX in #6352
- feat(api): vercel logs for webhooks by @scopsy in #6366
- fix(api): replace admin user id with org id in tracking by @ChmaraX in #6368
- fix(providers): add sendername field in mailgun config by @jainpawan21 in #6364
- chore(root): Post clerk clean ups by @SokratisVidros in #6356
- chore(web): Simplify Auth layout by @SokratisVidros in #6357
- feat(api): add basic RBAC by @ChmaraX in #6331
- feat(api): add api description and check for v2 by @davidsoderberg in #6377
- fix(framework): Ensure steps after skipped steps are executed by @rifont in #6371
- feat(web): hide tenants in sidebar for v2 feature flag by @davidsoderberg in #6375
- feat(js): Com 159 disable updating preferences for critical worklows by @BiswaViraj in #6347
- fix(framework): Stop requiring default properties to be specified in outputs by @rifont in #6373
- feat(js): Improve perceived loading state by @desiprisg in #6379
- feat(js): Pixel perfect implementation by @desiprisg in #6360
- fix(shared,testing): remove @clerk/types dependency from shared package by @ChmaraX in #6382
- fix(js,react): inbox custom bell unread count not updating by @LetItRock in #6362
- feat(novui, web, framework): Step control autocomplete by @ainouzgali in #6330
- fix(web): Use web url for sync confirmation toast by @rifont in #6393
- feat(web): inbox preview by @BiswaViraj in #6378
- fix(framework, node): Make the
payload
property optional during trigger by @rifont in #6384 - feat(framework,js): expose the data property on the in-app step and notification object by @LetItRock in #6391
- feat(js): Dynamic localization keys and data-localization attribute by @desiprisg in #6383
- feat(js): Revise localization keys DX by @desiprisg in #6380
- feat(framework): Add
preferences
toworkflow
builder by @davidsoderberg in #6326 - feat(framework): cta support with target by @BiswaViraj in #6394
- fix(api,js): inbox api send workflow identifier by @LetItRock in #6402
- fix(worker): multi case method for fcm by @scopsy in #6405
- chore(root): Release
2.0.0
packages by @rifont in #6403 - chore(web): update framework version in playground by @ainouzgali in #6412
- fix(web): update demos endpoint by @ainouzgali in #6413
- fix(worker): Report Push notification specific errors in logs by @SokratisVidros in #6409
- chore(root): Update submodule commit by @rifont in #6415
- feat(js,react): inbox preferences cache by @LetItRock in #6400
- chore(root): Update Prepare Cloud Release GH action by @SokratisVidros in #6418
- fix(web): pixel perfect UI implementation of clerk components by @denis-kralj-novu in #6376
- chore(web): move staging back to novu-staging.co by @denis-kralj-novu in #6421
- fix(web): fix typo in URL by @denis-kralj-novu in #6424
- feat(api): send rate limit headers in response while in dry run by @ChmaraX in #6427
- fix(dal): messages sort order by createdAt by @jainpawan21 in #6319
- build(root): Upgrade eslint to v9.x and add eslint-plugin-deprecated by @rifont in #6408
- fix(js): inbox notifications component gets remounting when render notification prop changes by @LetItRock in #6429
- chore(novu, framework, shared, node): Publish patch releases by @rifont in #6435
- feat(web): Scaffolding for Workflow Preferences by @antonjoel82 in #6417
- fix(api): mid and after request logging by @ChmaraX in #6433
- fix(js): show the new messages pill when there are more than x notifications by @LetItRock in #6395
- feat(web): add workflow channel preferences hooks by @davidsoderberg in #6438
- fix(root): throw unauthorized on missing auth data by @denis-kralj-novu in #6440
- feat(api): add preferences entity and schema by @davidsoderberg in #6396
- fix(js): Fix action blinking on default notification by @desiprisg in #6448
- fix(web): test snippet showing undefined by @ainouzgali in #6453
- chore(js): blank line before return statement by @ChmaraX in #6458
- fix(framework,dal): fix the default redirect behaviour, support absolute and relative paths by @LetItRock in #6443
- fix(js,react): inbox support custom navigate function for the relative redirect urls by @LetItRock in #6444
- fix(web): check if source exists before destructuring by @ainouzgali in #6465
- chore(web): update the bridge onboarding sandbox endpoint by @LetItRock in #6462
- feat(api): make trial last 14 days by @ChmaraX in #6446
- chore(root): update Readme.md by @paulwer in #6437
- feat(worker): add environment name to trigger event by @djabarovgeorge in #6314
- chore(js,react): version release 2.0.0 by @LetItRock in #6469
- feat(web): change billing page CTA to 'Upgrade' by @ChmaraX in #6452
- feat(web): add back button from workflow page to workflow list in dashboard by @ainouzgali in #6471
- chore(framework): Release 2.0.2 by @rifont in #6468
- refactor(web): open docs for specific step types by @scopsy in #6434
- fix(js): fixed the optimistic update value for the complete and revert actions by @LetItRock in #6473
- fix(api): add feature flag mock to webhook e2e test by @ChmaraX in #6476
- chore(shared): Relocate package from
libs
topackages
by @rifont in #6472 - feat(react): Introduce hooks by @desiprisg in #6419
- chore(react): react dom as an optional peer dependency by @LetItRock in #6483
- fix(api): Don't create Workflow Preferences when
preferences
doesn't exist during sync by @rifont in #6486 - feat(framework): Change framework capitalization: in_app -> inApp by @antonjoel82 in #6477
- chore(js): revert the delayed loading by @LetItRock in #6485
- feat(api): store Stripe customer ids locally by @ChmaraX in #6480
- fix(api): Use _subscriberId by @BiswaViraj in #6475
- fix(web): disable eslint in build:test command by @ChmaraX in #6484
- chore(web): capitalization fix GOlang → Golang by @twentyone24 in #6490
- fix(web): Suppress missing key or JWT error. by @SokratisVidros in #6474
- chore(root): update to reflect current state and story by @justnems in #6355
- feat(js): hide properties from instances by @BiswaViraj in #6496
- feat(js): Allow markdown bold syntax for default notification by @desiprisg in #6495
- feat(js): Fix events sharing by replacing singleton with DI by @BiswaViraj in #6454
- feat(web): Add Workflow Preferences for Cloud & Studio by @davidsoderberg in #6447
- chore(root): Framework v2.0.3 by @SokratisVidros in #6501
- chore(application-generic): removed docker version & added healthchecks by @twentyone24 in #6387
- fix(js): Don't render subject as bold by @desiprisg in #6505
- feat(nextjs): inbox playground - react hooks notion like example by @LetItRock in #6461
- fix(js): Fix notification skeleton padding and action wrap by @desiprisg in #6481
- feat(api): add option to remove Novu branding in the inbox by @ChmaraX in #6498
- feat(web): display 'Remove Novu branding' toggle in In-App integration panel by @ChmaraX in #6500
- fix(js): Com 228 fix state persistence issue for global workflow preferences by @BiswaViraj in #6509
- feat(web): remove inbox branding nudge by @ChmaraX in #6508
- feat(js): hide branding by @BiswaViraj in #6513
- chore(api): retire legacy v1 front base url by @ChmaraX in #6512
- feat(js): Popover and collapse animations by @desiprisg in #6506
- feat(api): inbox api filter preferences by workflow tags by @LetItRock in #6515
- chore(root): Upgrade to latest typescript by @SokratisVidros in #6520
- chore(root): Leverage pkg.pr.new for NPM package previews by @SokratisVidros in #6523
- fix(web): inbox branding feature flag by @ChmaraX in #6525
- fix(js): add mising () by @BiswaViraj in #6524
- feat(js): Add colorShadow variable to appearance by @desiprisg in #6526
- build(root): Fix preview package deployments by @SokratisVidros in #6529
- fix(js): Com 234 improve spacing for time and subject text in notifications by @BiswaViraj in #6534
- feat(root): fix no-throw-literal lint error by @ainouzgali in #6535
- feat(js,react): inbox allow filtering preferences by tags by @LetItRock in #6519
- feat(web): Add latest preview URL by @BiswaViraj in #6517
- fix(web): identify from app to pass traits by @scopsy in #6537
- fix(js): icon alignment by @BiswaViraj in #6538
- feat(js): make tooltip smaller by @BiswaViraj in #6539
- feat(web): integrate inbox to the web app; update the ts config and version by @LetItRock in #6511
- chore(api): resurrecting the unit tests by @LetItRock in #6542
- feat(api, worker, application-generic, dal): Resolve preferences for stateless workflow executions by @rifont in #6527
- feat(shared, web, application-generic): Create util for building preferences by @antonjoel82 in #6503
- fix(js): preference row by @BiswaViraj in #6545
- feat(web): Hub spot identify by @scopsy in #6547
- chore(shared, framework): Release version 2.1.0 to support Workflow Preferences by @rifont in #6554
- feat(js,react): Expose dark theme by @desiprisg in #6530
- feat(dashboard): scaffolded the dashboard app by @LetItRock in #6553
- fix(js): css where by @BiswaViraj in #6550
- fix(js): add elements from basetheme by @BiswaViraj in #6558
- feat(js): custom scrollbars by @BiswaViraj in #6560
- feat(api,web): add org id to hubspot report by @scopsy in #6555
- feat(api): create controls module by @djabarovgeorge in #6482
- feat(js,react): Export InboxContent component by @desiprisg in #6531
- fix(application-generic): Use V2 Preferences
critical
flag only if it exists by @rifont in #6563 - fix(client): handle empty or no content responses by @BiswaViraj in #6561
- fix(js): not allowed cursor when disabled by @BiswaViraj in #6565
- fix(react): remove InboxChild and DefaultInbox exports by @BiswaViraj in #6566
- feat(dashboard): Add tailwind, shadcn-ui config and react router by @desiprisg in #6559
- feat(dashboard): vite multi page app poc by @LetItRock in #6562
- refactor(api, application-generic, web, shared, dal): Remove
readOnly
from Preferenceschannels
by @rifont in #6575 - chore(root): Clean up self hosted env vars by @SokratisVidros in #6570
- fix(worker): Build stateless preferences for bridge-sourced definition by @rifont in #6580
- feat(dashboard): Add clerk and segment by @desiprisg in #6571
- chore(root): Upgrade to latest NX by @SokratisVidros in #6585
- chore(root): Fix preview packages by @SokratisVidros in #6586
- feat(dashboard): Add inbox by @desiprisg in #6584
- chore(root): Release 2024-09-27 08:06 by @github-actions in #6582
- fix(worker, application-generic, shared): Don't use Subscriber Prefs for Workflows with readonly Prefs by @rifont in #6581
- chore(root): Bump PNPM by @SokratisVidros in #6587
- fix(root): Build only public packages during preview deployments by @SokratisVidros in #6590
- fix(web): Use initial Workflow Preferences state to determine override state by @rifont in #6591
- feat(js): html comment powered by novu by @BiswaViraj in #6588
- chore(framework, shared): Bump package versions to 2.1.1 by @rifont in #6592
- feat(web): add usage widget; simplify subscription provider by @ChmaraX in #6583
- feat(dashboard): Colors and button setup by @desiprisg in #6594
- feat(api): wip create post v2 workflow end point by @djabarovgeorge in #6460
- feat(web): use Stripe checkout instead of web elements by @ChmaraX in #6544
- fix(js): Com 246 the notification mark as actions appears to be under the text content by @BiswaViraj in #6593
- chore(dashboard): the pipelines and testing by @LetItRock in #6576
- feat(dashboard): clerk auth, public and protected routes by @LetItRock in #6595
- feat(dashboard): Workflow list primitives by @desiprisg in #6599
- fix(web): Inject latest Clerk JWT via Axios interceptor by @SokratisVidros in #6522
- fix(dashboard): Better align existing primitives by @desiprisg in #6605
- feat(api): Move workflows to shared by @tatarco in #6602
- fix(web): subscription with no events included by @ChmaraX in #6610
- feat(web): billing page revamp by @ChmaraX in #6607
- fix(dashboard): Align css variables with design system by @desiprisg in #6609
- chore(api): dashboard v2 cors by @LetItRock in #6613
- feat(api, js, react): Com 244 hide critical workflow preferences from inbox by @BiswaViraj in #6574
- feat(js): Com 229 update the in app preview component in the web app to by @BiswaViraj in #6600
- feat(dashboard): side navigation by @LetItRock in #6608
- fix(api,web): Align segment traits payload by @SokratisVidros in #6628
- fix(api): Update .source and quota-throttler tests by @SokratisVidros in #6627
- feat(js, react, shared): user agents by @BiswaViraj in #6626
- chore(root): Prevent multi-level imports for
@novu/*
packages by @rifont in #6596 - chore(dashboard): free trial card by @LetItRock in #6612
- feat(root): This introduces telemetry in the OS Build by @merrcury in #6625
- feat(js): update icons and add backdrop-filter by @BiswaViraj in #6629
New Contributors
- @RahulDutta007 made their first contribution in #5258
- @justnems made their first contribution in #5284
- @lovishduggal made their first contribution in #5279
- @efaraz27 made their first contribution in #5312
- @FlacorLopes made their first contribution in #5372
- @vitoorgomes made their first contribution in #5232
- @aj-ya made their first contribution in #5495
- @filiprafaj made their first contribution in #5497
- @racky7 made their first contribution in #5496
- @denis-kralj-novu made their first contribution in #5493
- @GabrielFavot made their first contribution in #5629
- @pedrohavay made their first contribution in #5635
- @awbx made their first contribution in #5650
- @ameensom made their first contribution in #5702
- @paulwer made their first contribution in #6437
Full Changelog: v0.24.1...v2.0.0