Recent Releases of novu

novu - @novu/nextjs@v3.9.3

v3.9.3 (2025-09-03)

This was a version bump only for @novu/nextjs to align it with other projects, there were no code changes.

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/react-native@v3.9.3

v3.9.3 (2025-09-03)

This was a version bump only for @novu/react-native to align it with other projects, there were no code changes.

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/react@v3.9.3

v3.9.3 (2025-09-03)

This was a version bump only for @novu/react to align it with other projects, there were no code changes.

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/js@v3.9.3

v3.9.3 (2025-09-03)

🩹 Fixes

  • js,react: Fix ui shift for dropdown popover position fixes NV-6493 (#9057)

❤️ Thank You

  • Dima Grossman @scopsy

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/react-native@v3.9.2

v3.9.2 (2025-09-03)

This was a version bump only for @novu/react-native to align it with other projects, there were no code changes.

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/nextjs@v3.9.2

v3.9.2 (2025-09-03)

🚀 Features

  • js,react,api-service: inbox allow filtering preferences by workflow criticality fixes NV-6577 (#9011)

❤️ Thank You

  • Paweł Tymczuk @LetItRock

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/react@v3.9.2

v3.9.2 (2025-09-03)

🚀 Features

  • js,react,api-service: inbox allow filtering preferences by workflow criticality fixes NV-6577 (#9011)

🩹 Fixes

  • js,react: re-export types for the react-native package; fix partysocket event target polyfill fixes NV-6448 (#9036)

❤️ Thank You

  • Paweł Tymczuk @LetItRock

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/js@v3.9.2

v3.9.2 (2025-09-03)

🚀 Features

  • js,react,api-service: inbox allow filtering preferences by workflow criticality fixes NV-6577 (#9011)

🩹 Fixes

  • js: correct archiveAllRead endpoint URL to match server implementation fixes NV-6612 (#9052)
  • js,react: re-export types for the react-native package; fix partysocket event target polyfill fixes NV-6448 (#9036)
  • react-native: expo unable to resolve novu internal module fixes NV-6485 (#8965)

❤️ Thank You

  • Dima Grossman
  • Paweł Tymczuk @LetItRock

- TypeScript
Published by github-actions[bot] 4 months ago

novu - @novu/react-native@v3.9.1

v3.9.1 (2025-08-27)

This was a version bump only for @novu/react-native to align it with other projects, there were no code changes.

- TypeScript
Published by merrcury 5 months ago

novu - @novu/nextjs@v3.9.1

v3.9.1 (2025-08-27)

🚀 Features

  • js,react,nextjs: inbox appearance keys as a callback with the context prop fixes NV-6447 (#8983)
  • js,react,api-service,ws: support severity in inbox components and hooks fixes NV-6470 (#8913)

❤️ Thank You

  • Paweł Tymczuk @LetItRock

- TypeScript
Published by merrcury 5 months ago

novu - @novu/react@v3.9.1

v3.9.1 (2025-08-27)

🚀 Features

  • js,react,nextjs: inbox appearance keys as a callback with the context prop fixes NV-6447 (#8983)
  • js,react: inbox render props for avatar, default and custom actions fixes NV-6535 (#8977)
  • js,react,api-service,ws: support severity in inbox components and hooks fixes NV-6470 (#8913)

❤️ Thank You

  • Paweł Tymczuk @LetItRock

- TypeScript
Published by merrcury 5 months ago

novu - @novu/js@v3.9.1

v3.9.1 (2025-08-27)

🚀 Features

  • js,react,nextjs: inbox appearance keys as a callback with the context prop fixes NV-6447 (#8983)
  • js,react: inbox render props for avatar, default and custom actions fixes NV-6535 (#8977)
  • dashboard: edited the product onboarding fixes MRK-1000 (#8945)
  • js: auto-load new notifications on first inbox open fixes NV-5976 (#8935)
  • js,react,api-service,ws: support severity in inbox components and hooks fixes NV-6470 (#8913)
  • js: severity support in js sdk fixes NV-6469 (#8884)

🩹 Fixes

  • js: unread dot indicator layout shift fixes NV-6461 (#8943)
  • js: new notification count in banner with multiple tabs fixes NV-6514 (#8934)

❤️ Thank You

  • Adam Chmara @ChmaraX
  • Emil Pearce @iampearceman
  • Paweł Tymczuk @LetItRock

- TypeScript
Published by merrcury 5 months ago

novu - @novu/react-native@v3.8.1

v3.8.1 (2025-08-13)

🩹 Fixes

  • root: nx release publish issue for syntax error fixes NV-6506 (#8922)

❤️ Thank You

  • Himanshu Garg @merrcury

- TypeScript
Published by github-actions[bot] 5 months ago

novu - @novu/nextjs@v3.8.1

v3.8.1 (2025-08-13)

🩹 Fixes

  • root: nx release publish issue for syntax error fixes NV-6506 (#8922)

❤️ Thank You

  • Himanshu Garg @merrcury

- TypeScript
Published by github-actions[bot] 5 months ago

novu - @novu/js@v3.8.1

v3.8.1 (2025-08-13)

🚀 Features

  • api,js: add tx id to inbox notification fixes NV-6457 (#8907)
  • js,react: useNotifications hook realtime updates fixes NV-5502 (#8892)

🩹 Fixes

  • root: nx release publish issue for syntax error fixes NV-6506 (#8922)

❤️ Thank You

  • Adam Chmara @ChmaraX
  • Himanshu Garg @merrcury

- TypeScript
Published by github-actions[bot] 5 months ago

novu - @novu/react@v3.8.1

v3.8.1 (2025-08-13)

🚀 Features

  • js,react: useNotifications hook realtime updates fixes NV-5502 (#8892)

🩹 Fixes

  • root: nx release publish issue for syntax error fixes NV-6506 (#8922)
  • react: stale filters in closures fixes NV-6479 (#8893)

❤️ Thank You

  • Adam Chmara @ChmaraX
  • Himanshu Garg @merrcury

- TypeScript
Published by github-actions[bot] 5 months ago

novu - @novu/react-native@v3.7.0

v3.7.0 (2025-07-22)

🩹 Fixes

  • root: bring back eslint and web app build (#8505)
  • version bump react packages (62ff7ee154)

❤️ Thank You

  • Dima Grossman @scopsy
  • Paweł Tymczuk @LetItRock

- TypeScript
Published by github-actions[bot] 6 months ago

novu - @novu/react@v3.7.0

v3.7.0 (2025-07-22)

🚀 Features

  • react,js,api-service: Add seen status and behaviour to inbox component fixes NV-6179 (#8704)
  • worker,js,react: subscriber timezone aware delivery fixes NV-6239 (#8674)
  • react,js,nextjs,react-native: create new inbox session on subscriber change (#8417)
  • root: create keyless environment (#8276)
  • api-service: add data attribute filtering for inbox notifications (#8338)

🩹 Fixes

  • root: bring back eslint and web app build (#8505)
  • version bump react packages (62ff7ee154)
  • novu react rc 4 release (b737df7335)

❤️ Thank You

  • Dima Grossman @scopsy
  • George Djabarov @djabarovgeorge
  • Paweł Tymczuk @LetItRock

- TypeScript
Published by github-actions[bot] 6 months ago

novu - @novu/nextjs@v3.7.0

v3.7.0 (2025-07-22)

🚀 Features

  • worker,js,react: subscriber timezone aware delivery fixes NV-6239 (#8674)
  • root: create keyless environment (#8276)

🩹 Fixes

  • root: bring back eslint and web app build (#8505)
  • version bump react packages (62ff7ee154)
  • novu react rc 4 release (b737df7335)

❤️ Thank You

  • Dima Grossman @scopsy
  • George Djabarov @djabarovgeorge
  • Paweł Tymczuk @LetItRock

- TypeScript
Published by github-actions[bot] 6 months ago

novu - @novu/js@v3.7.0

v3.7.0 (2025-07-22)

🚀 Features

  • react,js,api-service: Add seen status and behaviour to inbox component fixes NV-6179 (#8704)
  • worker,js,react: subscriber timezone aware delivery fixes NV-6239 (#8674)
  • worker,js: Durable workers socket management (#8578)
  • react,js,nextjs,react-native: create new inbox session on subscriber change (#8417)
  • inbox: backwards compatible inbox keyless (b6b42a9f43)
  • root: create keyless environment (#8276)
  • api-service: add data attribute filtering for inbox notifications (#8338)

🩹 Fixes

  • root: bring back eslint and web app build (#8505)
  • js: increase bottom padding for inbox preferences to prevent footer gradient clickability issues NV-6005 (#8428)
  • version bump react packages (62ff7ee154)
  • inbox: change redirect urls for keyless (d663dfa5bc)
  • novu react rc 4 release (b737df7335)

❤️ Thank You

  • Dima Grossman @scopsy
  • George Djabarov @djabarovgeorge
  • Paweł Tymczuk @LetItRock

- TypeScript
Published by github-actions[bot] 6 months ago

novu - v2.3.0

v2.3.0 (2025-06-23)

API

🚀 Features

  • worker,api-service,dashboard: chat custom webhook provider (#8561)
  • dashboard: Add relative step operators in step conditions fixes NV-6002 (#8541)
  • dashboard: New test workflow drawer fixes NV-6091 (#8521)
  • dashboard,api-service: html editor format code (#8525)
  • api-service: Introduce workflows API fixes NV-5946 (#8275)
  • dashboard: implement V2 template editor with enhanced preview system (#8445)
  • api-service: full liquid parser and variables validation (#8478)
  • api: expose environments CRUD endpoints to external API (#8469)
  • api-service,dashboard: handle editor type change (#8457)
  • api-service,dashboard,application-generic: custom html editor (#8456)
  • api: improve preview context with better error handling and V2 template editor support (#8472)
  • react,js,nextjs,react-native: create new inbox session on subscriber change (#8417)
  • api: add mixpanel tracking for remove branding setting (#8451)
  • api-service: create keyless env creation ff switch (#8448)
  • dashboard: Novu branding fixes & improvements (#8421)
  • dashboard: payload schema management UI (#8315)
  • dashboard,api: email Novu branding (#8413)
  • api,dashboard,web: add 'remove branding' toggle to org settings (#8405)
  • dashboard: add tags, status, and steps filters to workflows page (#8396)
  • add build scripts for pnpm (4c0093dc67)
  • api-service: adjust locale testing groups to v2 (#8388)
  • root: create keyless environment (#8276)
  • api-service: allow email html body control values (#8350)
  • root: upgrade nx to v21.0.4 and update nx.json configuration (#8361)
  • api-service: add data attribute filtering for inbox notifications (#8338)
  • root: feat centralize source of truth of template parser (#8324)
  • api,dashboard: simplify permissions (#8345)

🩹 Fixes

  • dashboard: update LEGACYDASHBOARDURL handling and add documentation in .env.example (#8569)
  • api,application-generic: remove workflow and activity feed limits for self-hosted instances (#8564)
  • dashboard: update chat and push provider docs link (#8559)
  • api, worker, webhook, ws, dashboard: switch PM2 mode to single node for open source builds (#8551)
  • api: add missing properties in feed for SDK (#8454)
  • api-service: Make all fields nullable in subscriber response fixes NV-6136 (#8538)
  • api-service: update environment and workflow api summary and description (#8536)
  • root: eslint errors when compiling (#8529)
  • api-service: payload schema defaults apply (#8527)
  • api-service: switching to html editor when preview fails (#8517)
  • shared: allow dots in subscriber IDs for consistent validation (#8514)
  • api: prevent duplicate Novu branding when switching from block to HTML editor (#8497)
  • root: bring back eslint and web app build (#8505)
  • root: upgrade nx to optimum version and this publishes to npm (#8490)
  • root: resurrecting eslint (#8483)
  • api: improve preview error handling and data merging (#8475)
  • novui: broken link on CONTRIBUTION.md (#8466)
  • api: subscription idempotency (#8464)
  • api: add subscription when creating customer (atomicity) (#8458)
  • api: credentials perm check (#8432)
  • root: update nx packages and override path-to-regexp to fix CVE-2024-45296 (#8438)
  • root: update systeminformation to fix vulnerability (#8436)
  • root: upgrade @nestjs/platform-express to resolve multer DoS vulnerability (#8434)
  • root: update tar-fs to resolve security vulnerabilities (#8431)
  • api: branding - multiple body tags (#8423)
  • api-service: optional message tempate id Fixes NV-5983 (#8426)
  • dashboard: Schema review fixes (#8425)
  • shared: remove uneeded AWS s3 env validators (#8039)
  • api-service: modify topic subscriptions api description (#8415)
  • api-service: quota calc (#8395)
  • api: exception filter runtime error (#8408)
  • api-service: data dto for subscriber entity NV-5998 (#8407)
  • react-native: update widgetjwtexpiration_time default value to fix session initialized (#8401)
  • pnpm approved builds (80df2481f6)
  • remove swc core (bdfe1df68e)
  • pnpm 10 repo (65109279ef)
  • api-service: modify client ip retrieval and launch darkly fallback (#8380)
  • api: Update mocha configuration to use SWC instead of ts-node (#8363)
  • api-service: don't require keyless users (1c17b02fa1)
  • bad enum typing (39fd888c14)
  • api-service: modify api summary and add description (#8326)

❤️ Thank You

  • Adam Chmara @ChmaraX
  • Dima Grossman @scopsy
  • George Djabarov @djabarovgeorge
  • Graphmaxer
  • Himanshu Garg @merrcury
  • Natnael Yilma @TaduJR
  • Pawan Jain
  • Paweł Tymczuk @LetItRock
  • Trần Thăng Long @longtranthang

Dashboard

🚀 Features

  • worker,api-service,dashboard: chat custom webhook provider (#8561)
  • dashboard: removed channel selection screen from the onboarding (#8540)
  • dashboard: Add button for API key regeneration fixes NV-6142 (#8548)
  • dashboard: Add relative step operators in step conditions fixes NV-6002 (#8541)
  • dashboard: layouts page (#8547)
  • dashboard: add schema aware step conditions operators fixes NV-6088 (#8482)
  • dashboard: email editor translation variables (#8524)
  • dashboard: Workflows Page Activity Feed fixes NV-6090 (#8522)
  • dashboard: New test workflow drawer fixes NV-6091 (#8521)
  • dashboard,api-service: html editor format code (#8525)
  • api-service: Introduce workflows API fixes NV-5946 (#8275)
  • dashboard: implement V2 template editor with enhanced preview system (#8445)
  • dashboard: local and scoped variables autocomplete (#8510)
  • dashboard: variable pill understands local variables (#8499)
  • dashboard: fixed eu region by defult issue (#8489)
  • api-service: full liquid parser and variables validation (#8478)
  • dashboard: added cli command to the product onboarding (#8418)
  • api-service,dashboard: handle editor type change (#8457)
  • framework: add showCount parameter to pluralize filter (#8470)
  • api-service,dashboard,application-generic: custom html editor (#8456)
  • dashboard: Workflow Step action bar (#8433)
  • dashboard: Novu branding fixes & improvements (#8421)
  • dashboard: Payload schema generation from recent payload (#8419)
  • dashboard: payload schema management UI (#8315)
  • dashboard,api: email Novu branding (#8413)
  • api,dashboard,web: add 'remove branding' toggle to org settings (#8405)
  • dashboard: add tags, status, and steps filters to workflows page (#8396)
  • add build scripts for pnpm (4c0093dc67)
  • api-service: adjust locale testing groups to v2 (#8388)
  • root: upgrade nx to v21.0.4 and update nx.json configuration (#8361)
  • dashboard: members page upgrade CTA (#8357)
  • root: feat centralize source of truth of template parser (#8324)
  • api,dashboard: simplify permissions (#8345)

### 🩹 Fixes

  • dashboard: add VITELEGACYDASHBOARD_URL to environment script (#8572)
  • dashboard: update LEGACYDASHBOARDURL handling and add documentation in .env.example (#8569)
  • dashboard: single job status reporting (e675417817)
  • dashboard: Trigger click, is not closing sidebar fixes NV-6148 (#8563)
  • dashboard: update chat and push provider docs link (#8559)
  • api, worker, webhook, ws, dashboard: switch PM2 mode to single node for open source builds (#8551)
  • dashboard: update button text to Manage Plan (#8542)
  • root: eslint errors when compiling (#8529)
  • dashboard: schema array of objects json schema export left extra field fixes nv-6123 (#8526)
  • shared: allow dots in subscriber IDs for consistent validation (#8514)
  • dashboard: improve workflow execution status display for skipped/canceled jobs fixes NV-6113 (#8513)
  • dashboard: author role event trigger error for insufficient - Fixes NV-6111 (#8509)
  • dashboard: variable interaction inside button (#8508)
  • dashboard: correct copy in trial card tooltip (#8507)
  • root: bring back eslint and web app build (#8505)
  • dashboard: alias propagation in Maily components (#8502)
  • dashboard: conditionally apply text wrapping styles based on multiline flag (#8494)
  • dashboard: tabs component size (#8487)
  • root: upgrade nx to optimum version and this publishes to npm (#8490)
  • root: resurrecting eslint (#8483)
  • dashboard: prevent rendering when opt-in status is null (#8460)
  • dashboard: use more idiomatic react-querybuilder code (#8059)
  • novui: broken link on CONTRIBUTION.md (#8466)
  • api: error on npm run setup:project (#8468)
  • root: update dset package to resolve prototype pollution vulnerability (#8443)
  • dashboard: update http-proxy-middleware to fix DoS vulnerability (#8440)
  • root: update nx packages and override path-to-regexp to fix CVE-2024-45296 (#8438)
  • root: update systeminformation to fix vulnerability (#8436)
  • root: upgrade @nestjs/platform-express to resolve multer DoS vulnerability (#8434)
  • root: update tar-fs to resolve security vulnerabilities (#8431)
  • dashboard: upgrade pm2 to remove systeminformation vulnerability (#8429)
  • dashboard: control input variable popover position (#8424)
  • dashboard: Schema review fixes (#8425)
  • dashboard: framework based workflows payload schema button (7719467597)
  • dashboard: current addition (bb4d193f90)
  • dashboard: new variable recognized immediately (6d4194872b)
  • dashboard: variable view ff pass (cdeb2333aa)
  • dashboard: schema enable boolean when ff is off (c8791d515e)
  • dashboard: added alias validation for variables (64098c0915)
  • dashboard: show loading skeleton when workflow filters change (#8409)
  • dashboard: replace crypto.randomUUID with browser-compatible fallback (#8404)
  • react-native: update widgetjwtexpiration_time default value to fix session initialized (#8401)
  • dashboard: immediate subscriber table update after deletion from drawer (#8391)
  • pnpm approved builds (80df2481f6)
  • pnpm 10 repo (65109279ef)
  • api-service: modify client ip retrieval and launch darkly fallback (#8380)
  • dashboard: python code snippet corrections (#8378)
  • api: Update mocha configuration to use SWC instead of ts-node (#8363)
  • dashboard: Fixes push preview widget (#8370)
  • dashboard: center topics empty state and remove redundant create button (#8362)

❤️ Thank You

  • Adam Chmara @ChmaraX
  • Dima Grossman @scopsy
  • Emil Pearce @iampearceman
  • George Djabarov @djabarovgeorge
  • Himanshu Garg @merrcury
  • Ivan Suslov @iSuslov
  • Jake Boone
  • Natnael Yilma @TaduJR
  • Pawan Jain
  • Paweł Tymczuk @LetItRock
  • Trần Thăng Long @longtranthang

Webhook

🚀 Features

  • worker,api-service,dashboard: chat custom webhook provider (#8561)
  • api-service: Introduce workflows API fixes NV-5946 (#8275)
  • dashboard: payload schema management UI (#8315)
  • add build scripts for pnpm (4c0093dc67)
  • api-service: adjust locale testing groups to v2 (#8388)
  • root: upgrade nx to v21.0.4 and update nx.json configuration (#8361)

🩹 Fixes

  • dashboard: update LEGACYDASHBOARDURL handling and add documentation in .env.example (#8569)
  • api, worker, webhook, ws, dashboard: switch PM2 mode to single node for open source builds (#8551)
  • root: eslint errors when compiling (#8529)
  • root: bring back eslint and web app build (#8505)
  • root: upgrade nx to optimum version and this publishes to npm (#8490)
  • root: resurrecting eslint (#8483)
  • novui: broken link on CONTRIBUTION.md (#8466)
  • root: update nx packages and override path-to-regexp to fix CVE-2024-45296 (#8438)
  • root: update systeminformation to fix vulnerability (#8436)
  • root: upgrade @nestjs/platform-express to resolve multer DoS vulnerability (#8434)
  • root: update tar-fs to resolve security vulnerabilities (#8431)
  • react-native: update widgetjwtexpiration_time default value to fix session initialized (#8401)
  • pnpm approved builds (80df2481f6)
  • pnpm 10 repo (65109279ef)
  • api: Update mocha configuration to use SWC instead of ts-node (#8363)

❤️ Thank You

  • Dima Grossman @scopsy
  • Himanshu Garg @merrcury
  • Natnael Yilma @TaduJR
  • Paweł Tymczuk @LetItRock
  • Trần Thăng Long @longtranthang

Worker

🚀 Features

  • worker,api-service,dashboard: chat custom webhook provider (#8561)
  • api-service: Introduce workflows API fixes NV-5946 (#8275)
  • dashboard: payload schema management UI (#8315)
  • add build scripts for pnpm (4c0093dc67)
  • api-service: adjust locale testing groups to v2 (#8388)
  • root: create keyless environment (#8276)
  • api-service: allow email html body control values (#8350)
  • root: upgrade nx to v21.0.4 and update nx.json configuration (#8361)

### 🩹 Fixes

  • dashboard: update LEGACYDASHBOARDURL handling and add documentation in .env.example (#8569)
  • api, worker, webhook, ws, dashboard: switch PM2 mode to single node for open source builds (#8551)
  • root: eslint errors when compiling (#8529)
  • root: bring back eslint and web app build (#8505)
  • root: upgrade nx to optimum version and this publishes to npm (#8490)
  • root: resurrecting eslint (#8483)
  • novui: broken link on CONTRIBUTION.md (#8466)
  • root: update nx packages and override path-to-regexp to fix CVE-2024-45296 (#8438)
  • root: update systeminformation to fix vulnerability (#8436)
  • root: upgrade @nestjs/platform-express to resolve multer DoS vulnerability (#8434)
  • root: update tar-fs to resolve security vulnerabilities (#8431)
  • shared: remove uneeded AWS s3 env validators (#8039)
  • react-native: update widgetjwtexpiration_time default value to fix session initialized (#8401)
  • pnpm approved builds (80df2481f6)
  • pnpm 10 repo (65109279ef)
  • api: Update mocha configuration to use SWC instead of ts-node (#8363)

### ❤️ Thank You

  • Dima Grossman @scopsy
  • George Djabarov @djabarovgeorge
  • Graphmaxer
  • Himanshu Garg @merrcury
  • Natnael Yilma @TaduJR
  • Paweł Tymczuk @LetItRock
  • Trần Thăng Long @longtranthang

WS

🚀 Features

  • worker,api-service,dashboard: chat custom webhook provider (#8561)
  • api-service: Introduce workflows API fixes NV-5946 (#8275)
  • dashboard: payload schema management UI (#8315)
  • add build scripts for pnpm (4c0093dc67)
  • api-service: adjust locale testing groups to v2 (#8388)
  • root: upgrade nx to v21.0.4 and update nx.json configuration (#8361)

🩹 Fixes

  • dashboard: update LEGACYDASHBOARDURL handling and add documentation in .env.example (#8569)
  • api, worker, webhook, ws, dashboard: switch PM2 mode to single node for open source builds (#8551)
  • root: eslint errors when compiling (#8529)
  • root: bring back eslint and web app build (#8505)
  • root: upgrade nx to optimum version and this publishes to npm (#8490)
  • root: resurrecting eslint (#8483)
  • novui: broken link on CONTRIBUTION.md (#8466)
  • root: update nx packages and override path-to-regexp to fix CVE-2024-45296 (#8438)
  • root: update systeminformation to fix vulnerability (#8436)
  • root: upgrade @nestjs/platform-express to resolve multer DoS vulnerability (#8434)
  • root: update tar-fs to resolve security vulnerabilities (#8431)
  • react-native: update widgetjwtexpiration_time default value to fix session initialized (#8401)
  • pnpm approved builds (80df2481f6)
  • pnpm 10 repo (65109279ef)
  • api: Update mocha configuration to use SWC instead of ts-node (#8363)

❤️ Thank You

  • Dima Grossman @scopsy
  • Himanshu Garg @merrcury
  • Natnael Yilma @TaduJR
  • Paweł Tymczuk @LetItRock
  • Trần Thăng Long @longtranthang

- TypeScript
Published by merrcury 7 months ago

novu - v2.2.0

🚀 Release v2.2.0 — Upgrade & Dashboard Debut!

We’re thrilled to announce the release of Novu v2.2.0 — a major milestone for the community packed with improvements, performance boosts, and a highly anticipated service debut! 🎉

🆕 Highlights

📊 Dashboard Now Available for Self-Hosted!

For the first time, the Novu Dashboard is now included in the self-hosted setup! You no longer need to use the older web package — everything is bundled and ready with the new dashboard image: happy bash docker pull ghcr.io/novuhq/novu/dashboard:2.2.0

🔁 Migration Guide from v0 to v2

Upgrading from the older v0 web UI? We’ve got you covered. Check out our detailed step-by-step guide here: 👉 v0 to v2 Web UI Migration Guide

🛠️ Improvements

  • API and Worker services are now powered by PM2 Cluster Mode, enabling better CPU and resource utilization, especially in high-throughput environments.
  • Numerous bug fixes and stability improvements across all services.
  • Improved logging and error handling to aid in debugging and production monitoring.

📦 Docker Images

bash docker pull ghcr.io/novuhq/novu/dashboard:2.2.0 docker pull ghcr.io/novuhq/novu/ws:2.2.0 docker pull ghcr.io/novuhq/novu/api:2.2.0 docker pull ghcr.io/novuhq/novu/worker:2.2.0 Thank you to all contributors and community members for your support and feedback. As always, we welcome your thoughts and bug reports on GitHub or our Discord community.

Happy shipping! – The Novu Team

- TypeScript
Published by merrcury 8 months ago

novu - v2.1.1

This release contains performance improvements and bug fixes.

What's Changed

  • fix(api): make access internal to self-managed bridge by @tatarco in https://github.com/novuhq/novu/pull/7145
  • fix(dashboard): In app step form fixes by @desiprisg in https://github.com/novuhq/novu/pull/7144
  • feat(dashboard): Sign up Questionnaire by @scopsy in https://github.com/novuhq/novu/pull/7114
  • feat(application-generic): add SUBSCRIBERWIDGETJWTEXPIRATIONTIME env variable by @jainpawan21 in https://github.com/novuhq/novu/pull/7105
  • chore(api, worker): Instrument workflow v2 controller and bridge use-cases by @rifont in https://github.com/novuhq/novu/pull/7150
  • chore(root): Release 2024-11-28 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7152
  • fix(api): Resolve circular import issue for workflow update validation by @tatarco in https://github.com/novuhq/novu/pull/7151
  • fix(dashboard): Sibling form structure and autosave by @desiprisg in https://github.com/novuhq/novu/pull/7149
  • feat(dashboard): saving modal on navigating outside editor by @ChmaraX in https://github.com/novuhq/novu/pull/7148
  • feat(dashboard): add feature flags provider and hook by @ChmaraX in https://github.com/novuhq/novu/pull/7133
  • perf(api): Lookup subscriber preferences with a single database query by @rifont in https://github.com/novuhq/novu/pull/7119
  • chore(root): Release 2024-11-28 20:40 by @github-actions in https://github.com/novuhq/novu/pull/7158
  • style(dashboard): Fix all modal and toast text overflow by @rifont in https://github.com/novuhq/novu/pull/7155
  • fix(dashboard): Copy current tab snippet code when clicking copy button by @rifont in https://github.com/novuhq/novu/pull/7157
  • chore(root): Release 2024-11-29 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7162
  • chore(api, worker, dal): remove SubscriberPreferenceRepository by @rifont in https://github.com/novuhq/novu/pull/7165
  • fix(api,dashboard): Invalid url error and in-app tabs spacing by @desiprisg in https://github.com/novuhq/novu/pull/7167
  • feat(dashboard): Nv 4800 implement arrays and nested forms in custom step controls by @BiswaViraj in https://github.com/novuhq/novu/pull/7127
  • chore(shared): Eliminate circular dependencies by @SokratisVidros in https://github.com/novuhq/novu/pull/6743
  • fix(dashboard): Truncate workflow name on breadcrumbs by @desiprisg in https://github.com/novuhq/novu/pull/7169
  • chore(root): Remove logs by @SokratisVidros in https://github.com/novuhq/novu/pull/7168
  • fix(node): add includeInactiveChannels option in sdk method by @jainpawan21 in https://github.com/novuhq/novu/pull/7115
  • Revert "fix(node): add includeInactiveChannels option in sdk method" by @SokratisVidros in https://github.com/novuhq/novu/pull/7171
  • Fix/get subscriber preference channel update by @SokratisVidros in https://github.com/novuhq/novu/pull/7172
  • fix(dashboard): polish autosave experience by @LetItRock in https://github.com/novuhq/novu/pull/7164
  • feat(api): fix framework workflow payload preview by @djabarovgeorge in https://github.com/novuhq/novu/pull/7137
  • chore(root): Release 2024-12-02 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7179
  • fix(dashboard): Update predefined avatars by @desiprisg in https://github.com/novuhq/novu/pull/7181
  • fix(api): regression bug by @djabarovgeorge in https://github.com/novuhq/novu/pull/7182
  • fix(dashboard): Show failed toast on triggering inactive workflows by @desiprisg in https://github.com/novuhq/novu/pull/7183
  • fix(dashboard): Fix custom step controls padding by @desiprisg in https://github.com/novuhq/novu/pull/7185
  • fix(api): invalid schema by @djabarovgeorge in https://github.com/novuhq/novu/pull/7184
  • chore(root): Release 2024-12-02 15:06 by @github-actions in https://github.com/novuhq/novu/pull/7188
  • feat(application-generic): core mixpanel events for the workflow and step creation by @LetItRock in https://github.com/novuhq/novu/pull/7189
  • feat(api): wip fix framework workflow issues by @djabarovgeorge in https://github.com/novuhq/novu/pull/7147
  • feat(api): converted bulk trigger to use SDK by @tatarco in https://github.com/novuhq/novu/pull/7166
  • feat(dashboard): add button loading state prop by @scopsy in https://github.com/novuhq/novu/pull/7191
  • chore(root): Release 2024-12-03 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7195
  • fix(dashboard): don't use defaultValues for async content by @ChmaraX in https://github.com/novuhq/novu/pull/7187
  • fix(dashboard): in-app editor preview only call when tab is opened by @LetItRock in https://github.com/novuhq/novu/pull/7186
  • feat(dashboard): signout from v2 should navigatefor new login page by @scopsy in https://github.com/novuhq/novu/pull/7196
  • refactor(dashboard): use the update motion library instead of framer-motion by @scopsy in https://github.com/novuhq/novu/pull/7193
  • feat(api): gracefully preview by @djabarovgeorge in https://github.com/novuhq/novu/pull/7190
  • chore(dashboard): beta label by @LetItRock in https://github.com/novuhq/novu/pull/7197
  • chore(root): Release 2024-12-03 10:32 by @github-actions in https://github.com/novuhq/novu/pull/7198
  • fix(dashboard): step form values were not updated when switching between steps by @LetItRock in https://github.com/novuhq/novu/pull/7201
  • chore(api): Enable preview deployments by @SokratisVidros in https://github.com/novuhq/novu/pull/7200
  • fix(js): Remove @novu/shared dependency by @SokratisVidros in https://github.com/novuhq/novu/pull/6906
  • feat(dashboard): Getting started page by @scopsy in https://github.com/novuhq/novu/pull/7132
  • Revert "fix(js): Remove @novu/shared dependency" by @scopsy in https://github.com/novuhq/novu/pull/7206
  • feat(dashboard): Inbox starter onboarding page by @scopsy in https://github.com/novuhq/novu/pull/7154
  • fix(api): step naming by @djabarovgeorge in https://github.com/novuhq/novu/pull/7140
  • fix(api): next build by @djabarovgeorge in https://github.com/novuhq/novu/pull/7217
  • fix(dashboard): minor onboarding updates by @scopsy in https://github.com/novuhq/novu/pull/7210
  • feat(api): Nv 4939 e2e testing happy path events by @tatarco in https://github.com/novuhq/novu/pull/7208
  • feat(dashboard): Clerk based settings page by @scopsy in https://github.com/novuhq/novu/pull/7202
  • feat(dashboard): api keys page by @scopsy in https://github.com/novuhq/novu/pull/7204
  • feat(dashboard): Implement email step editor & small preview by @desiprisg in https://github.com/novuhq/novu/pull/7129
  • chore(root): Release 2024-12-05 12:46 by @github-actions in https://github.com/novuhq/novu/pull/7221
  • feat(dashboard): Add workflow page action menu by @scopsy in https://github.com/novuhq/novu/pull/7222
  • feat(dashboard): add plain chat buttons by @jainpawan21 in https://github.com/novuhq/novu/pull/7209
  • feat(novu): Add --studio-host option on dev server by @4rthem in https://github.com/novuhq/novu/pull/7211
  • feat(dashboard): NV-4969 export to code preview banner by @scopsy in https://github.com/novuhq/novu/pull/7224
  • fix(dashboard): dropdown freeze by @scopsy in https://github.com/novuhq/novu/pull/7229
  • fix(dashboard): editor fields lagging by @LetItRock in https://github.com/novuhq/novu/pull/7213
  • feat(dashboard): add delay step by @ChmaraX in https://github.com/novuhq/novu/pull/7131
  • fix(dashboard): Ensure URL Input gets the available width by @SokratisVidros in https://github.com/novuhq/novu/pull/7226
  • feat(dashboard): Nv 4525 workflow editor channel preferences by @BiswaViraj in https://github.com/novuhq/novu/pull/7212
  • feat(api): add exception log by @djabarovgeorge in https://github.com/novuhq/novu/pull/7225
  • fix(dashboard): configurable code-first workflows by @ChmaraX in https://github.com/novuhq/novu/pull/7231
  • refactor(api): generate payload in runtime by @djabarovgeorge in https://github.com/novuhq/novu/pull/7192
  • chore(root): Release 2024-12-06 15:53 by @github-actions in https://github.com/novuhq/novu/pull/7233
  • feat(dashboard): Email step preview by @desiprisg in https://github.com/novuhq/novu/pull/7228
  • fix(dashboard): Always trust the URL for the environment selection by @SokratisVidros in https://github.com/novuhq/novu/pull/7223
  • fix(dashboard): fixed the missing in-app editor body message by @LetItRock in https://github.com/novuhq/novu/pull/7215
  • feat(dashboard): delay amount input field polish by @ChmaraX in https://github.com/novuhq/novu/pull/7230
  • style(dashboard): improve keys page design and look and feel by @scopsy in https://github.com/novuhq/novu/pull/7236
  • feat(api): 'Missing' issue missing when the control value has empty string by @tatarco in https://github.com/novuhq/novu/pull/7244
  • fix(api): allow empty email preview by @djabarovgeorge in https://github.com/novuhq/novu/pull/7239
  • chore(root): Release 2024-12-09 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7241
  • feat(dashboard): Billing settings page in dashboard v2 by @scopsy in https://github.com/novuhq/novu/pull/7203
  • fix(dashboard): run queue invocations safely by @ChmaraX in https://github.com/novuhq/novu/pull/7243
  • fix(dashboard): autosave do not block request on validation errors by @LetItRock in https://github.com/novuhq/novu/pull/7246
  • fix(dashboard): Fix double separator on step template sheet by @desiprisg in https://github.com/novuhq/novu/pull/7247
  • feat(dashboard): Delay step custom controls by @desiprisg in https://github.com/novuhq/novu/pull/7242
  • chore(dashboard): Update maily dep by @desiprisg in https://github.com/novuhq/novu/pull/7261
  • feat(api): add full step data to workflow dto; refactor by @ChmaraX in https://github.com/novuhq/novu/pull/7235
  • fix(dashboard): Fix stale data on test workflow page by @desiprisg in https://github.com/novuhq/novu/pull/7245
  • chore(root): specify mongodb version to 8.0.3 by @merrcury in https://github.com/novuhq/novu/pull/7258
  • feat(api): revert preview tests that was deleted by @djabarovgeorge in https://github.com/novuhq/novu/pull/7237
  • feat(api): add sms control schema by @djabarovgeorge in https://github.com/novuhq/novu/pull/7250
  • feat(web): opt-in widget view tracking by @ChmaraX in https://github.com/novuhq/novu/pull/7262
  • feat(application-generic): Integrate New Relic instrumentation for Re… by @merrcury in https://github.com/novuhq/novu/pull/7160
  • chore(root): Release 2024-12-10 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7260
  • fix(dashboard): Make Trigger node clickable by @SokratisVidros in https://github.com/novuhq/novu/pull/7232
  • fix(dashboard): nested payload gen by @djabarovgeorge in https://github.com/novuhq/novu/pull/7240
  • feat(api): add chat control schema by @djabarovgeorge in https://github.com/novuhq/novu/pull/7251
  • feat(dashboard): Preferences enhancements by @BiswaViraj in https://github.com/novuhq/novu/pull/7259
  • chore(root): Release 2024-12-10 14:49 by @github-actions in https://github.com/novuhq/novu/pull/7266
  • refactor(dashboard): use workflow as a single resource by @ChmaraX in https://github.com/novuhq/novu/pull/7264
  • feat(dashboard): identify provider centralization by @scopsy in https://github.com/novuhq/novu/pull/7265
  • fix(api): dashboard workflow override by @djabarovgeorge in https://github.com/novuhq/novu/pull/7253
  • feat(api): add push control schema by @djabarovgeorge in https://github.com/novuhq/novu/pull/7252
  • fix(api): remove duplicate New Relic import in bootstrap file by @merrcury in https://github.com/novuhq/novu/pull/7161
  • feat(api): add external id api to onesignal Based on #6976 by @scopsy in https://github.com/novuhq/novu/pull/7270
  • fix(root): update newrelic and @types/newrelic to latest versions by @merrcury in https://github.com/novuhq/novu/pull/7269
  • feat(api): Nv 4966 e2e testing happy path - messages by @tatarco in https://github.com/novuhq/novu/pull/7248
  • fix(api, worker, ws): reintroduce New Relic import in instrument files by @merrcury in https://github.com/novuhq/novu/pull/7275
  • feat(dashboard): digest fixed duration by @LetItRock in https://github.com/novuhq/novu/pull/7234
  • fix(dashboard): unselect steps on canvas click by @ChmaraX in https://github.com/novuhq/novu/pull/7276
  • fix(dashboard): Apply UI fixes to email and in-app editor by @SokratisVidros in https://github.com/novuhq/novu/pull/7278
  • fix(novu): Respect .env values for API URL and SECRET_KEY by @SokratisVidros in https://github.com/novuhq/novu/pull/7279
  • fix(api): centralize upsert validation + improve nested error handling by @tatarco in https://github.com/novuhq/novu/pull/7173
  • fix(dashboard): Opt-in new orgs created from org switcher in v2 by @scopsy in https://github.com/novuhq/novu/pull/7277
  • test(api): update workflow e2e tests by @ChmaraX in https://github.com/novuhq/novu/pull/7274
  • feat(dashboard): Activity Feed Page - Stacked PR by @scopsy in https://github.com/novuhq/novu/pull/7249
  • fix(dashboard): Email step editor/preview UI fixes by @desiprisg in https://github.com/novuhq/novu/pull/7286
  • chore(api): Update maily dep by @desiprisg in https://github.com/novuhq/novu/pull/7290
  • fix(dashboard): Make maily clickable everywhere by @desiprisg in https://github.com/novuhq/novu/pull/7289
  • chore(providers): remove unused package pepipost-sdk-nodejs by @danikp in https://github.com/novuhq/novu/pull/7257
  • fix(dashboard): Remove redundant maily blocks by @desiprisg in https://github.com/novuhq/novu/pull/7295
  • fix(dal): Set authMechanism as per our environment config by @merrcury in https://github.com/novuhq/novu/pull/7285
  • feat(api): Nv 5033 additional removal cycle found unneeded elements by @tatarco in https://github.com/novuhq/novu/pull/7283
  • chore(root): update service images to version 2.1.0 and use dynamic… by @merrcury in https://github.com/novuhq/novu/pull/7297
  • fix(api): Crate of fixes part 2 by @SokratisVidros in https://github.com/novuhq/novu/pull/7292
  • fix(web): remove isV2Enabled condition for opt in option by @jainpawan21 in https://github.com/novuhq/novu/pull/7298
  • feat(web,dashboard): set member limit for business tier to 50 by @ChmaraX in https://github.com/novuhq/novu/pull/7301
  • chore(root): Release 2024-12-16 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7305
  • feat(web): add org tier info in sentry and ld by @jainpawan21 in https://github.com/novuhq/novu/pull/7308
  • feat(api): add query parser by @djabarovgeorge in https://github.com/novuhq/novu/pull/7267
  • fix(dashboard): wait for save when switching preview tab by @ChmaraX in https://github.com/novuhq/novu/pull/7299
  • feat(dashboard,web): set member limit to unlimited by @ChmaraX in https://github.com/novuhq/novu/pull/7311
  • fix(web): change new dashboard widget ff condition by @jainpawan21 in https://github.com/novuhq/novu/pull/7309
  • fix(dal): adds & removes indicies across repository to make it consistent across environments by @merrcury in https://github.com/novuhq/novu/pull/7296
  • feat(dashboard): Nv 4866 Enable override custom controls and implement custom controls for Delay & Digest by @BiswaViraj in https://github.com/novuhq/novu/pull/7288
  • feat(api): Nv 5045 update the api to have same behavior as preference by @BiswaViraj in https://github.com/novuhq/novu/pull/7302
  • fix(dashboard): implement redirect to legacy studio auth page by @BiswaViraj in https://github.com/novuhq/novu/pull/7313
  • feat(dashboard): Nv 4885 push step editor by @BiswaViraj in https://github.com/novuhq/novu/pull/7306
  • refactor(api): refactor none-email control value preview usecase by @djabarovgeorge in https://github.com/novuhq/novu/pull/7303
  • fix(web): add show bridge menu for all orgs by @jainpawan21 in https://github.com/novuhq/novu/pull/7307
  • feat(dashboard): sms step by @ChmaraX in https://github.com/novuhq/novu/pull/7316
  • feat(dashboard): Nv 4884 push mini preview by @BiswaViraj in https://github.com/novuhq/novu/pull/7318
  • chore(root): Release 2024-12-18 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7319
  • feat(dashboard): update node styles by @BiswaViraj in https://github.com/novuhq/novu/pull/7321
  • feat(dashboard): Nv 5066 dashboard add inline tips primitive component by @BiswaViraj in https://github.com/novuhq/novu/pull/7326
  • fix(dashboard): tags client side validation by @ChmaraX in https://github.com/novuhq/novu/pull/7325
  • feat(dashboard): design system tokens by @scopsy in https://github.com/novuhq/novu/pull/7300
  • fix(api,dashboard): Correct variable generation and parsing by @desiprisg in https://github.com/novuhq/novu/pull/7324
  • fix(dashboard): show more click triggers another trigger by @scopsy in https://github.com/novuhq/novu/pull/7327
  • feat(api): preview usecase by @djabarovgeorge in https://github.com/novuhq/novu/pull/7330
  • chore(root): Release 2024-12-19 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7331
  • feat(dashboard,api): New maily variables function usage & update maily by @desiprisg in https://github.com/novuhq/novu/pull/7329
  • feat(dashboard): scheduled digest by @LetItRock in https://github.com/novuhq/novu/pull/7314
  • feat(dashboard): chat step editor and preview by @LetItRock in https://github.com/novuhq/novu/pull/7332
  • feat(dashboard): digest aggregated by key field editor with autosuggestions by @LetItRock in https://github.com/novuhq/novu/pull/7322
  • feat(dashboard): Add maily variable when closing with }} by @desiprisg in https://github.com/novuhq/novu/pull/7336
  • chore(root): Release 2024-12-20 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7338
  • feat(dashboard): new integrations page view by @scopsy in https://github.com/novuhq/novu/pull/7310
  • feat(dashboard): integrations update and create flow by @scopsy in https://github.com/novuhq/novu/pull/7281
  • feat(dashboard): digest window preserve regular/scheduled tab form changes by @LetItRock in https://github.com/novuhq/novu/pull/7340
  • chore(dashboard): sms, push, chat editors show empty preview on validation error by @LetItRock in https://github.com/novuhq/novu/pull/7341
  • fix(js): add missing on click event for dropdown tabs by @AdrianPasalega in https://github.com/novuhq/novu/pull/7342
  • fix(api): fix onesignal iosbadgeCount and iosbadgeType typos by @L-U-C-K-Y in https://github.com/novuhq/novu/pull/7273
  • fix(framework): Remove @novu/shared dependency temporarily by @SokratisVidros in https://github.com/novuhq/novu/pull/7337
  • fix(api): @novu/api -> @novu/api-service by @tatarco in https://github.com/novuhq/novu/pull/7348
  • refactor(api-service): issues management by @djabarovgeorge in https://github.com/novuhq/novu/pull/7344
  • fix(dashboard): navigate root page post sync to env by @scopsy in https://github.com/novuhq/novu/pull/7350
  • fix(dashboard): Tweak arbitrary variable handling by @SokratisVidros in https://github.com/novuhq/novu/pull/7351
  • fix(dashboard): clicking outside dropdown closes the whole edit sidebar by @scopsy in https://github.com/novuhq/novu/pull/7352
  • chore(dashboard): Add for block and show behind a ff by @desiprisg in https://github.com/novuhq/novu/pull/7312
  • fix(api-service): skip sanitization for non-novu cloud based workflows by @scopsy in https://github.com/novuhq/novu/pull/7354
  • chore(root): Release 2024-12-23 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7349
  • fix(api-service): digest amount saving on workflow by @scopsy in https://github.com/novuhq/novu/pull/7355
  • refactor(dashboard): unify preview accordion component and preserve changes on tab switch by @scopsy in https://github.com/novuhq/novu/pull/7353
  • style(dashboard): remove icons for consistency by @scopsy in https://github.com/novuhq/novu/pull/7356
  • feat(api-service): remove skip ref by @djabarovgeorge in https://github.com/novuhq/novu/pull/7357
  • fix(api-service): Add marks to tiptap zod schema by @desiprisg in https://github.com/novuhq/novu/pull/7339
  • fix(api-service): digest schema - remove the schema defaults as it doesn't work with the framework ajv validation by @LetItRock in https://github.com/novuhq/novu/pull/7334
  • fix(dashboard): fixed view execution logs button triggering the workflow by @LetItRock in https://github.com/novuhq/novu/pull/7335
  • chore(dashboard): scheduled digest descope the yearly option by @LetItRock in https://github.com/novuhq/novu/pull/7343
  • feat: upgrade maily by @scopsy in https://github.com/novuhq/novu/pull/7361
  • fix(api-service,dashboard): Crate of fixes for variable suggestions by @SokratisVidros in https://github.com/novuhq/novu/pull/7360
  • feat(api-service): plain cards fetch user organizations by @jainpawan21 in https://github.com/novuhq/novu/pull/7268
  • chore(root): Release 2024-12-23 21:21 by @github-actions in https://github.com/novuhq/novu/pull/7363
  • fix(api-service): Polish keysToObject by @SokratisVidros in https://github.com/novuhq/novu/pull/7362
  • chore(root): Release 2024-12-24 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7364
  • fix(dashboard): Crate with fixes by @SokratisVidros in https://github.com/novuhq/novu/pull/7367
  • fix(api-service): workflow creation api flow didn't generate payload schema by @scopsy in https://github.com/novuhq/novu/pull/7366
  • refactor(api-service): variable extraction by @djabarovgeorge in https://github.com/novuhq/novu/pull/7369
  • chore(root): Release 2024-12-24 15:22 by @github-actions in https://github.com/novuhq/novu/pull/7372
  • fix(dashboard): build by @djabarovgeorge in https://github.com/novuhq/novu/pull/7373
  • chore(root): Release 2024-12-24 15:32 by @github-actions in https://github.com/novuhq/novu/pull/7374
  • feat(dashboard): changelog news widget by @scopsy in https://github.com/novuhq/novu/pull/7345
  • chore(root): Release 2024-12-25 12:08 by @github-actions in https://github.com/novuhq/novu/pull/7377
  • chore(root): Release 2024-12-25 12:48 by @github-actions in https://github.com/novuhq/novu/pull/7378
  • chore(root): Release 2024-12-25 13:32 by @github-actions in https://github.com/novuhq/novu/pull/7380
  • chore(root): Release 2024-12-25 14:11 by @github-actions in https://github.com/novuhq/novu/pull/7381
  • feat(api-service): refactor issue error messages by @djabarovgeorge in https://github.com/novuhq/novu/pull/7359
  • fix(api-service): empty email preview by @djabarovgeorge in https://github.com/novuhq/novu/pull/7382
  • fix(dashboard): minor fixes by @scopsy in https://github.com/novuhq/novu/pull/7383
  • fix(api-service): stripe event fix by @scopsy in https://github.com/novuhq/novu/pull/7386
  • feat(api-service): polish action steps by @djabarovgeorge in https://github.com/novuhq/novu/pull/7389
  • fix(api-service): in app avatar sanitize by @djabarovgeorge in https://github.com/novuhq/novu/pull/7392
  • fix(api-service): sort by parentid when created at is duplicated by @scopsy in https://github.com/novuhq/novu/pull/7394
  • chore(root): Release 2024-12-27 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7393
  • chore(deps-dev): bump pnpm from 9.11.0 to 9.15.0 by @dependabot in https://github.com/novuhq/novu/pull/7272
  • chore(root): Release 2024-12-27 11:08 by @github-actions in https://github.com/novuhq/novu/pull/7395
  • chore(dashboard,web): Clean up feature flags by @SokratisVidros in https://github.com/novuhq/novu/pull/7365
  • fix(js): Inbox DX fixes by @SokratisVidros in https://github.com/novuhq/novu/pull/7396
  • fix(api-service): Remove team member invitation nudge logic by @SokratisVidros in https://github.com/novuhq/novu/pull/7397
  • chore(root): Release 2024-12-30 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7405
  • feat(dashboard): Make the whole workflow row clickable by @desiprisg in https://github.com/novuhq/novu/pull/7408
  • chore(root): Release 2024-12-31 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7410
  • feat(dashboard): Add indentWithTab prop to Editor by @desiprisg in https://github.com/novuhq/novu/pull/7411
  • fix(api-service): when step is deleted remove all associated variables by @LetItRock in https://github.com/novuhq/novu/pull/7407
  • feat(dashboard): Aligned button component with design system by @scopsy in https://github.com/novuhq/novu/pull/7413
  • chore(dashboard): maily patch update by @LetItRock in https://github.com/novuhq/novu/pull/7419
  • feat(dashboard): show delay value on workflow node by @ChmaraX in https://github.com/novuhq/novu/pull/7415
  • feat(dashboard): align sms and push phones by @ChmaraX in https://github.com/novuhq/novu/pull/7425
  • feat(dashboard): switch tlggle aligned with design system by @scopsy in https://github.com/novuhq/novu/pull/7427
  • feat(dashboard): separator component aligned with design system by @scopsy in https://github.com/novuhq/novu/pull/7426
  • fix(novu): automatically create indexes on startup by @L-U-C-K-Y in https://github.com/novuhq/novu/pull/7431
  • feat(api-service): fix additional properties issue by @djabarovgeorge in https://github.com/novuhq/novu/pull/7434
  • feat(dashboard): add textarea component aligned with figma designs by @scopsy in https://github.com/novuhq/novu/pull/7423
  • chore(root): Release 2025-01-07 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7443
  • fix(api-service): on global preferences update reset workflow preferences per env by @LetItRock in https://github.com/novuhq/novu/pull/7428
  • refactor(api-service): simplify variable validation by @djabarovgeorge in https://github.com/novuhq/novu/pull/7442
  • feat(dashboard): remove beta tags from ui by @scopsy in https://github.com/novuhq/novu/pull/7438
  • fix(client): Save step template form on unmount to handle esc key by @desiprisg in https://github.com/novuhq/novu/pull/7444
  • chore(root): Release 2025-01-07 12:57 by @github-actions in https://github.com/novuhq/novu/pull/7449
  • feat(api-service): add marks liquid parse by @djabarovgeorge in https://github.com/novuhq/novu/pull/7440
  • fix(api-service): translation groups causing long response time in v2 create/update workflow by @LetItRock in https://github.com/novuhq/novu/pull/7450
  • chore(api-service): Instrument get subscriber preferences by @SokratisVidros in https://github.com/novuhq/novu/pull/7451
  • chore(root): Release 2025-01-07 16:48 by @github-actions in https://github.com/novuhq/novu/pull/7452
  • feat(dashboard): copy button and arrow right micro interaction NV-4997 by @scopsy in https://github.com/novuhq/novu/pull/7445
  • feat(root, api-service, worker, ws, webhook): migrate from aws ssm to aws secret manager by @merrcury in https://github.com/novuhq/novu/pull/7409
  • Revert "feat(root, api-service, worker, ws, webhook): migrate from aws ssm to aws secret manager" by @merrcury in https://github.com/novuhq/novu/pull/7466
  • feat(dashboard): add useBeforeUnload hook to prevent accidental tab closure during updates by @BiswaViraj in https://github.com/novuhq/novu/pull/7471
  • fix(application-generic): potential get preferences performance improvement by @LetItRock in https://github.com/novuhq/novu/pull/7467
  • fix(web,api-service): redirect edit action of v1 workflows to old web app when opt-in by @LetItRock in https://github.com/novuhq/novu/pull/7460
  • feat(dashboard): edit step conditions drawer by @LetItRock in https://github.com/novuhq/novu/pull/7417
  • feat(api-service): restore email show support by @djabarovgeorge in https://github.com/novuhq/novu/pull/7453
  • fix(api-service): bug report skipped in-app step will cause fail by @djabarovgeorge in https://github.com/novuhq/novu/pull/7468
  • refactor(dashboard): input field by @scopsy in https://github.com/novuhq/novu/pull/7418
  • chore(root): polish after review by @djabarovgeorge in https://github.com/novuhq/novu/pull/7401
  • fix(dashboard): adjust sidebar to allow overflow and maintain layout by @BiswaViraj in https://github.com/novuhq/novu/pull/7472
  • feat(dashboard): ✨ Polish add resize handle for activity feed panel to improve long errors view by @scopsy in https://github.com/novuhq/novu/pull/7465
  • feat(root, api-service, worker, ws, webhook): migrate from aws ssm to aws secret manager by @merrcury in https://github.com/novuhq/novu/pull/7473
  • chore(root): Release 2025-01-09 15:30 by @github-actions in https://github.com/novuhq/novu/pull/7476
  • fix(dashboard): remove focus ring from amount input select trigger by @BiswaViraj in https://github.com/novuhq/novu/pull/7479
  • fix(dashboard): adjust layout and overflow handling in Trigger page by @BiswaViraj in https://github.com/novuhq/novu/pull/7480
  • fix(dashboard): timezone offset for utc in time widget by @scopsy in https://github.com/novuhq/novu/pull/7463
  • chore(root): Release 2025-01-10 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7481
  • fix(dashboard): update custom step icon to code block by @BiswaViraj in https://github.com/novuhq/novu/pull/7482
  • feat(dashboard): Open step template drawer on Add Step by @desiprisg in https://github.com/novuhq/novu/pull/7406
  • chore(web,dashboard): remove legacy bundle from dashboard by @LetItRock in https://github.com/novuhq/novu/pull/7474
  • fix(api-service): E2E improvements by @SokratisVidros in https://github.com/novuhq/novu/pull/7461
  • feat(api-service): polish attrs process by @djabarovgeorge in https://github.com/novuhq/novu/pull/7477
  • feat(dashboard): badge component by @scopsy in https://github.com/novuhq/novu/pull/7447
  • feat(api-service): SDK test updates by @tatarco in https://github.com/novuhq/novu/pull/7315
  • chore(api-service): Remove forgotten console.log by @SokratisVidros in https://github.com/novuhq/novu/pull/7490
  • fix(dashboard): fix clickable actions button by @scopsy in https://github.com/novuhq/novu/pull/7492
  • fix(api-service): new workflow e2e by @djabarovgeorge in https://github.com/novuhq/novu/pull/7485
  • fix(api-service): test trigger page crash by @djabarovgeorge in https://github.com/novuhq/novu/pull/7495
  • feat(dashboard): Add a disableOutputSanitization option for in app steps by @desiprisg in https://github.com/novuhq/novu/pull/7456
  • feat(dal): new Indicies to reduce CPU load on common queries by @merrcury in https://github.com/novuhq/novu/pull/7497
  • fix(api-service): preview by @djabarovgeorge in https://github.com/novuhq/novu/pull/7498
  • feat(dashboard): variable management for all editor fields by @scopsy in https://github.com/novuhq/novu/pull/7379
  • feat(api-service): update sync use new issue creation by @djabarovgeorge in https://github.com/novuhq/novu/pull/7484
  • chore(api-service): remove redundant variable wrap by @djabarovgeorge in https://github.com/novuhq/novu/pull/7500
  • feat(dashboard): restore email editor 'for' block by @ChmaraX in https://github.com/novuhq/novu/pull/7483
  • fix(api-service): Enhance Feed DTO by @tatarco in https://github.com/novuhq/novu/pull/7501
  • fix(api-service): set check field as false by default by @jainpawan21 in https://github.com/novuhq/novu/pull/7469
  • chore(root): Release 2025-01-15 12:43 by @github-actions in https://github.com/novuhq/novu/pull/7511
  • fix(dashboard): Move bypass sanitization code by @desiprisg in https://github.com/novuhq/novu/pull/7513
  • chore(root): Release 2025-01-15 13:41 by @github-actions in https://github.com/novuhq/novu/pull/7514
  • chore(root): Release 2025-01-15 13:48 by @github-actions in https://github.com/novuhq/novu/pull/7516
  • fix(dashboard): new line for single inputs by @scopsy in https://github.com/novuhq/novu/pull/7518
  • fix(api-service): fix & simplify email liquid parsing by @ChmaraX in https://github.com/novuhq/novu/pull/7519
  • fix(dashboard): restore tailwind animations by @LetItRock in https://github.com/novuhq/novu/pull/7520
  • fix(api-service): api response for notification feed endpoint by @scopsy in https://github.com/novuhq/novu/pull/7521
  • feat(api-service): Create subscriber and workflow event by @scopsy in https://github.com/novuhq/novu/pull/7508
  • chore(root): Release 2025-01-16 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7523
  • fix(dashboard): scroll by @BiswaViraj in https://github.com/novuhq/novu/pull/7529
  • fix(api-service,dal): activity feed item can have deleted workflow or subscriber data by @LetItRock in https://github.com/novuhq/novu/pull/7528
  • fix(dashboard): editor multiline property by @ChmaraX in https://github.com/novuhq/novu/pull/7524
  • fix(api-service): keep only editor vars in preview payload by @ChmaraX in https://github.com/novuhq/novu/pull/7527
  • fix(dashboard): allow only parsable json in preview editor by @ChmaraX in https://github.com/novuhq/novu/pull/7530
  • chore(root): Release 2025-01-16 14:35 by @github-actions in https://github.com/novuhq/novu/pull/7531
  • chore(root): Release 2025-01-16 18:31 by @github-actions in https://github.com/novuhq/novu/pull/7535
  • feat(dashboard): Nv 4985 dashboard error state if get workflows fail we have not by @BiswaViraj in https://github.com/novuhq/novu/pull/7494
  • fix(dashboard): adjust layout and improve scrolling on test trigger page by @BiswaViraj in https://github.com/novuhq/novu/pull/7532
  • fix(api-service): Nv 4862 e2e tests retry by @tatarco in https://github.com/novuhq/novu/pull/7504
  • fix(web): activity feed item empty modal by @jainpawan21 in https://github.com/novuhq/novu/pull/7538
  • feat(dashboard): Template store modal by @scopsy in https://github.com/novuhq/novu/pull/7436
  • feat(dashboard): add sentry custom tags by @jainpawan21 in https://github.com/novuhq/novu/pull/7539
  • fix(dashboard): trigger autosave after applying the filters by @BiswaViraj in https://github.com/novuhq/novu/pull/7542
  • feat(dashboard): step conditions editor ui by @LetItRock in https://github.com/novuhq/novu/pull/7502
  • feat(dashboard): step conditions form and save logic by @LetItRock in https://github.com/novuhq/novu/pull/7526
  • chore(root): Release 2025-01-20 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7541
  • feat(api): Nv 5101 email sent from new dashbord has message clipped block in by @BiswaViraj in https://github.com/novuhq/novu/pull/7545
  • chore(root): Release 2025-01-21 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7549
  • refactor(api-service): simplify email render flow by @ChmaraX in https://github.com/novuhq/novu/pull/7544
  • feat(dashboard): Multi environments management by @scopsy in https://github.com/novuhq/novu/pull/7522
  • feat(api-service): fetch user sessions for plain cards by @jainpawan21 in https://github.com/novuhq/novu/pull/7404
  • feat(api-service): build variable showIdKey as true by @djabarovgeorge in https://github.com/novuhq/novu/pull/7487
  • chore(root): Release 2025-01-22 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7555
  • chore(root): bump version to 2.1.1 for multiple packages by @merrcury in https://github.com/novuhq/novu/pull/7557
  • feat(dashboard): workflow template store cta on list page by @scopsy in https://github.com/novuhq/novu/pull/7540
  • feat(api-service,dashboard): step conditions validation logic and conditions editor perf improvements by @LetItRock in https://github.com/novuhq/novu/pull/7543
  • fix(api-service): add missing environment variable by @AminulBD in https://github.com/novuhq/novu/pull/7553
  • refactor(worker, application-generic): remove cloudwatch metrics serv… by @merrcury in https://github.com/novuhq/novu/pull/7558
  • fix(dashboard): fix issues on environment management NV-5232 by @scopsy in https://github.com/novuhq/novu/pull/7559
  • fix(dashboard): custom controls UI design by @BiswaViraj in https://github.com/novuhq/novu/pull/7560
  • fix(worker): delay duration by @djabarovgeorge in https://github.com/novuhq/novu/pull/7496
  • refactor(web): remove sample workflow sync by @scopsy in https://github.com/novuhq/novu/pull/7563
  • feat(dashboard): remove digest key by @djabarovgeorge in https://github.com/novuhq/novu/pull/7564
  • feat(dashboard): Workflows search and sort functionality - NV-4462 & NV-4461 by @scopsy in https://github.com/novuhq/novu/pull/7550
  • chore(api-service,dashboard): step condition rules compile the liquid template by @LetItRock in https://github.com/novuhq/novu/pull/7547
  • blacksmith.sh: Migrate workflows to Blacksmith by @blacksmith-sh in https://github.com/novuhq/novu/pull/7568
  • chore(root): Release 2025-01-23 12:04 by @github-actions in https://github.com/novuhq/novu/pull/7567
  • chore(root): Release 2025-01-23 12:55 by @github-actions in https://github.com/novuhq/novu/pull/7570
  • fix(worker): digest by key by @djabarovgeorge in https://github.com/novuhq/novu/pull/7569
  • feat(dashboard): improve telemetry for env by @scopsy in https://github.com/novuhq/novu/pull/7571
  • chore(root): Release 2025-01-23 15:11 by @github-actions in https://github.com/novuhq/novu/pull/7573
  • feat(api-service): step skip conditions handle boolean and dates by @LetItRock in https://github.com/novuhq/novu/pull/7565
  • fix(dashboard): Crate with UI fixes by @SokratisVidros in https://github.com/novuhq/novu/pull/7536
  • chore(root): Remove unused queue by @SokratisVidros in https://github.com/novuhq/novu/pull/7576
  • feat(api-service): Add NOVUSECRETKEY to example environment configu… by @merrcury in https://github.com/novuhq/novu/pull/7577
  • fix(api-service): email 'if' condition truthy values by @ChmaraX in https://github.com/novuhq/novu/pull/7551
  • fix(dashboard): Another create with UI fixes by @SokratisVidros in https://github.com/novuhq/novu/pull/7583
  • chore(root): Release 2025-01-24 12:52 by @github-actions in https://github.com/novuhq/novu/pull/7584
  • fix(api-service): return null if user does not exist by @jainpawan21 in https://github.com/novuhq/novu/pull/7586
  • feat(dashboard): environments empty state MRK-320 by @scopsy in https://github.com/novuhq/novu/pull/7580
  • feat(dashboard): Liquidjs Filters tooltip NV-5235 by @scopsy in https://github.com/novuhq/novu/pull/7561
  • fix(dashboard): free trial card visiblity for paid accounts by @scopsy in https://github.com/novuhq/novu/pull/7588
  • chore(root): Release 2025-01-27 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7589
  • feat(dashboard): email 'for' block visual cues by @ChmaraX in https://github.com/novuhq/novu/pull/7581
  • fix(api-service,dashboard): step conditions begins with operator plus ui fixes for cut inputs by @LetItRock in https://github.com/novuhq/novu/pull/7582
  • feat(api-service,dashboard): New subscribers page and api by @desiprisg in https://github.com/novuhq/novu/pull/7525
  • feat(api-service): get subscriber by @BiswaViraj in https://github.com/novuhq/novu/pull/7591
  • fix(worker): sendErrorStatus to not include unnecessary data by @merrcury in https://github.com/novuhq/novu/pull/7578
  • fix(dashboard): email for loop without variables by @ChmaraX in https://github.com/novuhq/novu/pull/7585
  • fix(dashboard): allow removing all step conditions by @LetItRock in https://github.com/novuhq/novu/pull/7595
  • fix(application-generic): Check for environment at the very top by @SokratisVidros in https://github.com/novuhq/novu/pull/7597
  • feat(api-service): Add patch subscriber functionality with tests by @BiswaViraj in https://github.com/novuhq/novu/pull/7596
  • fix(dashboard): skip conditions ui schema check by @ChmaraX in https://github.com/novuhq/novu/pull/7592
  • feat(dashboard): Workflow onboarding checklist. by @scopsy in https://github.com/novuhq/novu/pull/7593
  • chore(root): Release 2025-01-29 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7608
  • chore(root): Release 2025-01-28 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7598
  • fix(web): remove digest check and add failed state by @djabarovgeorge in https://github.com/novuhq/novu/pull/7605
  • chore(root): Release 2025-01-29 10:20 by @github-actions in https://github.com/novuhq/novu/pull/7610
  • chore(api-service,dashboard): Replace create_at sorting with _id for subscribers by @desiprisg in https://github.com/novuhq/novu/pull/7603
  • feat(api-service,dashboard): Delete subscriber functionality by @desiprisg in https://github.com/novuhq/novu/pull/7607
  • chore(api-service,dashboard): step conditions - execute if conditions match by @LetItRock in https://github.com/novuhq/novu/pull/7594
  • fix(dashboard): step conditions allow duplicating max 10 rules or groups by @LetItRock in https://github.com/novuhq/novu/pull/7602
  • feat(api-service,dashboard): add step events.length variable by @LetItRock in https://github.com/novuhq/novu/pull/7601
  • feat(api-service): add internal sdk by @tatarco in https://github.com/novuhq/novu/pull/7599
  • fix(api-service): Exclude customers from duration restrictions by @SokratisVidros in https://github.com/novuhq/novu/pull/7615
  • chore(root): Release 2025-01-30 08:51 by @github-actions in https://github.com/novuhq/novu/pull/7618
  • fix(api-service): Nv 5293 sdk cleanup pre release by @tatarco in https://github.com/novuhq/novu/pull/7616
  • fix(dashboard): Subscriber page UI fixes by @desiprisg in https://github.com/novuhq/novu/pull/7619
  • feat(api-service): Add clerk analytical hooks for memberships by @scopsy in https://github.com/novuhq/novu/pull/7614
  • chore(root): Release 2025-01-30 12:26 by @github-actions in https://github.com/novuhq/novu/pull/7621
  • feat(dashboard): Reshape draggable filters behaviour by @desiprisg in https://github.com/novuhq/novu/pull/7622
  • fix(worker): add weeks and months support by @djabarovgeorge in https://github.com/novuhq/novu/pull/7626
  • chore(root): Release 2025-01-30 16:59 by @github-actions in https://github.com/novuhq/novu/pull/7627
  • chore(root): Release 2025-01-30 15:18 by @github-actions in https://github.com/novuhq/novu/pull/7623
  • chore(root): Release 2025-01-31 08:05 by @github-actions in https://github.com/novuhq/novu/pull/7631
  • fix(api-service): security wrapping on public sdk by @tatarco in https://github.com/novuhq/novu/pull/7630
  • feat(api-service): get subscriber preferences v2 endpoint by @ChmaraX in https://github.com/novuhq/novu/pull/7613
  • feat(api-service): patch subscriber preferences v2 endpoint by @ChmaraX in https://github.com/novuhq/novu/pull/7629
  • fix(dashboard): Add Remove Novu Branding to Inbox by @SokratisVidros in https://github.com/novuhq/novu/pull/7636
  • feat(dashboard): more precise calculation of step conditions by @LetItRock in https://github.com/novuhq/novu/pull/7628
  • chore(root): Release 2025-02-03 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7644
  • chore(root): Release 2025-02-03 09:25 by @github-actions in https://github.com/novuhq/novu/pull/7645
  • fix(dashboard): Fix inbox playground subject input crop by @desiprisg in https://github.com/novuhq/novu/pull/7648
  • feat(dashboard): add dropdown support by @scopsy in https://github.com/novuhq/novu/pull/7647
  • feat(dashboard): Digest liquid helper and popover handler by @scopsy in https://github.com/novuhq/novu/pull/7439
  • refactor(api-service): centralize auth into @novu/api and reduce DI complexity by @ChmaraX in https://github.com/novuhq/novu/pull/7640
  • chore(api-service): remove unused global SubscriberRouteGuard by @ChmaraX in https://github.com/novuhq/novu/pull/7641
  • refactor(api-service): move subs prefs usecases to API subs module by @ChmaraX in https://github.com/novuhq/novu/pull/7642
  • fix(api): duplicated subscribers created due to race condition by @tatarco in https://github.com/novuhq/novu/pull/7646
  • fix(js): Await read action in Inbox by @SokratisVidros in https://github.com/novuhq/novu/pull/7653
  • fix(web): local studio add workflow broken link by @jainpawan21 in https://github.com/novuhq/novu/pull/7633
  • feat(dashboard): fix on hover regression by @djabarovgeorge in https://github.com/novuhq/novu/pull/7604
  • fix(worker): remove payload email override by @djabarovgeorge in https://github.com/novuhq/novu/pull/7649
  • feat(dashboard): email editor variable suggestions dropdown, pill, editing by @LetItRock in https://github.com/novuhq/novu/pull/7625
  • fix(root): update Docker command in release preparation script by @merrcury in https://github.com/novuhq/novu/pull/7657
  • chore(root): Release 2025-02-05 10:17 by @github-actions in https://github.com/novuhq/novu/pull/7660
  • fix(dashboard,api-service): step conditions - disallow arbitrary fields and namespaces by @LetItRock in https://github.com/novuhq/novu/pull/7638
  • fix(api-service): extend TTL on lock by @tatarco in https://github.com/novuhq/novu/pull/7662
  • chore(root): Release 2025-02-05 14:22 by @github-actions in https://github.com/novuhq/novu/pull/7665
  • feat(api-service): add rate limit category flag to the new subscribers route by @djabarovgeorge in https://github.com/novuhq/novu/pull/7664
  • feat(dashboard): fix code defined delay copy by @djabarovgeorge in https://github.com/novuhq/novu/pull/7661
  • feat(dashboard): workflow trigger integration instructions MRK-317 by @scopsy in https://github.com/novuhq/novu/pull/7612
  • fix(worker): reduce and refactor number of logs by @merrcury in https://github.com/novuhq/novu/pull/7554
  • feat(dashboard): Nv 5276 Subscriber UI overview tab by @BiswaViraj in https://github.com/novuhq/novu/pull/7632
  • fix(dashboard,api-service): rename maily for loop to repeat by @LetItRock in https://github.com/novuhq/novu/pull/7663
  • fix(api-service): Fix api e2e deadlock by @SokratisVidros in https://github.com/novuhq/novu/pull/7575
  • chore(root): Release 2025-02-06 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7671
  • chore(root): Release 2025-02-06 11:01 by @github-actions in https://github.com/novuhq/novu/pull/7673

New Contributors

  • @4rthem made their first contribution in https://github.com/novuhq/novu/pull/7211
  • @danikp made their first contribution in https://github.com/novuhq/novu/pull/7257
  • @AdrianPasalega made their first contribution in https://github.com/novuhq/novu/pull/7342
  • @AminulBD made their first contribution in https://github.com/novuhq/novu/pull/7553

Full Changelog: https://github.com/novuhq/novu/compare/v2.1.0...v2.1.1

- TypeScript
Published by merrcury 11 months ago

novu - v2.1.0

What's Changed

  • perf(framework): Replace all computed property keys with static declarations by @rifont in https://github.com/novuhq/novu/pull/6926
  • chore(web): shorten the digest default duration by @djabarovgeorge in https://github.com/novuhq/novu/pull/6918
  • feat(web,dashboard): opt-out, redirects by @ChmaraX in https://github.com/novuhq/novu/pull/6922
  • fix(dashboard): Render bold markdown in in app preview by @desiprisg in https://github.com/novuhq/novu/pull/6928
  • fix(dashboard): Add default values to workflow editor provider form by @desiprisg in https://github.com/novuhq/novu/pull/6932
  • fix(dal): Reduce default Mongo connections by @SokratisVidros in https://github.com/novuhq/novu/pull/6901
  • refactor(shared, dal, application-generic, api, web, dashboard): Remove json-schema-to-ts dependency and use JsonSchemaDto everywhere by @rifont in https://github.com/novuhq/novu/pull/6921
  • fix(dashboard): promote toast env name by @ChmaraX in https://github.com/novuhq/novu/pull/6933
  • fix(dashboard): create workflow docs link by @ChmaraX in https://github.com/novuhq/novu/pull/6936
  • fix(dashboard): align heading with the gutter by @ChmaraX in https://github.com/novuhq/novu/pull/6935
  • fix(web, dashboard): Remove additional quotes in PHP code snippet by @rifont in https://github.com/novuhq/novu/pull/6938
  • feat(api): invalidate stale workflows by @djabarovgeorge in https://github.com/novuhq/novu/pull/6887
  • fix(framework): Ensure missing schemas return unknown record type by @rifont in https://github.com/novuhq/novu/pull/6912
  • feat(dashboard): Add origin prop to CustomStepControls for conditiona… by @BiswaViraj in https://github.com/novuhq/novu/pull/6939
  • chore(root): Release 2024-11-12 08:05 by @github-actions in https://github.com/novuhq/novu/pull/6947
  • feat(dashboard): add full utc date for updated at on hover by @djabarovgeorge in https://github.com/novuhq/novu/pull/6948
  • fix(dashboard): Dropdown border and action picker clickable area by @desiprisg in https://github.com/novuhq/novu/pull/6944
  • fix(dashboard): Trim tag input tags before adding by @desiprisg in https://github.com/novuhq/novu/pull/6942
  • fix(dashboard): Allow newlines on trigger workflow payload editor by @desiprisg in https://github.com/novuhq/novu/pull/6941
  • fix(dashboard): Align header heights by @desiprisg in https://github.com/novuhq/novu/pull/6940
  • feat(api): Billing alerts on usage emails by @scopsy in https://github.com/novuhq/novu/pull/6883
  • fix(dashboard): Fix tag input suggestion sorting by @desiprisg in https://github.com/novuhq/novu/pull/6943
  • feat(dashboard): unify success toasts by @ChmaraX in https://github.com/novuhq/novu/pull/6937
  • fix(dashboard): opt-in image source by @ChmaraX in https://github.com/novuhq/novu/pull/6949
  • feat(web,dashboard): opt-in/out tracking by @ChmaraX in https://github.com/novuhq/novu/pull/6930
  • feat(api): restrict tags to max 8 by @djabarovgeorge in https://github.com/novuhq/novu/pull/6929
  • chore(root): move selective actions to blacksmith by @blacksmith-sh in https://github.com/novuhq/novu/pull/6950
  • fix(dashboard): Nv 4679 visiting UI based workflow shows framework code by @BiswaViraj in https://github.com/novuhq/novu/pull/6951
  • feat(api): Fix previous steps by @tatarco in https://github.com/novuhq/novu/pull/6905
  • fix(dashboard): Show consistent tag inputs by @desiprisg in https://github.com/novuhq/novu/pull/6960
  • fix(dashboard): Fix configure action not opening by @desiprisg in https://github.com/novuhq/novu/pull/6965
  • feat(dashboard): unify clerk primary button with dashboard design by @ChmaraX in https://github.com/novuhq/novu/pull/6959
  • feat(dashboard): trigger test workflow loading state by @ChmaraX in https://github.com/novuhq/novu/pull/6961
  • feat(dashboard): autofocus on first create workflow input by @ChmaraX in https://github.com/novuhq/novu/pull/6962
  • feat(dashboard): align layout based on design by @ChmaraX in https://github.com/novuhq/novu/pull/6964
  • feat(dashboard): workflow list empty states by @ChmaraX in https://github.com/novuhq/novu/pull/6955
  • chore(framework, shared, nextjs): Release new versions by @rifont in https://github.com/novuhq/novu/pull/6963
  • fix(dashboard): Don't suggest added tags in tag input by @desiprisg in https://github.com/novuhq/novu/pull/6968
  • feat(dashboard): workflow editor error handling by @LetItRock in https://github.com/novuhq/novu/pull/6953
  • feat(api): add origin backward compatibility mapping by @djabarovgeorge in https://github.com/novuhq/novu/pull/6973
  • feat(dashboard): in-app editor unsaved changes modal plus handling esc and clicking on drawer gray overlay by @LetItRock in https://github.com/novuhq/novu/pull/6958
  • refactor(api): Use UpdatePreference use-case for all Subscriber Preference updates by @rifont in https://github.com/novuhq/novu/pull/6889
  • chore(dashboard): disable 1password on the workflow create sidebar by @LetItRock in https://github.com/novuhq/novu/pull/6975
  • fix(api): upsert preference if exist by @djabarovgeorge in https://github.com/novuhq/novu/pull/6970
  • feat(dashboard): page meta, gtm, and uptime by @LetItRock in https://github.com/novuhq/novu/pull/6974
  • feat(dashboard): styling for read-only input fields by @ChmaraX in https://github.com/novuhq/novu/pull/6967
  • fix(dashboard): Tweak Create Workflow copywriting by @desiprisg in https://github.com/novuhq/novu/pull/6971
  • fix(dashboard): Workflow saving status on toast and multiple toasts by @desiprisg in https://github.com/novuhq/novu/pull/6972
  • refactor(api): remove $or query for hash on env by @scopsy in https://github.com/novuhq/novu/pull/6969
  • chore(dashboard): batch of small fixes by @LetItRock in https://github.com/novuhq/novu/pull/6977
  • fix(api): fix deletion of issues from persistence once no issues are found by @tatarco in https://github.com/novuhq/novu/pull/6956
  • fix(web): Preserve last active organization across full page reloads by @SokratisVidros in https://github.com/novuhq/novu/pull/6978
  • feat(node): add deleteByTransactionId method by @jainpawan21 in https://github.com/novuhq/novu/pull/6980
  • refactor(worker): Remove redundant Bridge error handling by @rifont in https://github.com/novuhq/novu/pull/6875
  • chore(dashboard): a few more fixes by @LetItRock in https://github.com/novuhq/novu/pull/6985
  • feat(api): add tags issues by @djabarovgeorge in https://github.com/novuhq/novu/pull/6957
  • feat(framework): Expose Workflow resource type in public API by @rifont in https://github.com/novuhq/novu/pull/6983
  • chore(dashboard): revert trigger success toast by @LetItRock in https://github.com/novuhq/novu/pull/6987
  • fix(api, application-generic): Filter with supplied tags when fetching subscriber preferences by @rifont in https://github.com/novuhq/novu/pull/6991
  • chore(framework): Release version 2.5.0 by @rifont in https://github.com/novuhq/novu/pull/6988
  • chore(root): Release 2024-11-14 08:06 by @github-actions in https://github.com/novuhq/novu/pull/6993
  • chore(root): Release 2024-11-13 08:05 by @github-actions in https://github.com/novuhq/novu/pull/6981
  • feat(dashboard): Save workflow on blur by @desiprisg in https://github.com/novuhq/novu/pull/6990
  • fix(dashboard): Call save before instantly flushing and instantly save tag changes by @desiprisg in https://github.com/novuhq/novu/pull/6997
  • feat(dashboard): Selected route background color in sidebar by @desiprisg in https://github.com/novuhq/novu/pull/6996
  • fix(dashboard): Fix close icon padding in tag input by @desiprisg in https://github.com/novuhq/novu/pull/6995
  • fix(dashboard): Hide search workflow input by @desiprisg in https://github.com/novuhq/novu/pull/6998
  • fix(dashboard): Lighten the focus border on inputs by @desiprisg in https://github.com/novuhq/novu/pull/6999
  • fix(dashboard): Modality on configure action popover by @desiprisg in https://github.com/novuhq/novu/pull/7000
  • fix(api): bug bash preview issues resolved by @tatarco in https://github.com/novuhq/novu/pull/6904
  • feat(dashboard,web): opt-in app switching and redirects by @ChmaraX in https://github.com/novuhq/novu/pull/7002
  • fix(dashboard): ignore legacy dashboard staging subdomain by @ChmaraX in https://github.com/novuhq/novu/pull/7003
  • feat(dashboard): clerk components font size unification by @ChmaraX in https://github.com/novuhq/novu/pull/6984
  • chore(dashboard): workflow editor step name ellipsis by @LetItRock in https://github.com/novuhq/novu/pull/7007
  • fix(dashboard): Redirect url tooltip by @desiprisg in https://github.com/novuhq/novu/pull/7014
  • chore(root): Release 2024-11-15 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7013
  • fix(dashboard): reset preview payload on form change to prevent stale data by @BiswaViraj in https://github.com/novuhq/novu/pull/7012
  • fix(api): add patch step api and consolidate post update processing by @tatarco in https://github.com/novuhq/novu/pull/7015
  • fix(dashboard): Fix step deletion not working by @desiprisg in https://github.com/novuhq/novu/pull/7010
  • fix(api): Nv 4666 adding a primary action breaks preview by @tatarco in https://github.com/novuhq/novu/pull/7001
  • chore(dashboard): conntect inbox component and fix the layout by @LetItRock in https://github.com/novuhq/novu/pull/7009
  • fix(dashboard): opt-in redirect logic fix by @LetItRock in https://github.com/novuhq/novu/pull/7017
  • feat(dashboard): in-app editor loading state by @LetItRock in https://github.com/novuhq/novu/pull/7006
  • feat(api): raise the tags limit by @djabarovgeorge in https://github.com/novuhq/novu/pull/6989
  • fix(dashboard): disable delete option for external workflows by @BiswaViraj in https://github.com/novuhq/novu/pull/6966
  • fix(dashboard): Tag input improvements by @desiprisg in https://github.com/novuhq/novu/pull/7020
  • fix(dashboard): Truncation and clipboard copy fixes by @desiprisg in https://github.com/novuhq/novu/pull/7023
  • fix(dashboard): Inherit font on codemirror editor by @desiprisg in https://github.com/novuhq/novu/pull/7024
  • fix(api): Value saved on the wrong step by @tatarco in https://github.com/novuhq/novu/pull/7018
  • fix(api): active update by @djabarovgeorge in https://github.com/novuhq/novu/pull/6986
  • fix(api): Add a Patch Workflow endpoint by @tatarco in https://github.com/novuhq/novu/pull/7019
  • refactor(api, application-generic): Encapsulate preference mutations in workflow use-cases by @rifont in https://github.com/novuhq/novu/pull/7005
  • fix(api): add novu enterprise check with plain support key env by @jainpawan21 in https://github.com/novuhq/novu/pull/6885
  • feat(dal,web): add plain support service hash for live chat by @jainpawan21 in https://github.com/novuhq/novu/pull/6908
  • fix(web): update code based option doc link by @jainpawan21 in https://github.com/novuhq/novu/pull/7031
  • feat(novu): Add --headless flag to prevent automatic browser open with npx novu dev command by @rifont in https://github.com/novuhq/novu/pull/7016
  • feat(web, dashboard, api, shared): Add enhanced slugify to handle multilingual, special, and emoji characters by @rifont in https://github.com/novuhq/novu/pull/7025
  • chore(root): bump cross-spawn from 7.0.3 to 7.0.5 by @dependabot in https://github.com/novuhq/novu/pull/7030
  • fix(api): Add human friendly error messages for control and payload issues. by @rifont in https://github.com/novuhq/novu/pull/7026
  • chore(dashboard): in-app editor polished inbox preview by @LetItRock in https://github.com/novuhq/novu/pull/7027
  • fix(dashboard): Dashboard cleanups by @desiprisg in https://github.com/novuhq/novu/pull/7033
  • test(framework): Add test for step results in control values during preview by @rifont in https://github.com/novuhq/novu/pull/7034
  • chore(root): Release 2024-11-18 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7036
  • feat(web): enable opt-in inside user profile for v2 by @ChmaraX in https://github.com/novuhq/novu/pull/7004
  • feat(dashboard): Pause workflow from the context actions on workflow list by @BiswaViraj in https://github.com/novuhq/novu/pull/7038
  • fix(web): when user is opted-in redirect to the new dashboard on route change by @LetItRock in https://github.com/novuhq/novu/pull/7022
  • fix(dashboard): Hide typed tag when it's suggested by @desiprisg in https://github.com/novuhq/novu/pull/7039
  • fix(dashboard): Codemirror centering and default badge padding by @desiprisg in https://github.com/novuhq/novu/pull/7042
  • chore(root): update runner environment from blacksmith to ubuntu-latest by @merrcury in https://github.com/novuhq/novu/pull/7040
  • fix(api): Support fetching V1 Workflows without V2 Preferences by @rifont in https://github.com/novuhq/novu/pull/7043
  • fix(dashboard): action required error node icon styling by @ChmaraX in https://github.com/novuhq/novu/pull/7045
  • feat(api): update patch dto by @djabarovgeorge in https://github.com/novuhq/novu/pull/7041
  • fix(dashboard): Fix ui issues in in app step editor by @desiprisg in https://github.com/novuhq/novu/pull/7047
  • feat(api): remove url as required field by @djabarovgeorge in https://github.com/novuhq/novu/pull/7049
  • fix(api): payload schema parsing by @ChmaraX in https://github.com/novuhq/novu/pull/7048
  • fix(dashboard): update the workflow query data when its updated by @LetItRock in https://github.com/novuhq/novu/pull/7051
  • fix(dashboard): add control values to step editor in-app preview by @ChmaraX in https://github.com/novuhq/novu/pull/7050
  • fix(api): make zod optional by @tatarco in https://github.com/novuhq/novu/pull/7056
  • fix(dashboard, api): Add stronger validation for frontend and backend workflow schemas by @rifont in https://github.com/novuhq/novu/pull/7055
  • feat(dashboard): Add pause modal by @BiswaViraj in https://github.com/novuhq/novu/pull/7046
  • chore(root): Release 2024-11-19 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7058
  • fix(dashboard): Ensure that dashboard works in local on checkout by @SokratisVidros in https://github.com/novuhq/novu/pull/7057
  • fix(web): opt in redirect for v2 dashboard only by @ChmaraX in https://github.com/novuhq/novu/pull/7059
  • fix(dashboard): reset form on workflow creation by @BiswaViraj in https://github.com/novuhq/novu/pull/7061
  • feat(dashboard): disable react-query window focus refetch by @ChmaraX in https://github.com/novuhq/novu/pull/7062
  • fix(dashboard): Fix autosuggest UI issues by @desiprisg in https://github.com/novuhq/novu/pull/7054
  • chore(api): Migrate all V1 Preferences to V2 Preferences by @rifont in https://github.com/novuhq/novu/pull/7011
  • feat(api): add delay digest ui schemas by @djabarovgeorge in https://github.com/novuhq/novu/pull/7032
  • fix(dashboard): propagate saved step changes to in-app step editor by @ChmaraX in https://github.com/novuhq/novu/pull/7053
  • fix(api): Nv 4798 unify default step controls definition using only zod by @tatarco in https://github.com/novuhq/novu/pull/7063
  • feat(dashboard): make unsupported steps read-only for all wfs by @ChmaraX in https://github.com/novuhq/novu/pull/7066
  • fix(dashboard): workflow editor name change updates the workflow slug in the url by @LetItRock in https://github.com/novuhq/novu/pull/7064
  • fix(api): Remove workflow property issue checks by @rifont in https://github.com/novuhq/novu/pull/7069
  • fix(api): null issues by @tatarco in https://github.com/novuhq/novu/pull/7076
  • chore(root): Release 2024-11-20 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7077
  • fix(dashboard): align validation error messages across the application by @LetItRock in https://github.com/novuhq/novu/pull/7044
  • chore(root): Release npm packages by @SokratisVidros in https://github.com/novuhq/novu/pull/7073
  • style(dashboard): Refine primary header hover and focus states, add inbox animation by @rifont in https://github.com/novuhq/novu/pull/7072
  • chore(shared, dal, api, worker, application-generic): remove the unwanted expiredAt in favour of atlas triggers by @merrcury in https://github.com/novuhq/novu/pull/6931
  • fix(dashboard): Add shrink-0 to workflow status icon by @desiprisg in https://github.com/novuhq/novu/pull/7074
  • fix(dashboard): Center custom controls input text by @desiprisg in https://github.com/novuhq/novu/pull/7078
  • fix(dashboard): Extend ZodValue type to include ZodAny and handle number type in dynamic schema by @BiswaViraj in https://github.com/novuhq/novu/pull/7079
  • fix(dashboard): Fix payload field growing out of bounds by @desiprisg in https://github.com/novuhq/novu/pull/7075
  • fix(dashboard): Set popover z-index to 50 to match sheet by @desiprisg in https://github.com/novuhq/novu/pull/7081
  • chore(root): Release 2024-11-20 12:53 by @github-actions in https://github.com/novuhq/novu/pull/7084
  • ci(web): add new dashboard url env var by @ChmaraX in https://github.com/novuhq/novu/pull/7082
  • chore(root): Release 2024-11-20 12:55 by @github-actions in https://github.com/novuhq/novu/pull/7085
  • fix(dashboard): fixed the ui issues by @LetItRock in https://github.com/novuhq/novu/pull/7087
  • style(dashboard): Refine modal, tooltip, and preview content accordion by @rifont in https://github.com/novuhq/novu/pull/7086
  • chore(root): Release 2024-11-20 14:33 by @github-actions in https://github.com/novuhq/novu/pull/7089
  • fix(dashboard): light theme for new domain by @ChmaraX in https://github.com/novuhq/novu/pull/7090
  • style(dashboard): Fix CSS variable formatting for alert by @rifont in https://github.com/novuhq/novu/pull/7091
  • chore(root): Release 2024-11-20 16:23 by @github-actions in https://github.com/novuhq/novu/pull/7093
  • fix(dashboard): Portal tooltip content by default by @desiprisg in https://github.com/novuhq/novu/pull/7095
  • fix(dal): Add index on createdAt for Online Archive in execution, job… by @merrcury in https://github.com/novuhq/novu/pull/7083
  • chore(root): Release 2024-11-21 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7098
  • chore(webhook): Update Dockerfile and add .dockerignore for improved … by @merrcury in https://github.com/novuhq/novu/pull/7096
  • feat(root): Add base Dockerfile for GHCR with Node.js and dependencies by @merrcury in https://github.com/novuhq/novu/pull/7100
  • fix(dashboard,web): opt-in page flickering; login/logout redirect by @ChmaraX in https://github.com/novuhq/novu/pull/7102
  • fix(dashboard): Ensure all timeouts are cleared on component unmount by @rifont in https://github.com/novuhq/novu/pull/7097
  • revert(api): Return all preference channels for Subscriber Preference API by @rifont in https://github.com/novuhq/novu/pull/7101
  • ci(web): add staging new dashboard url to deploy action by @ChmaraX in https://github.com/novuhq/novu/pull/7104
  • fix(api): Nv 4823 no validation around bad urls + 400 in client by @tatarco in https://github.com/novuhq/novu/pull/7092
  • fix(dashboard): Workflow editor UI fixes by @desiprisg in https://github.com/novuhq/novu/pull/7099
  • feat(worker): add defer duration validation by @djabarovgeorge in https://github.com/novuhq/novu/pull/7088
  • fix(api, dal, framework): fix the uneven and unused dependencies by @merrcury in https://github.com/novuhq/novu/pull/7103
  • chore(api): Add batch mechanism for preference centralization migration and improve logging by @rifont in https://github.com/novuhq/novu/pull/7107
  • chore(root): Release 2024-11-21 16:05 by @github-actions in https://github.com/novuhq/novu/pull/7108
  • fix(dashboard): In app editor fixes by @desiprisg in https://github.com/novuhq/novu/pull/7094
  • chore(root): Release 2024-11-22 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7109
  • fix(api): Nv 4836 v2 dashboard workflows show error in old dashboard by @tatarco in https://github.com/novuhq/novu/pull/7106
  • feat(dashboard): signup and login page design update by @scopsy in https://github.com/novuhq/novu/pull/7070
  • fix(dashboard): Do not render preview action when nullish by @desiprisg in https://github.com/novuhq/novu/pull/7113
  • feat(root): add support chat app ID to environment variables in d… by @merrcury in https://github.com/novuhq/novu/pull/7120
  • chore(root): Release 2024-11-25 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7121
  • fix(api): Migrate subscriber global preferences before workflow preferences by @rifont in https://github.com/novuhq/novu/pull/7118
  • feat(dashboard): Codemirror liquid filter support by @desiprisg in https://github.com/novuhq/novu/pull/7122
  • chore(dashboard): Cleanup step related components by @desiprisg in https://github.com/novuhq/novu/pull/7125
  • fix(dashboard): Fix url variables being cut out by @desiprisg in https://github.com/novuhq/novu/pull/7110
  • fix(js): Truncate workflow name and center empty notifications text by @desiprisg in https://github.com/novuhq/novu/pull/7123
  • fix(api): remove openApi Methods by @tatarco in https://github.com/novuhq/novu/pull/7128
  • feat(js): Popover props by @BiswaViraj in https://github.com/novuhq/novu/pull/7112
  • chore(root): Release 2024-11-26 08:06 by @github-actions in https://github.com/novuhq/novu/pull/7130
  • feat(dashboard): org creation screen by @scopsy in https://github.com/novuhq/novu/pull/7080
  • feat(dashboard): Add test inbox for full E2E test journey by @rifont in https://github.com/novuhq/novu/pull/7117
  • feat(dashboard): add workflow visit event by @scopsy in https://github.com/novuhq/novu/pull/7134
  • chore(root): Release 2024-11-26 17:36 by @github-actions in https://github.com/novuhq/novu/pull/7135
  • fix(api): Fix billing active subscription computation by @rifont in https://github.com/novuhq/novu/pull/7138
  • fix(api): fix step id on sync to env by @djabarovgeorge in https://github.com/novuhq/novu/pull/7139
  • fix(dashboard): Fix copywriting by @SokratisVidros in https://github.com/novuhq/novu/pull/7141
  • chore(root): Release version 2.1.0 for all applications by @rifont in https://github.com/novuhq/novu/pull/7142
  • chore(root): Release 2024-11-27 10:41 by @github-actions in https://github.com/novuhq/novu/pull/7146

New Contributors

  • @blacksmith-sh made their first contribution in https://github.com/novuhq/novu/pull/6950

Full Changelog: https://github.com/novuhq/novu/compare/v2.0.1...v2.1.0

- TypeScript
Published by rifont about 1 year ago

novu - v2.0.1

What's Changed

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

New Contributors

  • @elmdecoste made their first contribution in https://github.com/novuhq/novu/pull/6633
  • @PrathameshSPawar made their first contribution in https://github.com/novuhq/novu/pull/6795

Full Changelog: https://github.com/novuhq/novu/compare/v2.0.0...v2.0.1

- TypeScript
Published by merrcury about 1 year ago

novu - v2.0.0

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

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

New Contributors

  • @RahulDutta007 made their first contribution in https://github.com/novuhq/novu/pull/5258
  • @justnems made their first contribution in https://github.com/novuhq/novu/pull/5284
  • @lovishduggal made their first contribution in https://github.com/novuhq/novu/pull/5279
  • @efaraz27 made their first contribution in https://github.com/novuhq/novu/pull/5312
  • @FlacorLopes made their first contribution in https://github.com/novuhq/novu/pull/5372
  • @vitoorgomes made their first contribution in https://github.com/novuhq/novu/pull/5232
  • @aj-ya made their first contribution in https://github.com/novuhq/novu/pull/5495
  • @filiprafaj made their first contribution in https://github.com/novuhq/novu/pull/5497
  • @racky7 made their first contribution in https://github.com/novuhq/novu/pull/5496
  • @denis-kralj-novu made their first contribution in https://github.com/novuhq/novu/pull/5493
  • @GabrielFavot made their first contribution in https://github.com/novuhq/novu/pull/5629
  • @pedrohavay made their first contribution in https://github.com/novuhq/novu/pull/5635
  • @awbx made their first contribution in https://github.com/novuhq/novu/pull/5650
  • @ameensom made their first contribution in https://github.com/novuhq/novu/pull/5702
  • @paulwer made their first contribution in https://github.com/novuhq/novu/pull/6437

Full Changelog: https://github.com/novuhq/novu/compare/v0.24.1...v2.0.0

- TypeScript
Published by merrcury about 1 year ago

novu - v0.24.0

What’s new in Novu 0.24?

TL;DR: All you need to know about the latest Novu 0.24.0 release. Translation management improvements, notifire package deprecations, template editing preview updates, workflow pagination, and more!

0.24 Release Updates

We're excited to highlight the newest features introduced in our latest release. Join us as we explore the treasure that was recovered from the depths of the engineers' dungeon!

giphy (9)

Translation Management Improvements

We’ve made significant enhancements to the Translation management feature.

  • Users can now preview translated templates in their preferred languages in the workflow editor.
  • A new drag-and-drop functionality for uploading of the translation files.
  • We revamped the UI of the step editors significantly enhancing the user experience for template editing.
  • Translation Managements Variants Preview

image

image

image

image

image

image

💡 Note: This feature is only available for Novu Cloud for Business and Enterprise Clients.

Deprecation of Original Notifire Packages

As of this release we will be deprecating the original Notifire packages hosted on GitHub and any package within the @notifire namespace on NPM.

Users should promptly transition to the official @novu packages and platform.

Deprecated Packages

  1. Notifire WebSocket Package (notifire/ws)
  2. Notifire Widget Package (notifire/widget)
  3. Notifire SDK Package (notifire/sdk)
  4. Notifire Web Package (notifire/web)
  5. Notifire API Package (notifire/api)

Workflow Page Pagination Improvements

We've implemented enhanced pagination on the Workflows page, allowing for easier navigation between pages, displaying more items, and direct access to specific pages.

image

Auto Remove Deleted Subscribers from Topic

Previously, deleted subscribers remained part of the topics they were added to. Now, they are automatically removed from any topics they were part of upon deletion.

PR for Reference: https://github.com/novuhq/novu/pull/5187

Subscriber Details Now Available For Digest Filters

There was a known reported bug where a subscriber filter on a digest step fails because subscriber details always appeared to be null when evaluating filters on digests.

The bug has been resolved, and subscriber details are now consistently available for digest filters.

PR for Reference: https://github.com/novuhq/novu/pull/5234

Notable changes

  • ARM Architecture Support by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5139
  • feat(worker): add topics fanout in batches by cursor by @djabarovgeorge in https://github.com/novuhq/novu/pull/5165

What's Changed

  • feat: add dropzone package by @BiswaViraj in https://github.com/novuhq/novu/pull/5108
  • feat: add file upload support for cypress by @BiswaViraj in https://github.com/novuhq/novu/pull/5127
  • fix(ci): CSpell action version update by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5145
  • fix: change whatsapp with discord for chat step by @jainpawan21 in https://github.com/novuhq/novu/pull/5149
  • fix: change node version to 20.8.1 by @jainpawan21 in https://github.com/novuhq/novu/pull/5140
  • fix: isend sms provider unexpected provider error by @jainpawan21 in https://github.com/novuhq/novu/pull/5135
  • Create the channel preview sidebar and route by @ainouzgali in https://github.com/novuhq/novu/pull/5128
  • fix: side bar title color based on theme by @jainpawan21 in https://github.com/novuhq/novu/pull/5155
  • Nv 2997 reusable chat preview component by @ainouzgali in https://github.com/novuhq/novu/pull/5157
  • NV-3417: Pagination component + vitest setup by @antonjoel82 in https://github.com/novuhq/novu/pull/5107
  • NV-1971: Connect Pagination for Workflows by @antonjoel82 in https://github.com/novuhq/novu/pull/5136
  • fix(api): bulk create subscribers after they were deleted by @LetItRock in https://github.com/novuhq/novu/pull/5160
  • feat(provider): add ring central provider (#77) by @KelvisGama in https://github.com/novuhq/novu/pull/5147
  • Fix client payload on remove messages by @djabarovgeorge in https://github.com/novuhq/novu/pull/5159
  • Nv 2995 reusable email preview component by @BiswaViraj in https://github.com/novuhq/novu/pull/5143
  • Nv 3475 - typeerror cannot create property buttons on string by @djabarovgeorge in https://github.com/novuhq/novu/pull/5172
  • hotfix: NV-3475 by @LetItRock in https://github.com/novuhq/novu/pull/5176
  • fix(infra): Remove gitignore for EE symlinked src folders by @rifont in https://github.com/novuhq/novu/pull/5183
  • Auto Remove Deleted Subscribers from topic by @djabarovgeorge in https://github.com/novuhq/novu/pull/5187
  • feat(web): reusable sms preview component by @LetItRock in https://github.com/novuhq/novu/pull/5173
  • Nv 2996 reusable push preview component by @BiswaViraj in https://github.com/novuhq/novu/pull/5178
  • fix(api,web): built in novu integrations for self hosted by @LetItRock in https://github.com/novuhq/novu/pull/5158
  • fix(ci): Mount token to a build svc command by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5181
  • Nv 3006 - the new chat editor by @ainouzgali in https://github.com/novuhq/novu/pull/5180
  • [Onboarding] - Refactor tabs and routing by @antonjoel82 in https://github.com/novuhq/novu/pull/5184
  • fix: sender name and preheader not promoted by @ainouzgali in https://github.com/novuhq/novu/pull/5193
  • hotfix: sender name and preheader are not promoted by @LetItRock in https://github.com/novuhq/novu/pull/5194
  • [Onboarding] - Groundwork for all use cases by @antonjoel82 in https://github.com/novuhq/novu/pull/5190
  • Nv 3005 the new sms editor by @ainouzgali in https://github.com/novuhq/novu/pull/5197
  • Nv-3365: Material Design Icons by @antonjoel82 in https://github.com/novuhq/novu/pull/5196
  • feat: add workflow creation from blueprint by @djabarovgeorge in https://github.com/novuhq/novu/pull/5189
  • Nv 3004 the new push editor by @BiswaViraj in https://github.com/novuhq/novu/pull/5191
  • feat(api-migration): create cta action migration by @djabarovgeorge in https://github.com/novuhq/novu/pull/5175
  • fix(web): specify novu version in client by @michaldziuba03 in https://github.com/novuhq/novu/pull/5028
  • fix: change workflow response to workflows response dto by @jainpawan21 in https://github.com/novuhq/novu/pull/5141
  • feat(api): Add idempotent subscriber credential update operation by @rifont in https://github.com/novuhq/novu/pull/5211
  • fix: api key migration widget initialize failure by @djabarovgeorge in https://github.com/novuhq/novu/pull/5216
  • fix(ci): Setup qemu to fix a docker exporter by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5220
  • fix(ci): --load for WS service by @AliaksandrRyzhou in https://github.com/novuhq/novu/pull/5221
  • feat: implement cta and avatar by @BiswaViraj in https://github.com/novuhq/novu/pull/5217
  • feat: add fallback lng by @ainouzgali in https://github.com/novuhq/novu/pull/5222
  • Nv 2993 reusable in app preview component by @BiswaViraj in https://github.com/novuhq/novu/pull/5204
  • chore(web): marketing utm campaign on doc links by @LetItRock in https://github.com/novuhq/novu/pull/5203
  • Remove Helm Default Encryption Key by @Cliftonz in https://github.com/novuhq/novu/pull/5226
  • Make multiline comments a warning by @antonjoel82 in https://github.com/novuhq/novu/pull/5227
  • Nv 3510 - Open onboarding workflow node by @djabarovgeorge in https://github.com/novuhq/novu/pull/5207
  • Nv 3352 - Onboarding Analytics by @djabarovgeorge in https://github.com/novuhq/novu/pull/5212
  • [Onboarding] NV-3348: Questionnaire Styling Fix & Tests by @antonjoel82 in https://github.com/novuhq/novu/pull/5229
  • feat(web): translation management variants preview by @LetItRock in https://github.com/novuhq/novu/pull/5202
  • Nv 3420 css inconsistencies with designs by @BiswaViraj in https://github.com/novuhq/novu/pull/5230
  • fix: subscriber details not available for digest filters by @MasonD in https://github.com/novuhq/novu/pull/5234
  • Translation management beta by @ainouzgali in https://github.com/novuhq/novu/pull/5124
  • fix(web): pagination search params on activity feed page by @LetItRock in https://github.com/novuhq/novu/pull/5231
  • chore(web): refactor onboarding create workflow from blueprint logic by @LetItRock in https://github.com/novuhq/novu/pull/5233
  • [Onboarding] NV-3262 | Cypress tests by @antonjoel82 in https://github.com/novuhq/novu/pull/5235
  • NV-3497 - Pagination Tweaks by @antonjoel82 in https://github.com/novuhq/novu/pull/5242
  • fix: show changes details for translations by @ainouzgali in https://github.com/novuhq/novu/pull/5237
  • feature: onboarding experiment setup by @jainpawan21 in https://github.com/novuhq/novu/pull/5250
  • Update runner type to ubuntu-latest-large by @Cliftonz in https://github.com/novuhq/novu/pull/5246
  • fix: Update Content-Type header to application/x-www-form-urlencoded by @BiswaViraj in https://github.com/novuhq/novu/pull/5244
  • chore: make retention period configurable by @katyaterletskaya in https://github.com/novuhq/novu/pull/5055
  • chore(web): onboarding animations update by @LetItRock in https://github.com/novuhq/novu/pull/5247
  • [Use Case Onboarding Project] - Stacked PRs by @djabarovgeorge in https://github.com/novuhq/novu/pull/5116
  • Revert "Update runner type to ubuntu-latest-large" by @Cliftonz in https://github.com/novuhq/novu/pull/5261

New Contributors

  • @KelvisGama made their first contribution in https://github.com/novuhq/novu/pull/5147
  • @MasonD made their first contribution in https://github.com/novuhq/novu/pull/5234

Full Changelog: https://github.com/novuhq/novu/compare/v0.23.0...v0.24.0

- TypeScript
Published by LetItRock almost 2 years ago

novu - v0.23.0

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!

giphy (7)

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.

image

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

  1. Notifire WebSocket Package (notifire/ws)
  2. Notifire Widget Package (notifire/widget)
  3. Notifire SDK Package (notifire/sdk)
  4. Notifire Web Package (notifire/web)
  5. 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

```jsx const onSuccess = (data: IMessage) => {};

const onError = (error: Error) => {};

const { removeNotifications, isLoading, isError, error } = useRemoveNotifications({ onSuccess, onError, }); ```

Headless Service

```jsx headlessService.removeNotifications({ listener: ( result: UpdateResult ) => { console.log(result); }, onSuccess: (message: IMessage) => { console.log(message); }, onError: (error: unknown) => { console.error(error); }, messageIds: ["messageid1", "messageid2" ], });

```

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

```jsx 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

- TypeScript
Published by LetItRock almost 2 years ago

novu - v0.22.0

What’s new in Novu 0.22?

TL;DR: All you need to know about the latest Novu 0.22.0 release. Multi-tenancy Variants, API Idempotency, API Rate Limiting, Filter conditional variables and more!

0.22 Release Updates

We're excited to highlight the newest features introduced in our latest release. Join us as we explore what awaits you!

image

Multi-tenancy Variants

Variants is an integral component of our multi-tenancy feature and aims to empower users to create multiple variants for a given workflow step, such as the Email step. These step variations are linked to specific conditions.

Within the multi-tenancy context, these conditions may pertain to tenants; for instance, if the tenant is named "Nike", a specific email variant will be chosen.

However, these conditions extend beyond tenants, allowing users to base their criteria on the trigger payload, subscriber data, or webhook data.

During the notification sending phase, the system’s logic will determine the appropriate variant based on the contextual information that was passed with the trigger event and the conditions applied to the variants. Only a single variant will be selected and sent to the user at the end.

Note: We have renamed the Filters functionality to Conditions.

variants

variants

Adding a variant to email step

In this gif above, we added a variant to our email step, thus making us have the root variant (with no condition) that will be sent if there's no tenant identifier specified, and a variant that will be sent if the tenant identifier is Nike.

Idempotency

To enhance the resilience and dependability of our API system, especially during disruptive scenarios like network interruptions, we have introduced the Idempotency headers to POST and PATCH HTTP methods within the API.

We have now granted users the ability to include Idempotency headers in their requests. A given operation will not be executed more than once, even if users resubmit the request following a perceived failure.

This guarantees that we process changes in a fail-safe manner, and the system caches the response for a day for future reference. This approach ensures that only valid and unique changes are processed, contributing to the overall robustness and reliability of our API system.

Note: Currently, the Idempotency headers are not enabled on the Novu cloud but functionality is available for self-hosting. We are currently integrating it into all of our SDKs as well.

Huge shoutout to @mahendraHegde for bringing in the Idempotency feature and to @michaldziuba03 for implementing the exponential retry mechanism in Node SDK! Your contribution rocks, much appreciated! 🙌

PRs:

  • feat: add idempotency interceptor by @mahendraHegde in https://github.com/novuhq/novu/pull/4531
  • fix(api): Use correct idempotency documentation link by @rifont in https://github.com/novuhq/novu/pull/4710
  • feat(node): add exponential retry mechanism with idempotency headers by @michaldziuba03 in https://github.com/novuhq/novu/pull/4462

API Rate Limiting

Rate limiting is an essential functionality for establishing a robust and resilient system. It safeguards system resources from being misused by malicious actors or being monopolized by one client.

It plays a vital role in sustaining consistent system performance by regulating traffic and preventing sudden increases that could degrade service quality.

Note: It's not currently enabled on Novu Cloud yet. We'll inform all users whenever we want to enable this option for all cloud users. If you're self-hosting, you can enable API rate limiting immediately with the IS_API_RATE_LIMITING_ENABLED flag in the environment variable.

PRs:

  • feat(application-generic, shared): Add Rate Limiting feature flag in https://github.com/novuhq/novu/pull/4667
  • feat(dal, shared, api): Add rate limit DAL attributes by @rifont in https://github.com/novuhq/novu/pull/4758
  • feat(api, shared): Add use cases to resolve an environment's api rate limit in https://github.com/novuhq/novu/pull/4774
  • chore(api, shared, app-generic): Convert API rate limit FF to be LaunchDarkly compatible in https://github.com/novuhq/novu/pull/4857
  • feat(api): Add evaluate api rate limit use case in https://github.com/novuhq/novu/pull/4844
  • feat(api): Add API rate limiting NestJS guard in https://github.com/novuhq/novu/pull/4910
  • feat(api): Apply rate limit decorators to api controllers and methods in https://github.com/novuhq/novu/pull/4915
  • feat(api): Add variable-cost token bucket rate limiting algorithm in https://github.com/novuhq/novu/pull/4911

Variable Support in the Step Conditions aka Filters

The condition Value field now supports the use of variables as its value, enhancing the dynamic nature of this functionality.

variables_in_step_conditions

PRs:

  • feat: add support for variables in filter values https://github.com/novuhq/novu/pull/4724

Workflow Settings Override for tenants

The workflow settings override functionality allows to update the active and channel preferences fields on the workflow per tenant.

A good use case for this is the ability to have the following setting preferences enabled for all users, but you want them disabled for specific tenants. For example, you have about 3 tenants: Nike, Cloudinary and Eden. You can create a new settings override by passing the tenantId and workflowId, and your preferences.

We have implemented the set of the API endpoints that allow the following:

  • Creating, updating and deleting overrides,
  • List all overrides, or for one template.

override1

override2

Create new workflow settings overrides

override3

Update workflow settings overrides

PRs:

  • Stacked PR's of - Workflow override in https://github.com/novuhq/novu/pull/4773

Note: We are currently working on ensuring our SDKs have support for this functionality.

Event Cancellation from Digest

We have added a new API endpoint that allows the cancellation of any event from the digest.

digest

Note: We are currently updating all of our SDKs to support this new functionality.

PRs:

  • Feature: Ability to cancel any arbitrary events from digest in https://github.com/novuhq/novu/pull/4888

Resiliency and Performance Improvements

We have done some performance plumbing to improve the speed & resilience of the overall system. Our goal is to keep working on performance, reliability and resilience in every release.

Custom SMS Provider Integration

You can now send SMS messages using custom SMS providers using REST API. Do this by setting up the Generic SMS provider:

custom_sms

custom_sms2

MessageBird SMS Provider Integration

You can now send SMS messages via the MessageBird SMS provider integration:

messagebird

BulkSMS Provider Integration

You can now send SMS messages via the BulkSMS SMS provider integration:

bulksms

SimpleTexting SMS Provider Integration

You can now send SMS messages via the SimpleTexting SMS provider integration:

simpletexting

Azure SMS Provider Integration

You can now send SMS messages via the Azure SMS provider integration:

azure_sms

Braze Email Provider Integration

You can now send emails via the Braze Email provider integration:

braze

Pusher Beams Provider Integration

You can now send messages via the Pusher Beams provider integration:

pusher_beams

Grafana On Call Webhook Chat Provider Integration

You can now send messages via the Grafana On Call webhook chat provider integration:

grafana

Notable changes

  • fix: change default value to true for critical switch by @jainpawan21 in https://github.com/novuhq/novu/pull/4882
  • fix(web): nc loading issue for eu env by @BiswaViraj in https://github.com/novuhq/novu/pull/4904
  • feat(api): scripts to remove user account and to remove organization by @LetItRock in https://github.com/novuhq/novu/pull/4190

What's Changed

  • fix(@novu/fcm): use message instead of body for data-type notifications by @cherfia in https://github.com/novuhq/novu/pull/4652
  • Updated the name of Twitter to X in all docs by @Arcturus22 in https://github.com/novuhq/novu/pull/4662
  • 🐛 Add missing NODE_ENV for web deployment by @sachin-duhan in https://github.com/novuhq/novu/pull/4672
  • Enhanced Security Information via Updating SECURITY.md by @tvermaashutosh in https://github.com/novuhq/novu/pull/4666
  • docs update by @krishvsoni in https://github.com/novuhq/novu/pull/4683
  • feat: added feature to toggle visibility of settings in iframe by @ruhani2 in https://github.com/novuhq/novu/pull/4688
  • Added translation for a word in Azerbaijani by @Atharva1723 in https://github.com/novuhq/novu/pull/4686
  • feat: add support for tls servername for azure redis by @Cliftonz in https://github.com/novuhq/novu/pull/4690
  • feat(web): add missing square logos by @michaldziuba03 in https://github.com/novuhq/novu/pull/4701
  • [NV-3037] Fixed closing off the wrong socket in useUnreadCount.ts by @Khongchai in https://github.com/novuhq/novu/pull/4590
  • feat(worker): manage default workers config through env variables by @p-fernandez in https://github.com/novuhq/novu/pull/4544
  • Docs Feedback: js code in create-subscriber method has syntax issues by @codingis4noobs2 in https://github.com/novuhq/novu/pull/4709
  • feat(infra): safe value in-memory provider configs by @p-fernandez in https://github.com/novuhq/novu/pull/4718
  • added web component url by @krishvsoni in https://github.com/novuhq/novu/pull/4719
  • Add badges by @git-create-devben in https://github.com/novuhq/novu/pull/4721
  • Add Pushpad provider to README.md by @collimarco in https://github.com/novuhq/novu/pull/4720
  • docs: fix grammatical error by @princerajpoot20 in https://github.com/novuhq/novu/pull/4732
  • feat(infra): create dedicated services for in-memory for wf and cache by @p-fernandez in https://github.com/novuhq/novu/pull/4733
  • Update CONTRIBUTING.md by @krishvsoni in https://github.com/novuhq/novu/pull/4731
  • fix(providers): azure sms logo and identifier by @michaldziuba03 in https://github.com/novuhq/novu/pull/4740
  • feat(infra): temporary env var to decommission old cluster in azure by @p-fernandez in https://github.com/novuhq/novu/pull/4751
  • feat(infra): add azure cache for redis provider without connecting it by @p-fernandez in https://github.com/novuhq/novu/pull/4739
  • Fix pr-labeler.yml workflow by @rannn505 in https://github.com/novuhq/novu/pull/4752
  • refactor(providers): Migrate from pepipost SDK to direct API calls with Axios by @Dhoni77 in https://github.com/novuhq/novu/pull/4595
  • fix(web): add missing providers logos by @michaldziuba03 in https://github.com/novuhq/novu/pull/4742
  • refactor(providers): migrate from @sendinblue/client SDK to direct API calls with Axios by @Dhoni77 in https://github.com/novuhq/novu/pull/4596
  • refactor(providers): Migrate from clicksend SDK to direct API calls with Axios by @his-maj-esty in https://github.com/novuhq/novu/pull/4609
  • feat(notification-center): header missing screen argument and React identity by @gitstart in https://github.com/novuhq/novu/pull/3463
  • fix(providers): Sparkpost provider bugs by @michaldziuba03 in https://github.com/novuhq/novu/pull/3736
  • NV-2195 - Bug Report: Visual bug in Add filter button icon by @gitstart in https://github.com/novuhq/novu/pull/4151
  • feat(web): Add blank workflow creation button by @rohitkbc in https://github.com/novuhq/novu/pull/4323
  • fix(web): fixed the dropdown issue in email editor by @sudhanshugautam2911 in https://github.com/novuhq/novu/pull/4728
  • fix: events write over other digest data on up coming digests by @davidsoderberg in https://github.com/novuhq/novu/pull/4765
  • chore(deps): update dependency @types/inquirer to v8.2.9 by @renovate in https://github.com/novuhq/novu/pull/4766
  • feat(notification-center-vue): Make Popover.triggers a prop for notification-center-vue by @danidee10 in https://github.com/novuhq/novu/pull/3964
  • chore(api): Add generic migration helper script by @rifont in https://github.com/novuhq/novu/pull/4780
  • Add auto create index variables to env by @Cliftonz in https://github.com/novuhq/novu/pull/4772
  • fix(worker): Add activity log for events when they digest in the mergedDigestId flow by @scopsy in https://github.com/novuhq/novu/pull/4789
  • refactor(providers): migrate from sparkpost sdk to axios by @michaldziuba03 in https://github.com/novuhq/novu/pull/4785
  • chore: update npm badges in readme by @michaldziuba03 in https://github.com/novuhq/novu/pull/4820
  • chore: Remove Hacktoberfest and fix the top by @nevo-david in https://github.com/novuhq/novu/pull/4769
  • fix(web): Invite-members icon is changed in header-nav by @maverox in https://github.com/novuhq/novu/pull/4695
  • feat(web): Add Loading spinner for Update button by @iknlaxmi in https://github.com/novuhq/novu/pull/4781
  • fix(api): eliminate number conversion for split message by @scopsy in https://github.com/novuhq/novu/pull/4832
  • feat(infra): decommission old instance of redis cluster by @p-fernandez in https://github.com/novuhq/novu/pull/4824
  • fix(api): swagger schema for integrations return array by @king-11 in https://github.com/novuhq/novu/pull/4697
  • feat(api): Allow style tags and attributes in the In-App & Email Editor by @rifont in https://github.com/novuhq/novu/pull/4841
  • fix(visual-bug): left spacing of frequent event in digest by @jainpawan21 in https://github.com/novuhq/novu/pull/4842
  • fix(ci): docker build test.yml for forks by @scopsy in https://github.com/novuhq/novu/pull/4839
  • fix(sms): add options from in sms providers by @jainpawan21 in https://github.com/novuhq/novu/pull/4845
  • chore(web): segment track the user theme preference by @LetItRock in https://github.com/novuhq/novu/pull/4848
  • feat(worker): add handlebar helper for number formatting by @michaldziuba03 in https://github.com/novuhq/novu/pull/4827
  • Docs Feedback: js code in update-subscriber method has syntax issues by @Atharva1723 in https://github.com/novuhq/novu/pull/4862
  • Updated the syntax in many of the methods by @Atharva1723 in https://github.com/novuhq/novu/pull/4864
  • fix(docs): Fix Redirect Issue for "Run in Local Machine" Button by @Atharva1723 in https://github.com/novuhq/novu/pull/4870
  • Update the roadmap link to the latest roadmap link by @Atharva1723 in https://github.com/novuhq/novu/pull/4865
  • refactor(ws): Add newrelic metrics and refactor handle disconnect by @scopsy in https://github.com/novuhq/novu/pull/4871
  • fix: so not public endpoints is hidden in swagger json by @davidsoderberg in https://github.com/novuhq/novu/pull/4406
  • feat(worker): add raw error details for chat channel errors by @jainpawan21 in https://github.com/novuhq/novu/pull/4875
  • refactor(providers): Migrate from onesignal-node SDK to the official @onesignal/node-onesignal by @Dhoni77 in https://github.com/novuhq/novu/pull/4840
  • Create change on group and feed creation by @djabarovgeorge in https://github.com/novuhq/novu/pull/4849
  • docs(providers): Fix syntax mistake by @Atharva1723 in https://github.com/novuhq/novu/pull/4895
  • feat(web): Enable to copy on activity item feed - [NV-3056] by @tquocanvn in https://github.com/novuhq/novu/pull/4761
  • Added the usage section in the sparkpost by @Atharva1723 in https://github.com/novuhq/novu/pull/4896
  • feat: add getstream by @vikaspatil0021 in https://github.com/novuhq/novu/pull/4692
  • Refactor : Split event trigger by type by @djabarovgeorge in https://github.com/novuhq/novu/pull/4859
  • refactor(dal): improve subscriber preference schema by @scopsy in https://github.com/novuhq/novu/pull/4898
  • fix: senderName and subject override for email providers by @jainpawan21 in https://github.com/novuhq/novu/pull/4903
  • Add inbound mail Queue to metrics by @Cliftonz in https://github.com/novuhq/novu/pull/4180
  • fix: [NV-2841] Fixed issue of channel icons in light theme due to duplicate id in SVG by @Gaurav0493 in https://github.com/novuhq/novu/pull/4358
  • feat: added option to override html for emails by @vichustephen in https://github.com/novuhq/novu/pull/4894
  • refactor(web): remove unused logrocket by @scopsy in https://github.com/novuhq/novu/pull/4924
  • fix: shutdown server on worker not enabled with pm2 by @scopsy in https://github.com/novuhq/novu/pull/4926
  • feat(app-gen, worker): Add MetricsService by @rifont in https://github.com/novuhq/novu/pull/4928
  • refactor(worker): singleton queue and fix inject issues with queues and workers by @scopsy in https://github.com/novuhq/novu/pull/4929
  • fix(worker): addressing type backward compatibility by @djabarovgeorge in https://github.com/novuhq/novu/pull/4934
  • feat: add update merged digest flag by @djabarovgeorge in https://github.com/novuhq/novu/pull/4917
  • fix(worker): Properly Unescape Button Templates (fixes #4851) by @JoeyEamigh in https://github.com/novuhq/novu/pull/4852
  • fix(sdk): Make node sdk topic ITopicPayload types required by @peoray in https://github.com/novuhq/novu/pull/4931
  • chore(providers): Upgrade vonage sdk to latest version by @sr-26 in https://github.com/novuhq/novu/pull/4937
  • chore(providers,root,api): update axios version to latest - NV-3179 by @scopsy in https://github.com/novuhq/novu/pull/4925
  • fix(worker): inbound parse worker initialize by @djabarovgeorge in https://github.com/novuhq/novu/pull/4938
  • style(web): Fix add tenant button location by @nick2432 in https://github.com/novuhq/novu/pull/4935
  • fix(api): hide create environment api by @jainpawan21 in https://github.com/novuhq/novu/pull/4914
  • chore(providers): Update axios versions by @scopsy in https://github.com/novuhq/novu/pull/4940
  • chore(providers): Update provider packages for older axios versions by @scopsy in https://github.com/novuhq/novu/pull/4942
  • chore(deps): bump tj-actions/branch-names from 5.2 to 7.0.7 in /.github/workflows by @dependabot in https://github.com/novuhq/novu/pull/4948

New Contributors

  • @cherfia made their first contribution in https://github.com/novuhq/novu/pull/4652
  • @firassziedan made their first contribution in https://github.com/novuhq/novu/pull/4149
  • @sachin-duhan made their first contribution in https://github.com/novuhq/novu/pull/4672
  • @tvermaashutosh made their first contribution in https://github.com/novuhq/novu/pull/4666
  • @ruhani2 made their first contribution in https://github.com/novuhq/novu/pull/4688
  • @Khongchai made their first contribution in https://github.com/novuhq/novu/pull/4590
  • @git-create-devben made their first contribution in https://github.com/novuhq/novu/pull/4721
  • @princerajpoot20 made their first contribution in https://github.com/novuhq/novu/pull/4732
  • @im-perativa made their first contribution in https://github.com/novuhq/novu/pull/4704
  • @rannn505 made their first contribution in https://github.com/novuhq/novu/pull/4752
  • @Dhoni77 made their first contribution in https://github.com/novuhq/novu/pull/4595
  • @his-maj-esty made their first contribution in https://github.com/novuhq/novu/pull/4609
  • @rohitkbc made their first contribution in https://github.com/novuhq/novu/pull/4323
  • @danidee10 made their first contribution in https://github.com/novuhq/novu/pull/3964
  • @iknlaxmi made their first contribution in https://github.com/novuhq/novu/pull/4781
  • @king-11 made their first contribution in https://github.com/novuhq/novu/pull/4697
  • @tquocanvn made their first contribution in https://github.com/novuhq/novu/pull/4761
  • @vikaspatil0021 made their first contribution in https://github.com/novuhq/novu/pull/4692
  • @Gaurav0493 made their first contribution in https://github.com/novuhq/novu/pull/4358
  • @vichustephen made their first contribution in https://github.com/novuhq/novu/pull/4894
  • @nick2432 made their first contribution in https://github.com/novuhq/novu/pull/4935

Full Changelog: https://github.com/novuhq/novu/compare/v0.21.0...v0.22.0

- TypeScript
Published by LetItRock about 2 years ago

novu - v0.21.0

TL;DR: All you need to know about the latest Novu 0.21.0 release. Removal of the multi-providers feature flag, @novu/notification-center-angular package now supports Angular projects of version 15 and higher, new Actor system variables, Brand Logo Management, Organization APIs and more.

0.21 Release Updates

We're thrilled to announce the newest features in our most recent release. Let's get started and explore what's waiting for you!

giphy_(47)

Removal of the multi-providers Feature Flag

In this release, we are excited to announce the removal of the multi-providers feature flag. This feature was previously disabled by default to ensure backward compatibility.

Action Required for Upgrading

To upgrade to this new version, you will need to follow these steps:

  1. Run Migration Script for Creating primary and priority Fields: You can access the migration script for creating primary and priority fields by clicking here.

    ```jsx // apps/api/package.json

    "migration": "cross-env NODE_ENV=local MIGRATION=true ts-node --transpileOnly ./migrations/integration-scheme-update/add-primary-priority-migration.ts", ```

    bash cd apps/api npm run migration

  2. Run Migration Script for Updating Novu Integrations: To update Novu integrations, you'll need to execute the migration script available here.

    ```jsx // apps/api/package.json

    "migration": "cross-env NODE_ENV=local MIGRATION=true ts-node --transpileOnly ./migrations/integration-scheme-update/update-primary-for-disabled-novu-integrations.ts", ```

    bash cd apps/api npm run migration

By following these steps, you can smoothly upgrade to the latest version of our software and enjoy the benefits of the multi-providers feature flag removal. If you encounter any issues during the upgrade process, please don't hesitate to reach out to our support team for assistance.

PR Details:

chore(web): Remove multi-provider feature flag by @rifont in https://github.com/novuhq/novu/pull/4402

Notification Center Angular

Starting with this release, the @novu/notification-center-angular package now supports Angular projects of version 15 and higher.

Previously, it had a limitation only for Angular version 15.

PR Details:

feat(notification-center-angular): Support Angular versions 15+ by @rifont in https://github.com/novuhq/novu/pull/4518

Actor System Variables

In this release, we've introduced a new Actor system variables. These system variables can now be utilized within any channel editor, enhancing flexibility and customization.

  • You can now leverage actor system variables in your channel editors.

Screenshot_2023-10-27_at_15 28 34

  • When setting up a "Run a Test" Trigger, the application will prompt the user to provide actor information.

Screenshot_2023-10-27_at_15 29 43

This addition lets you incorporate dynamic actor information in your channel configurations, making your workflows more versatile and adaptable.

PR Details:

feat: add actor to system variables by @ainouzgali in https://github.com/novuhq/novu/pull/4278

Brand Logo Management

This release introduces a new functionality that allows you to update or remove your brand logo seamlessly.

  • Update Brand Logo: You can now easily replace your existing brand logo with a new one, giving your application a fresh look.
  • Remove Brand Logo: If you prefer a cleaner interface, you have the option to remove the brand logo altogether.

Screenshot_2023-10-27_at_15 34 27

These brand logo management capabilities give you greater control over your application's visual identity. Customize your branding effortlessly and tailor it to your specific needs.

PR Details:

feat: add ability to remove uploaded brand logo by @michaldziuba03 in https://github.com/novuhq/novu/pull/4451

New Provider: Pushpad

We are excited to introduce a new integration with Pushpad in this release.

You can learn more about this provider here.

PR Details:

  • feat: add Pushpad provider for web push notifications by @collimarco in https://github.com/novuhq/novu/pull/4235

Screenshot_2023-10-27_at_15 39 53

Organization APIs Enhancement

In this release, we've introduced a significant enhancement - the Organization APIs. You can now harness the power of these APIs to manage their organizations efficiently, handle member listings, removals, and even update branding seamlessly.

  • Manage Organizations: With the Organization APIs, clients gain full control over their organization's settings and configurations.
  • List and Remove Members: Easily access and manipulate the list of organization members, allowing for efficient membership management.
  • Branding Updates: Organizations can now update their branding effortlessly using these APIs, ensuring consistent and up-to-date branding across the board.
  • Member Invitations: For inviting new members, we've introduced a separate endpoint POST /invites, simplifying the process of expanding your organization.

Screenshot_2023-10-27_at_15 46 40

PR Details:

  • fix: organization apis are accessible through api key by @jainpawan21 in https://github.com/novuhq/novu/pull/4619

Notable changes

  • chore: dependencies security vulnerability fix by @scopsy in https://github.com/novuhq/novu/pull/4532
  • Add Trigger Identifier to the Subscriber Preferences response by @djabarovgeorge in https://github.com/novuhq/novu/pull/4559
  • fix(api): Cancel all jobs related to a transactionId from the 'cancel' method by @scopsy in https://github.com/novuhq/novu/pull/4616

What's Changed

  • feat: Update Cypress to the latest version by @ayushshukla7777 in https://github.com/novuhq/novu/pull/4519
  • added Typescript docs by @krishvsoni in https://github.com/novuhq/novu/pull/4525
  • Update README.md by @Shivam250702 in https://github.com/novuhq/novu/pull/4520
  • Update nodemon version by @scopsy in https://github.com/novuhq/novu/pull/4227
  • Fix: visual bug on plus button in editor by @Akhilbisht798 in https://github.com/novuhq/novu/pull/4444
  • fix: Bug fixed for add filter button in production by @sjcode99 in https://github.com/novuhq/novu/pull/4284
  • docs: fix typo in docker/kubernetes/helm/README.md by @suravshrestha in https://github.com/novuhq/novu/pull/4510
  • docs: fix typo in packages/node/README.md by @suravshrestha in https://github.com/novuhq/novu/pull/4509
  • PNPM upgrade by @scopsy in https://github.com/novuhq/novu/pull/4528
  • fix: cypress parallel by @scopsy in https://github.com/novuhq/novu/pull/4530
  • chore: Updated Mocha to 10.2.0 by @ayushshukla7777 in https://github.com/novuhq/novu/pull/4536
  • fix(worker): self hosted metrics services were not shutdown properly by @p-fernandez in https://github.com/novuhq/novu/pull/4514
  • fix/docs: update README component links by @nick-w-nick in https://github.com/novuhq/novu/pull/4389
  • chore(deps): update dependency inquirer to v8.2.6 by @renovate in https://github.com/novuhq/novu/pull/4548
  • fix(server): made entire reactangle clickable rather than arro only by @AnshuPathak-88825 in https://github.com/novuhq/novu/pull/4535
  • chore(deps): update microsoft/pr-metrics action to v1.5.7 by @renovate in https://github.com/novuhq/novu/pull/4549
  • fix: so get environment is not shown in swagger by @davidsoderberg in https://github.com/novuhq/novu/pull/4490
  • style: update log message to better reflect context by @scopsy in https://github.com/novuhq/novu/pull/4555
  • Feat : add readiness health check retry by @djabarovgeorge in https://github.com/novuhq/novu/pull/4475
  • ♻️ Refactor Create Queue Health Indicator by @djabarovgeorge in https://github.com/novuhq/novu/pull/4513
  • fix(infra): some pnpm workspace improv for dev flow by @p-fernandez in https://github.com/novuhq/novu/pull/454
  • redis docs by @krishvsoni in https://github.com/novuhq/novu/pull/4578
  • fix: updated the print-affected-array script after updating the nx by @LetItRock in https://github.com/novuhq/novu/pull/4576
  • Update README.md by @Emmarie-Ahtunan in https://github.com/novuhq/novu/pull/4600
  • Added words for Kannada language translation and also changed the language code by @Atharva1723 in https://github.com/novuhq/novu/pull/4598
  • fix: Added Warning and Error icons to Worlflow settings component by @rayy40 in https://github.com/novuhq/novu/pull/4413
  • Fix icon overlapping by @sudhanshugautam2911 in https://github.com/novuhq/novu/pull/4574
  • fix: change custom data type and add test in node sdk by @jainpawan21 in https://github.com/novuhq/novu/pull/450
  • docs: Corrected all the grammatical errors and typos in README.md by @alienishi in https://github.com/novuhq/novu/pull/4615
  • fix: sender name in mandrill provider by @emersonliuuu in https://github.com/novuhq/novu/pull/4568
  • fix: changed the logout icon from a trash to that of a log out icon by @maverox in https://github.com/novuhq/novu/pull/4239
  • docs(notification-center-vue): Fix repository url by @rifont in https://github.com/novuhq/novu/pull/4626
  • fix(api): integration removal organization context by @scopsy in https://github.com/novuhq/novu/pull/4629
  • fix: Focus popover while hovering over card step by @SarmadKhoja95 in https://github.com/novuhq/novu/pull/4292
  • Fix the kebab-case for css properties warning by @sagnik3788 in https://github.com/novuhq/novu/pull/4301
  • fix: first-child replaced with first-of-type due to SSR warning by @UzairNoman in https://github.com/novuhq/novu/pull/4298
  • Nv 2885 extract the design system into a separate package by @davidsoderberg in https://github.com/novuhq/novu/pull/4539
  • refactor: replace findby id with findone by @scopsy in https://github.com/novuhq/novu/pull/4632
  • feat(provider): Add Ryver Chat Provider for Ticket #4370 by @vishalkhoje in https://github.com/novuhq/novu/pull/447
  • feat(provider): bandwidth SMS provider added by @parveshsaini in https://github.com/novuhq/novu/pull/4551
  • feat: add template id support in mailersend by @jainpawan21 in https://github.com/novuhq/novu/pull/4631
  • feat(shared): tidy up filters operators to reuse in events broadcast by @p-fernandez in https://github.com/novuhq/novu/pull/4648
  • Added a typescript file for the Georgian Language by @Atharva1723 in https://github.com/novuhq/novu/pull/4611
  • Enhanced Security Contact Information by @Arcturus22 in https://github.com/novuhq/novu/pull/4651

New Contributors

  • @ayushshukla7777 made their first contribution in https://github.com/novuhq/novu/pull/4519
  • @Shivam250702 made their first contribution in https://github.com/novuhq/novu/pull/4520
  • @Akhilbisht798 made their first contribution in https://github.com/novuhq/novu/pull/4444
  • @sjcode99 made their first contribution in https://github.com/novuhq/novu/pull/4284
  • @suravshrestha made their first contribution in https://github.com/novuhq/novu/pull/4510
  • @AnshuPathak-88825 made their first contribution in https://github.com/novuhq/novu/pull/4535
  • @Emmarie-Ahtunan made their first contribution in https://github.com/novuhq/novu/pull/4600
  • @Atharva1723 made their first contribution in https://github.com/novuhq/novu/pull/4598
  • @rayy40 made their first contribution in https://github.com/novuhq/novu/pull/4413
  • @sudhanshugautam2911 made their first contribution in https://github.com/novuhq/novu/pull/4574
  • @alienishi made their first contribution in https://github.com/novuhq/novu/pull/4615
  • @emersonliuuu made their first contribution in https://github.com/novuhq/novu/pull/4568
  • @maverox made their first contribution in https://github.com/novuhq/novu/pull/4239
  • @SarmadKhoja95 made their first contribution in https://github.com/novuhq/novu/pull/4292
  • @sagnik3788 made their first contribution in https://github.com/novuhq/novu/pull/4301
  • @UzairNoman made their first contribution in https://github.com/novuhq/novu/pull/4298
  • @collimarco made their first contribution in https://github.com/novuhq/novu/pull/4235

Full Changelog: https://github.com/novuhq/novu/compare/v0.20.0...v0.21.0

- TypeScript
Published by LetItRock about 2 years ago

novu - v0.20.0

What’s new in Novu 0.20?

TL;DR: All you need to know about the latest Novu 0.20.0 release. Global User Preferences, Integrations conditions, Digest and delay filters and more!

0.20 Release Updates

We're thrilled to announce the newest features in our most recent release. Let's get started and explore what's waiting for you!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jxs3nc6jp6abbjvis8i.gif

Global Channel Preferences for Subscribers API

It's now possible to set subscriber preferences globally for either a particular channel or all channels via API.

I'm really stoked about this because before now it was only available per workflow, /:subscriberId/preferences/:templateId

With these API URLs, you can fetch and update global subscriber preferences.

  • PATCH /subscribers/:subscriberid/preference - Update a subscriber preference globally.
  • GET /subscribers/:subscriberid/preferences/global - Fetch a subscriber preference globally.

Note: These methods are also available in the NodeJS SDK. They will be available in other language SDKs very soon.

If you're using the Headless service and Notification Center Widgets, you can set or fetch via the following APIs:

  • widgets/preferences - PATCH : Update subscriber preferences globally

```jsx {

"enabled": true,
"preferences": [
    {
        "type": "in_app",
        "enabled": true
    },
    {
        "type": "email",
        "enabled": false
    }
]

}

```

  • widgets/preferences/global - GET : Fetch subscriber preferences globally.

The exposed methods from the widgets are:

  • fetchUserGlobalPrereferences
  • updateUserGlobalPreferences

Note: If a workflow is marked as critical, the subscriber global preferences will be ignored, and notifications will be sent.

Filters Usage in Digest and Delay Nodes

Users can now add filters to the digest and delay nodes inside the workflow editor to dynamically control if a digest should be used or not.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g1l0dao60xd7eixps56r.png

Digest Node: Adding filter

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8epc6ew33s9accvtmjzm.png

Delay Node: Adding filter

Improved Error Messages In The Workflow Editor

We have improved the error icons and states for each node in the workflow, when no provider is connected or not configured.

SMS & Email Custom Data Overrides

We now support adding custom data in email overrides as shown below:

```jsx import { Novu } from '@novu/node';

const novu = new Novu('');

await novu.subscribers.trigger("workflowIdentifier", { to: "subscriberId", payload: { customKey: "customValue", }, overrides: { email: { from: "support@novu.co", // customData will work only for sendgrid customData: { "customKey": "customValue" } } } }

```

Email Custom Data overrides

Note: This works for Sendgrid only at the moment.

You can override sms values via the code below.

jsx ... ... await novu.subscribers.trigger("workflowIdentifier", { to: "subscriberId", payload: { customKey: "customValue", }, overrides: { sms: { to: "<insert-phone-number>", content: "<insert-content>" } } }

SMS Overrides

Enabling The Addition of Conditions to Integrations

Users can now create conditions for the channel integrations to be executed for specific tenants only.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4j4ioad8tjqljy3qzqx.png

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o187yxcsmtgfgq7a7gyp.png

In the image above, you can add the condition (to an integration) to state that the integration should be used if the tenant identifier used in trigger matches the tenant identifier set here.

Note: The integrations are the provider instances on the Integration store dashboard.

When Novu runs a trigger code with a tenant Identifier attached to it like so:

```jsx import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVUAPIKEY);

await novu.trigger('', { to: { subscriberId: '', email: 'john@doemail.com', }, tenant: "tenantIdentifier" } );

```

..Novu runs checks on the integrations in the Integration store to determine which integration matches to be used to send the notification based on any condition that has been set. If nothing was set, it defaults to the primary provider set for the channel used in the workflow.

Mailtrap Email Provider Integration

Now, you can use the Mailtrap Email provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fb9pmn5xu3ep6f8lcpq3.png

Clicksend SMS Provider Integration

Now, you can use the Clicksend SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1f5154c9alnn4aqollxl.png

All Changes

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.19.0...v0.20.0

- TypeScript
Published by LetItRock about 2 years ago

novu - v0.19.0

What’s new in Novu 0.19?

TL;DR: All you need to know about the latest Novu 0.19.0 release. Multi-tenancy management, bulk subscriber creation, override layouts and more!

0.19 Release Updates

We're eager to showcase the latest features in our most recent release. Let's dive in and discover what's in store for you!

giphy (2) (1)

Multi-tenancy Management

We are stoked to let you know that you can now manage tenants from the UI (Novu’s dashboard) and the API.

tenants-management (1)

Self-hosted users need to add and turn on the IS_MULTI_TENANCY_ENABLED env flag to be able to manage tenants in their Novu installation.

Tenants Usage in Workflows as Variables

With tenants feature now generally available, there are different ways you’ll be able to use it in your app depending on your use case.

One of those ways is using it as variables in your workflows and triggers. When triggering a notification using the events trigger endpoint, you can pass in a tenant property as a parameter like so:

```jsx import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVUAPIKEY);

await novu.trigger('', { to: { subscriberId: '', email: 'john@doemail.com', firstName: 'John', lastName: 'Doe', }, payload: { name: "Hello World", organization: { logo: 'https://happycorp.com/logo.png', }, }, actor: "actorId" tenant: "tenantIdentifier" } ); ```

passing in tenant property when triggering a notification

The tenant can also be accessed in a workflow template like so:

jsx {{ tenant.data.logo }}

accessing tenant properties in a workflow

Bulk Subscriber Creation

This release also ships the wildly requested “bulk subscriber creation.” Starting v0.19, you’ll be able to create subscribers in bulk (up to 500 at once) using an API endpoint.

Note: The bulk API is limited to 500 subscribers per request.

jsx await novu.subscribers.bulkCreate([ { subscriberId: 'test-subscriber-1', email: 'test-user@sd.com', firstName: 'subscriber-1', lastName: 'test-1', }, { subscriberId: 'test-subscriber-2', email: 'test-user-2@sd.com', firstName: 'subscriber-2', lastName: 'test-2', }, { subscriberId: 'test-subscriber-3', }, ]);

Addition of Tags in Workflow Settings

We have added the ability to use tags in the workflow settings screen.

This change allows use cases where you need to group multiple workflows under the same tag, and then use it to filter subscriber preferences for example.

taggs-workflow-settings (1)

Allow Override layout On Trigger

To override your assigned layout during a trigger event use the layoutIdentifier property, the layout specified will be used for all emails in the context of that trigger event.

```jsx import { Novu } from '@novu/node';

const novu = new Novu('');

novu.trigger('workflow-identifier', { to: { subscriberId: '...', }, payload: { attachments: [ { file: fs.readFileSync(__dirname + '/data/test.jpeg'), name: 'test.jpeg', mime: 'image/jpg', }, ], }, overrides: { layoutIdentifier: 'your-layout-identifier', }, });

```

Show Primary Providers on Workflow Nodes

Now you can see the primary provider of a channel in the nodes that show on the workflow editor. This gives you more context and better identification without extra clicks!

Screenshot 2023-09-11 at 16 11 03

Enhanced Workflow Nodes Misconfiguration Error

Nodes and workflows will now display mis-configured workflows on the dashboard like so:

Screenshot 2023-09-11 at 16 20 25

All changes

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.18.0...v0.19.0

- TypeScript
Published by scopsy over 2 years ago

novu - v0.18.0

What’s new in Novu 0.18?

TL;DR: All you need to know about the latest Novu 0.18.0 release. General Layout design, multi-provider configuration and more!

0.18 Release Updates

We're excited to unveil the freshest developments in our latest release. Let's plunge right in and uncover what awaits you!

General Layout Design

We have refreshed the layout design to accommodate and provide a foundation for a lot of upcoming future updates regarding the navigation stack and general usability of the system.

Multi-provider Configuration

In the last update, I mentioned that Novu now supports multiple providers.

Now you can specify who should be the primary provider when you have multiple providers for a particular channel for a given environment. As mentioned in the last release, you can programmatically call a provider identifier during a trigger event.

jsx await novu.trigger("<workflow_trigger_id>", { to: {...}, payload: {...}, overrides: { email: { integrationIdentifier: 'the identifier"} , sms: { integrationIdentifier: 'the identifier"} } });

Migration for Self-hosted Novu Users - BREAKING CHANGE

A migration needs to be run prior to the new version update:

```bash cd apps/api npm run migration:primary-provider

.env file in apps/api/src/.env should have a MONGO_URL pointing to your deployment

```

Plunk Email Provider Integration

Now, you can use the Plunk Email provider on Novu.

Screenshot 2023-08-24 at 11 28 47

All changes

  • [New Email Provider]: Add Plunk email provider by @toyosi12 in https://github.com/novuhq/novu/pull/3787
  • feat: add sort by handlebar helper by @jainpawan21 in https://github.com/novuhq/novu/pull/3935
  • feat: create novu providers when organization is created by @davidsoderberg in https://github.com/novuhq/novu/pull/3843
  • feat: add tenants route and shell page component by @djabarovgeorge in https://github.com/novuhq/novu/pull/3847
  • NV-2601 - Add support in the client for tenant feature by @djabarovgeorge in https://github.com/novuhq/novu/pull/3846
  • feat: add initial tenants ui by @djabarovgeorge in https://github.com/novuhq/novu/pull/3855
  • Nv 2612 - Tenant Page Empty State by @djabarovgeorge in https://github.com/novuhq/novu/pull/3857
  • chore(notification-center,node,shared): update the axios to latest version by @LetItRock in https://github.com/novuhq/novu/pull/3861
  • fix: remove version 17 info in cookbook by @jainpawan21 in https://github.com/novuhq/novu/pull/3862
  • fix(app-generic): adding context and information for logs for debugging by @p-fernandez in https://github.com/novuhq/novu/pull/3865
  • NV 2613 - Tenant Page Pagination by @djabarovgeorge in https://github.com/novuhq/novu/pull/3859
  • feat: remove get novu integration usecase by @davidsoderberg in https://github.com/novuhq/novu/pull/3852
  • fix: so activating a provider deactivates novu provider by @davidsoderberg in https://github.com/novuhq/novu/pull/3871
  • feat: remove novu providers for select provider by @davidsoderberg in https://github.com/novuhq/novu/pull/3867
  • chore(*): remove gitHead field from all packages by @marvinjude in https://github.com/novuhq/novu/pull/3868
  • NV 2602 - Hide Tenant functionality under the feature flag by @djabarovgeorge in https://github.com/novuhq/novu/pull/3860
  • Fix broken link by @toyosi12 in https://github.com/novuhq/novu/pull/3874
  • fix: allow return 'data' as response prop by @djabarovgeorge in https://github.com/novuhq/novu/pull/3876
  • feat: add subscriber migration dotnet code by @jainpawan21 in https://github.com/novuhq/novu/pull/3878
  • Nv 2452 tenant create + update a tenant sidebar by @ainouzgali in https://github.com/novuhq/novu/pull/3863
  • test: fix failing test because of a run on same day by @ainouzgali in https://github.com/novuhq/novu/pull/3882
  • feat: add delete item and name fields for novu providers by @davidsoderberg in https://github.com/novuhq/novu/pull/3864
  • feat: add tenant page tests by @djabarovgeorge in https://github.com/novuhq/novu/pull/3877
  • Stacked PR's Branch for Tenants Support by @djabarovgeorge in https://github.com/novuhq/novu/pull/3889
  • chore: update cypress version due to security update by @scopsy in https://github.com/novuhq/novu/pull/3891
  • feat: add migration script to add novu providers to database by @davidsoderberg in https://github.com/novuhq/novu/pull/3886
  • feat: add few versions fields in bug template by @jainpawan21 in https://github.com/novuhq/novu/pull/3906
  • chore: update dependencies with security issues by @scopsy in https://github.com/novuhq/novu/pull/3901
  • fix(app-generic): circular dependency on subscriber pref use cases by @p-fernandez in https://github.com/novuhq/novu/pull/3907
  • feat: add hover state for provider item by @davidsoderberg in https://github.com/novuhq/novu/pull/3903
  • fix: add identifier in migration script for novu providers by @davidsoderberg in https://github.com/novuhq/novu/pull/3904
  • feat: make identifier labels consistent by @davidsoderberg in https://github.com/novuhq/novu/pull/3900
  • chore(deps): update pnpm to v7.33.4 [security] by @renovate in https://github.com/novuhq/novu/pull/3896
  • fix: getContextPath did not work correctly when called in a browser by @DaveAtKeelvar in https://github.com/novuhq/novu/pull/3814
  • Nv 2503 store novu providers email sms in the database by @davidsoderberg in https://github.com/novuhq/novu/pull/3898
  • Nv 2588 multi provider multiple in app instances can be created by @davidsoderberg in https://github.com/novuhq/novu/pull/3910
  • feat: render html in in app preview by @davidsoderberg in https://github.com/novuhq/novu/pull/3913
  • feat: fix cursors for drag buttons and drop area by @davidsoderberg in https://github.com/novuhq/novu/pull/3922
  • fix: fix update of digest jobs only for current subscriber by @ainouzgali in https://github.com/novuhq/novu/pull/3912
  • feat(app-generic): add log for subscriber not processed when trigger by @p-fernandez in https://github.com/novuhq/novu/pull/3924
  • Configure Email provider warning when Novu email provider is active by @djabarovgeorge in https://github.com/novuhq/novu/pull/3908
  • feat: disable role toggle by @djabarovgeorge in https://github.com/novuhq/novu/pull/3929
  • fix: icons on the digest playground and in-app sandbox by @BiswaViraj in https://github.com/novuhq/novu/pull/3933
  • feat(ws): create unit test suite by @p-fernandez in https://github.com/novuhq/novu/pull/3921
  • New Layout by @BiswaViraj in https://github.com/novuhq/novu/pull/3880
  • Allow storing custom metadata on the workflow entity by @djabarovgeorge in https://github.com/novuhq/novu/pull/3890
  • feat(tests): add tests for worker and queue services by @p-fernandez in https://github.com/novuhq/novu/pull/3936
  • feat(web): select primary integration modal by @LetItRock in https://github.com/novuhq/novu/pull/3869
  • feat(api): set integration as primary and priority system by @LetItRock in https://github.com/novuhq/novu/pull/3873
  • chore(api): migration script for primary and priority integration fields by @LetItRock in https://github.com/novuhq/novu/pull/3875
  • feat(app-generic): add test for add job use case to check the injected queue service by @p-fernandez in https://github.com/novuhq/novu/pull/3941
  • feat(app-generic): revome queue and worker hardcoded names by @p-fernandez in https://github.com/novuhq/novu/pull/3940
  • feat(api): notifications feed filtering by partial payload object by @LetItRock in https://github.com/novuhq/novu/pull/3939
  • feat: get execution details endpoint by external subscriber id by @ainouzgali in https://github.com/novuhq/novu/pull/3945
  • NV-2664 - Query count change only is the subscriber have connection. by @djabarovgeorge in https://github.com/novuhq/novu/pull/3937
  • fix(web): fixed env switch popover issue by @LetItRock in https://github.com/novuhq/novu/pull/3953
  • fix(web): general app layout updates for small and bigger screens by @LetItRock in https://github.com/novuhq/novu/pull/3949

New Contributors

  • @toyosi12 made their first contribution in https://github.com/novuhq/novu/pull/3787
  • @marvinjude made their first contribution in https://github.com/novuhq/novu/pull/3868
  • @DaveAtKeelvar made their first contribution in https://github.com/novuhq/novu/pull/3814

Full Changelog: https://github.com/novuhq/novu/compare/v0.17.2...v0.18.0

- TypeScript
Published by scopsy over 2 years ago

novu - v0.17.1 - Release

What’s new in Novu 0.17.1?

TL;DR: All you need to know about the latest Novu 0.17.1 release. Multi-provider Integration support, Multi-tenancy support, cookbook, notification center updates and more!

0.17.1 Release Updates

We're excited to unveil the freshest developments in our latest release. Let's plunge right in and uncover what awaits you! image

Multi-provider Integration Support (BETA)

Now you can connect multiple providers per channel and make them active. This feature is currently in beta.

We also redesigned the Integrations store page to make it more intuitive in selecting & enabling channel providers.

image

With this feature, you can now do the following:

Specify the provider you want when triggering notifications. Add the integrationIdentifier to the overrides object for the specific channel.

``` await novu.trigger("", { to: {...}, payload: {...}, overrides: { email: { integrationIdentifier: 'the identifier"} , sms: { integrationIdentifier: 'the identifier"} }

```

If you're self-hosting Novu, you'll need to pass the env flag, IS_MULTI_PROVIDER_CONFIGURATION_ENABLED to all services.

Note: In the nearest future, you will be allowed to select a provider based on a tenant and other execution conditions.

Multi-tenancy Support (BETA)

We've been hard at work building the base flow, API and processes to support multi-tenancy. This feature is currently in beta testing. It will become generally available in the next release.

Delete Provider Credentials API

We have added support to delete a provider credentials via an API endpoint

PR here for reference

Remove All Messages In Notification Center Widget & Headless Service

The Notification Center widget allows users to see all notification messages. Before now, you can only delete messages one after the other.

There are a few notable updates:

  • We have added a useRemoveAllNotification hook in the React Notification Center widget. You can remove all notifications from a feed or entirely!
  • We have also added a removeAllNotifications method to the headless service.

Additional Handlebar helpers

We have added a unique and groupBy handlebar helpers.

  • unique: To remove duplicates in array iteration

``` {{#each (unique names "name")}} --{{this}}--- {{/each}}

```

  • groupBy: To group array values by property

``` {{#each (groupBy names "name")}}

{{key}}

{{#each items}} {{age}}- {{/each}} {{/each}}

```

Notification Feed Page Size Changes (BREAKING CHANGE)

By default, the notification feed page will return 100 notifications and return a hasMore field if more than 100 notifications exist.

Activity Feed & Subscriber API Changes (BREAKING CHANGE)

The Activity Feed & Subscriber API will no longer return totalCount. Due to performance optimizations, they will return a hasMore boolean flag in cases where there are more results to fetch.

listenNotificationReceive in Headless Service.

We have added a new function, listenNotificationRecieve, to listen to when a new notification comes in!

It can be used to retrieve a new notification in real-time and trigger UI changes.

``` headlessService.listenNotificationReceive({ listener: (message: IMessage) => { console.log(JSON.stringify(message)); }, });

```

Sendchamp SMS Provider Integration

Now, you can use the Sendchamp SMS provider on Novu.

image

Update on Workers

Workers will now wait for health check to pass before accepting jobs to process, and will perform a graceful shutdown on a terminate signal received by the service manager.

Docs, Cookbook & Guides

We currently offer quickstart guides for a wide range of major languages and technologies. Feel free to explore these guides to swiftly begin your projects in your preferred programming language.

We have added a Cookbook section to our docs to provide recipes on common tasks.

All Changes

  • fix: add delete provider credentials endpoint by @jainpawan21 in https://github.com/novuhq/novu/pull/3516
  • feat: add remove all messages endpoint in widget by @jainpawan21 in https://github.com/novuhq/novu/pull/3523
  • feat: add transactionId filter in get messages by @jainpawan21 in https://github.com/novuhq/novu/pull/3619
  • feat: add ip pool override for sendgrid by @djabarovgeorge in https://github.com/novuhq/novu/pull/3646
  • feat: add removeAllMessages function in react nc by @jainpawan21 in https://github.com/novuhq/novu/pull/3643
  • feat: add unique handlebar helper by @jainpawan21 in https://github.com/novuhq/novu/pull/3717
  • feat: add group by handlebar helper by @jainpawan21 in https://github.com/novuhq/novu/pull/3749
  • Nv 2405 workflows crud controller by @BiswaViraj in https://github.com/novuhq/novu/pull/3745
  • fix: add mark message read method in node sdk by @jainpawan21 in https://github.com/novuhq/novu/pull/3807
  • feat(headless): add listen to notification_received in headless service by @iv-stpn in https://github.com/novuhq/novu/pull/3834
  • BREAKING: Default notification feed page size is changed to 100, and will return a hasMore field if more than 100 notifications exist @davidsoderberg in https://github.com/novuhq/novu/pull/3631
  • BREAKING: Due to performance optimizations Activity feed and subscriber API, will no return totalCount, but a hasMore boolean flag in case there are more results to fetch.
  • Nv 2578 add removeallnotifications method in headless package by @BiswaViraj in https://github.com/novuhq/novu/pull/3829
  • chore(deps): update react monorepo by @renovate in https://github.com/novuhq/novu/pull/3605
  • feat(infra): pause workers in bootstrap until queues are ready by @p-fernandez in https://github.com/novuhq/novu/pull/3396
  • fix: Update Subscribers API allowing null by @jayavardhan3112 in https://github.com/novuhq/novu/pull/3169
  • fix(deps): update dependency rxjs to v7.8.1 by @renovate in https://github.com/novuhq/novu/pull/3607
  • chore(deps): update react monorepo by @renovate in https://github.com/novuhq/novu/pull/3609
  • feat: add popular template by @djabarovgeorge in https://github.com/novuhq/novu/pull/3612
  • feat: add feature flag check for deactive integrations by @davidsoderberg in https://github.com/novuhq/novu/pull/3618
  • NV-2225 - 🐛 Bug Report: Visual bug - dual scroll in integration configuration modal by @gitstart in https://github.com/novuhq/novu/pull/3439
  • feat(notification-center): smaller bundle size by @LetItRock in https://github.com/novuhq/novu/pull/3621
  • feat(web): the table skeleton loading by @LetItRock in https://github.com/novuhq/novu/pull/3628
  • docs: Add Termii provider documentation by @peoray in https://github.com/novuhq/novu/pull/3635
  • NV-2457 - Create Tenant Repository by @djabarovgeorge in https://github.com/novuhq/novu/pull/3620
  • Nv 2458 - Add Tenant Create Usecase by @djabarovgeorge in https://github.com/novuhq/novu/pull/3623
  • NV 2459 - Get Tenant By ID Endpoint by @djabarovgeorge in https://github.com/novuhq/novu/pull/3629
  • feat(dal): update integration entity schema for multi provider by @p-fernandez in https://github.com/novuhq/novu/pull/3625
  • feat: add feature flag for multi-provider configuration by @davidsoderberg in https://github.com/novuhq/novu/pull/3617
  • Add IP Pool Name In Integration by @djabarovgeorge in https://github.com/novuhq/novu/pull/3647
  • fix: update how to add new provider docs by @jainpawan21 in https://github.com/novuhq/novu/pull/3653
  • 🐛 CreateNotificationJobCommand fix - update templateProviderIds Map to Record. by @djabarovgeorge in https://github.com/novuhq/novu/pull/3614
  • feat: refactor template preference logic by @djabarovgeorge in https://github.com/novuhq/novu/pull/3596
  • Add citation file for any academic research that uses Novu by @Cliftonz in https://github.com/novuhq/novu/pull/3652
  • fix(ci): debugging cypress by @p-fernandez in https://github.com/novuhq/novu/pull/3669
  • NV 2418 - Integration Selection Caching by @djabarovgeorge in https://github.com/novuhq/novu/pull/3666
  • Nv 2460 - Update Tenant Endpoint by @djabarovgeorge in https://github.com/novuhq/novu/pull/3638
  • Add better Uptime Annoucement for System issues by @Cliftonz in https://github.com/novuhq/novu/pull/3664
  • Reuse existing env variables that denotates cloud hosted instead of a new one by @Cliftonz in https://github.com/novuhq/novu/pull/3676
  • Adding github actions to assist PR management and SLAs by @Cliftonz in https://github.com/novuhq/novu/pull/3651
  • feat(web): integrations list page by @LetItRock in https://github.com/novuhq/novu/pull/3644
  • feat(api): update get integrations endpoints by @p-fernandez in https://github.com/novuhq/novu/pull/3650
  • feat: select integration usecase by @BiswaViraj in https://github.com/novuhq/novu/pull/3660
  • chore(web): use ismultiproviderconfigurationenabled feature flag by @LetItRock in https://github.com/novuhq/novu/pull/3654
  • feat(docs): Add Infobip SMS provider documentation by @peoray in https://github.com/novuhq/novu/pull/3636
  • NV 2461 - Delete Tenant Endpoint by @djabarovgeorge in https://github.com/novuhq/novu/pull/3639
  • NV 2466 - Get Tenant List by @djabarovgeorge in https://github.com/novuhq/novu/pull/3641
  • feat: add sort function for providers by @davidsoderberg in https://github.com/novuhq/novu/pull/3692
  • fix(deps): update dependency styled-components to v5.3.11 by @renovate in https://github.com/novuhq/novu/pull/3611
  • chore(deps): update commitlint monorepo to v17.6.6 by @renovate in https://github.com/novuhq/novu/pull/3694
  • chore(deps): update dependency @nestjs/cli to v9.5.0 by @renovate in https://github.com/novuhq/novu/pull/3695
  • chore(api,worker): use select integration usecase before we do a send by @LetItRock in https://github.com/novuhq/novu/pull/3662
  • Nv 2430 the update integration sidebar by @davidsoderberg in https://github.com/novuhq/novu/pull/3680
  • Nv 2426 the create integration sidebar by @ainouzgali in https://github.com/novuhq/novu/pull/3673
  • chore(api,worker): use feature flag when selecting the integration during the send phase by @LetItRock in https://github.com/novuhq/novu/pull/3677
  • feat: add logging and restart to docker compose by @harrisyn in https://github.com/novuhq/novu/pull/3697
  • feat(api): update the post, put integration endpoints to allow passing the name, identifier, skip passing credentials by @LetItRock in https://github.com/novuhq/novu/pull/3674
  • NV2402 - [STACKED PR's] Tenancy CRUD API by @djabarovgeorge in https://github.com/novuhq/novu/pull/3682
  • feat(web): integrations list page show novu integrations by @LetItRock in https://github.com/novuhq/novu/pull/3693
  • fix(notification-center): changed the popover prop name for the web-component by @LetItRock in https://github.com/novuhq/novu/pull/3712
  • feat: add integration scheme migration script by @djabarovgeorge in https://github.com/novuhq/novu/pull/3668
  • Update docusaurus.config.js by @iampearceman in https://github.com/novuhq/novu/pull/3721
  • feat: add name field to update sidebar by @ainouzgali in https://github.com/novuhq/novu/pull/3714
  • feat: search empty state by @ainouzgali in https://github.com/novuhq/novu/pull/3713
  • fix: aggregation of events by digest key, fix nested digest key by @ainouzgali in https://github.com/novuhq/novu/pull/3722
  • chore(api,worker): chat oauth flow allow to provide the integration identifier by @LetItRock in https://github.com/novuhq/novu/pull/3699
  • Nv 2431 integrate the create/update integration sidebar with api by @ainouzgali in https://github.com/novuhq/novu/pull/3705
  • fix: remove undefined ip pool name by @djabarovgeorge in https://github.com/novuhq/novu/pull/3735
  • fix: digest and delay values are reset to default values on update by @ainouzgali in https://github.com/novuhq/novu/pull/3734
  • fix(api): expose api keys only for current environment by @michaldziuba03 in https://github.com/novuhq/novu/pull/3640
  • fix: k8s component labels hard coded by @aexei in https://github.com/novuhq/novu/pull/3731
  • fix: helm values.yaml missing web endpoints by @aexei in https://github.com/novuhq/novu/pull/3732
  • fix: web deployment using wrong NODE_ENV by @aexei in https://github.com/novuhq/novu/pull/3733
  • format code with prettier by @deepsource-autofix in https://github.com/novuhq/novu/pull/3744
  • fix(worker): fixed the fcm data message issue with payload messed with additional data by @LetItRock in https://github.com/novuhq/novu/pull/3743
  • chore(deps): update dependency stylelint to v15 [security] by @renovate in https://github.com/novuhq/novu/pull/3748
  • fix: mark popover as deprecated by @jainpawan21 in https://github.com/novuhq/novu/pull/3752
  • feat(worker): store only minimal job info instead of full job by @p-fernandez in https://github.com/novuhq/novu/pull/3706
  • feat: Helm Repo by @aexei in https://github.com/novuhq/novu/pull/3730
  • chore(deps): update microsoft/pr-metrics action to v1.5.4 by @renovate in https://github.com/novuhq/novu/pull/3757
  • fix(worker): set the proper argument order in the logger error function by @p-fernandez in https://github.com/novuhq/novu/pull/3756
  • feat: add execution details item for the selected integration by @ainouzgali in https://github.com/novuhq/novu/pull/3754
  • fix(notification-center): remove storybook testing library by @p-fernandez in https://github.com/novuhq/novu/pull/3758
  • fix(deps): update dependency docusaurus-plugin-sass to v0.2.4 by @renovate in https://github.com/novuhq/novu/pull/3759
  • fix: add ITriggerOverrideExpo type by @birdgg in https://github.com/novuhq/novu/pull/3658
  • feat: add update sidebar for novu providers by @davidsoderberg in https://github.com/novuhq/novu/pull/3723
  • chore(deps): update dependency @vue/tsconfig to ^0.4.0 by @renovate in https://github.com/novuhq/novu/pull/3760
  • feat: add delete integration ui by @davidsoderberg in https://github.com/novuhq/novu/pull/3727
  • fix(notification-center-vue): revert the @vue/tsconfig lib update by @LetItRock in https://github.com/novuhq/novu/pull/3765
  • refactor: rename dtos to workflow, and other minor changes by @BiswaViraj in https://github.com/novuhq/novu/pull/3761
  • [NV-2437] bug - Union received device tokens by @djabarovgeorge in https://github.com/novuhq/novu/pull/3716
  • chore(deps): update dependency karma-chrome-launcher to ~3.2.0 by @renovate in https://github.com/novuhq/novu/pull/3762
  • feat(web): integrations sidebar for the novu in-app by @LetItRock in https://github.com/novuhq/novu/pull/3740
  • NV-2446 - 🐛 Bug Report: Workflows visual bug by @gitstart in https://github.com/novuhq/novu/pull/3630
  • feat(infra): consolidate usage of redis instance by bull-mq by @p-fernandez in https://github.com/novuhq/novu/pull/3772
  • fix: notification template dual state by @michaldziuba03 in https://github.com/novuhq/novu/pull/3642
  • Nv 2569 update provider instances display in the provider tab of the by @davidsoderberg in https://github.com/novuhq/novu/pull/3778
  • Content is changed in two sms steps with a delay in between. by @djabarovgeorge in https://github.com/novuhq/novu/pull/3780
  • fix(infra): provider generator should have version 0.16.3 by @p-fernandez in https://github.com/novuhq/novu/pull/3790
  • fix: node uses non existing endpoint by @ainouzgali in https://github.com/novuhq/novu/pull/3781
  • NV-2420 - Update the active integrations endpoint by @djabarovgeorge in https://github.com/novuhq/novu/pull/3681
  • fix: export TriggerRecipientsTypeEnum in Node.js SDK by @michaldziuba03 in https://github.com/novuhq/novu/pull/3795
  • fix(web,shared): added missing novu providers to the providers array by @LetItRock in https://github.com/novuhq/novu/pull/3774
  • fix: export missing enums in node sdk for create template by @jainpawan21 in https://github.com/novuhq/novu/pull/3793
  • NV-3571 - 🐛 Bug Report: tls options should be hidden when ignore tls has been selected and default value should be {}. by @gitstart in https://github.com/novuhq/novu/pull/3715
  • fix: webhook enabled if app is not self-hosted by @djabarovgeorge in https://github.com/novuhq/novu/pull/3782
  • Fix register error by @ainouzgali in https://github.com/novuhq/novu/pull/3804
  • feat(web): multi channel provider config - integrations list modal by @LetItRock in https://github.com/novuhq/novu/pull/3791
  • chore(web): integrations list sidebar e2e tests by @LetItRock in https://github.com/novuhq/novu/pull/3798
  • chore(web): email editor and preview show correct sender name by @LetItRock in https://github.com/novuhq/novu/pull/3801
  • fix(deps): update dependency mongoose to v6.11.3 [security] by @renovate in https://github.com/novuhq/novu/pull/3818
  • Docs next js quickstart update by @sumitsaurabh927 in https://github.com/novuhq/novu/pull/3799
  • Nv 2434 update workflow sets variables to default value by @ainouzgali in https://github.com/novuhq/novu/pull/3819
  • fix(api,application-generic): active integrations endpoint fixes by @LetItRock in https://github.com/novuhq/novu/pull/3809
  • fix: flaky test because first sms step was not being added by @ainouzgali in https://github.com/novuhq/novu/pull/3823
  • feat(app-generic): add cluster mode e2e tests for cache service by @p-fernandez in https://github.com/novuhq/novu/pull/3811
  • fix(web): intercom launcher floating button overflows the integrations sidebar by @LetItRock in https://github.com/novuhq/novu/pull/3821
  • fix: updated the types and onsuccess method by @BiswaViraj in https://github.com/novuhq/novu/pull/3824
  • test: skip failing test until we can control feature flag in worker by @ainouzgali in https://github.com/novuhq/novu/pull/3828
  • feat(provider): Add Sendchamp SMS provider integration by @peoray in https://github.com/novuhq/novu/pull/3656
  • chore(web): eslint react hook rules (part 1) by @LetItRock in https://github.com/novuhq/novu/pull/3816
  • feat(docs): Add sendchamp provider documentation by @peoray in https://github.com/novuhq/novu/pull/3719
  • Docs(chore): Add cookbook with few recipes by @unicodeveloper in https://github.com/novuhq/novu/pull/3837
  • fix: variable manager throwing error for array vars by @ainouzgali in https://github.com/novuhq/novu/pull/3822
  • Docs: Add Uml flow to Cookbook & Architecture pages by @unicodeveloper in https://github.com/novuhq/novu/pull/3841
  • refactor: remove duplicate code from renaming to workflow by @ainouzgali in https://github.com/novuhq/novu/pull/3838
  • fix: first update of in app with avatar not saved by @ainouzgali in https://github.com/novuhq/novu/pull/3815
  • feat(api,node): subscribers mark all messages as read, unread, seen or unseen by @LetItRock in https://github.com/novuhq/novu/pull/3832
  • chore(web): fixing eslint warnings for the react hooks rules - part 2 by @LetItRock in https://github.com/novuhq/novu/pull/3836
  • fix: error handling in nodejs sdk by @jainpawan21 in https://github.com/novuhq/novu/pull/3839
  • feat(docs): add quickstart section by @americano98 in https://github.com/novuhq/novu/pull/3830
  • fix: change markInAppMessageAs to markMessageAs by @jainpawan21 in https://github.com/novuhq/novu/pull/3848
  • feat: add subscriber migration page + script by @jainpawan21 in https://github.com/novuhq/novu/pull/3803
  • Update subscriber trigger payload by @scopsy in https://github.com/novuhq/novu/pull/3856
  • refactor: update asset by @BiswaViraj in https://github.com/novuhq/novu/pull/3853

New Contributors

  • @jayavardhan3112 made their first contribution in https://github.com/novuhq/novu/pull/3169
  • @harrisyn made their first contribution in https://github.com/novuhq/novu/pull/3697
  • @aexei made their first contribution in https://github.com/novuhq/novu/pull/3731
  • @birdgg made their first contribution in https://github.com/novuhq/novu/pull/3658
  • @iv-stpn made their first contribution in https://github.com/novuhq/novu/pull/3834

Full Changelog: https://github.com/novuhq/novu/compare/v0.16.4...v0.17.1

You can find the full changelog on GitHub.

- TypeScript
Published by scopsy over 2 years ago

novu - v0.16.4

What's Changed

  • fix: non existing endpoint and adding mark as read function by @ainouzgali in https://github.com/novuhq/novu/pull/3808
  • Update delay.md by @iampearceman in https://github.com/novuhq/novu/pull/3728
  • Add Kotlin Quickstart Guide by @mayorJAY in https://github.com/novuhq/novu/pull/3720
  • docs: add ruby quickstart documentation by @Eazybright in https://github.com/novuhq/novu/pull/3742
  • Update Quickstart Docs by @mayorJAY in https://github.com/novuhq/novu/pull/3746
  • refactor: change word array to object by @Eazybright in https://github.com/novuhq/novu/pull/3751
  • Update index.mdx by @scopsy in https://github.com/novuhq/novu/pull/3767
  • Remove attachments on last job execution only by @scopsy in https://github.com/novuhq/novu/pull/3768
  • dotnet guide by @benlin1994 in https://github.com/novuhq/novu/pull/3779
  • docs: add digest email guide by @sumitsaurabh927 in https://github.com/novuhq/novu/pull/3776
  • replace client with novu in dotnet quickstart by @benlin1994 in https://github.com/novuhq/novu/pull/3805
  • Docs react component section update by @sumitsaurabh927 in https://github.com/novuhq/novu/pull/3810

New Contributors

  • @mayorJAY made their first contribution in https://github.com/novuhq/novu/pull/3720
  • @Eazybright made their first contribution in https://github.com/novuhq/novu/pull/3742
  • @benlin1994 made their first contribution in https://github.com/novuhq/novu/pull/3779

Full Changelog: https://github.com/novuhq/novu/compare/v0.16.3...v0.16.4

- TypeScript
Published by scopsy over 2 years ago

novu - v0.16.3 - Patch Release

What's Changed

  • Update api-reference.md by @iampearceman in https://github.com/novuhq/novu/pull/3613
  • feat: add is defined step filter docs by @jainpawan21 in https://github.com/novuhq/novu/pull/3634
  • feat: add transaction id filter in get messages by @jainpawan21 in https://github.com/novuhq/novu/pull/3645
  • Add IP Pool Name Override during trigger by @djabarovgeorge in https://github.com/novuhq/novu/pull/3648
  • feat: add remove all messages endpoint by @jainpawan21 in https://github.com/novuhq/novu/pull/3671
  • Docs: Add Nextjs, Node, and Vanilla JS quickstarts by @sumitsaurabh927 in https://github.com/novuhq/novu/pull/3691
  • docs: guides on specific use cases by @sumitsaurabh927 in https://github.com/novuhq/novu/pull/3696
  • Node.js & Angular Quickstart by @iampearceman in https://github.com/novuhq/novu/pull/3707
  • Update get-started-with-node.js.md by @iampearceman in https://github.com/novuhq/novu/pull/3708
  • Quickstart guide for Angular and Node.js by @iampearceman in https://github.com/novuhq/novu/pull/3600

Full Changelog: https://github.com/novuhq/novu/compare/v0.16.1...v0.16.3

- TypeScript
Published by scopsy over 2 years ago

novu - v0.16.1

What's Changed

  • Nv 2215 delete messagetemplates of deleted templates by @BiswaViraj in https://github.com/novuhq/novu/pull/3524
  • [NV-1812] Email Webhook Provider by @jlucidar in https://github.com/novuhq/novu/pull/3244
  • add mongodb by @anragen in https://github.com/novuhq/novu/pull/3555
  • fix: update prod env value in run-locally.md by @Dominic-Preap in https://github.com/novuhq/novu/pull/3569
  • chore(deps): update dependency @octokit/core to v4 by @renovate in https://github.com/novuhq/novu/pull/3552
  • feat: add log when segment is throwing error by @djabarovgeorge in https://github.com/novuhq/novu/pull/3584
  • chore(deps): update commitlint monorepo to v17.6.5 by @renovate in https://github.com/novuhq/novu/pull/3585
  • fix: throw error in push only when success count is zero by @jainpawan21 in https://github.com/novuhq/novu/pull/3519
  • feat(docs): Add plivo provider documentation by @peoray in https://github.com/novuhq/novu/pull/3293
  • fix(infra): remove node package strange dependencies and move to shared by @p-fernandez in https://github.com/novuhq/novu/pull/3588
  • chore(deps): update dependency @types/jest to v29.5.2 by @renovate in https://github.com/novuhq/novu/pull/3586
  • feat: add helm chart for novu by @jlucidar in https://github.com/novuhq/novu/pull/3535
  • fix(web): show add step side menu after delete of step by @ainouzgali in https://github.com/novuhq/novu/pull/3593
  • Generalize jitter function from cache and add a Delay function by @Cliftonz in https://github.com/novuhq/novu/pull/3595
  • fix: widget embed path for js quick start by @davidsoderberg in https://github.com/novuhq/novu/pull/3598
  • fix: widget embed path for js quick start by @davidsoderberg in https://github.com/novuhq/novu/pull/3599
  • chore(deps): update dependency html-webpack-plugin to v5.5.3 by @renovate in https://github.com/novuhq/novu/pull/3591
  • fix: tests & react query cache keys by @djabarovgeorge in https://github.com/novuhq/novu/pull/3540
  • format code with prettier by @deepsource-autofix in https://github.com/novuhq/novu/pull/3592
  • NV-2154 - 🐛 Bug Report: useFeedUnseenCount shows total feed count by @gitstart in https://github.com/novuhq/novu/pull/3358
  • NV-2097 - 🚀 Feature: Allow sender name to accept dynamic values by @gitstart in https://github.com/novuhq/novu/pull/3453
  • chore(deps): update nrwl monorepo by @renovate in https://github.com/novuhq/novu/pull/3601

New Contributors

  • @jlucidar made their first contribution in https://github.com/novuhq/novu/pull/3244
  • @anragen made their first contribution in https://github.com/novuhq/novu/pull/3555
  • @Dominic-Preap made their first contribution in https://github.com/novuhq/novu/pull/3569

Full Changelog: https://github.com/novuhq/novu/compare/v0.16.0...v0.16.1

- TypeScript
Published by scopsy over 2 years ago

novu - v0.16.0 - Template Store and integration store improvements

What’s new in Novu 0.16.0?

TL;DR: All you need to know about the latest Novu 0.16.0 release. Template Store, Demo SMS Provider, Notification Templates Renaming and more!

0.16.0 Release Updates

We are thrilled to share the latest updates on our most recent release. Let's dive in headfirst and discover what's in store for you!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tdzueooohncgk6czgq0s.gif

Template Store

The Novu dashboard now has a new embedded template store with ready-to-use notification workflows for everyone.

You can simply choose a sample notification workflow from the template store, modify it and be ready to trigger a notification in record time!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vxewbhmfs43dmt3matap.gif

Demo SMS Provider

We now have a built-in SMS provider for our cloud users to test SMS notifications quickly without setting up and providing credentials for external SMS providers. It's similar to what's available for Email.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hs1f158idnbksa0abyi4.png

In-App Notification Center In Integration Store

The Integration Store houses the providers for all the channels: Email, SMS, Chat and Push. The In-App channel is now part of the integration store.

The configuration has been moved to the integration store now from the settings page as it was previously.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ifqdhpa3zbsdh7tho3b1.png

BREAKING CHANGE (Novu Self-hosted Only)

Prior to upgrading to 0.16.0, a migration script needs to be run. This migration script will create a notification center integration and activate it to allow the delivery of in app messages. If you are not using the notification center, there is no need to run the migration scripts.

To run the migrations, follow the next steps:

Clone the novu repository, and install the dependencies (npm run setup:project)

Update the MONGO_URL to your production environment in apps/api/src/.env file, and run the npm run migration:in-app command from the apps/api folder.

After running the migration script, the version can be updated.

Renaming Notification Templates To Workflows

Notification templates as we have all known it are now called Workflows. It was renamed for more consistent terminology across the entire system.

New API endpoints will be introduced in v0.17.0 and current endpoints of notification templates will be marked as deprecated.

https://res.cloudinary.com/dxc6bnman/image/upload/v1687321553/workflow_ia3p0n.png

The isDefined Filter

This new isDefined filter checks the presence of a variable. Essentially, it checks if a variable is available or not!

It works for all channels. You can check if a payload, subscriber or webhook variable is defined.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvfu8vit9bnh7aqqfwyi.png

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/232hx77zgn3839rd2jqi.png

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0fdzi55mjyzy2d3vd6gq.png

All Changes

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.15.0...v0.16.0

- TypeScript
Published by scopsy over 2 years ago

novu - v0.15.0 - Scheduled Digest and Slack OAuth for webhook urls

What’s new in Novu 0.15.0?

TL;DR: All you need to know about the latest Novu 0.15.0 release. Scheduled Digest, In-App Onboarding playground, Slack Webhook URL managed flow and more!

0.15.0 Release Updates

We're excited to unveil fresh updates about our most recent release. So let's dive right in!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uyvgje77r0sbm9f9l8yc.gif

Scheduled Digest

Now you can schedule digest at specific intervals according to your preference. This feature eradicates the need to create cron jobs to suit your use case.

From the Novu dashboard, you can specify the times when a digest will be sent - Every two days, Daily, Weekly, etc. The Digest engine aggregates events before a set time and fires them when that time is reached.

Typical Use Case

A digest is scheduled for Tuesday and Thursday at 7:07 AM weekly. A notification event is triggered a couple of times to a subscriber every day.

The digest engine aggregates all events that occur before Tuesday. On Tuesday at 7:07am, it fires an event comprising all the aggregated events. Similarly, all events occurring between Tuesday and Thursday are aggregated, and an event is fired on Thursday at 7:07am. This cycle continues.

Note: For now, the time is UTC-based. We plan to make it user-timezone aware soon!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ds4v0jiiejlw3xbyms93.gif

In-App Onboarding Playground

We have integrated a new playground in our onboarding flow to test and explore In-App notifications. So take it for a spin!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pug70auggz9vussml1xh.gif

Slack Webhook URL Managed Flow

Until now, developers had to manually spin up and deploy an https server with an endpoint to listen for redirect requests. They had to follow numerous steps to get Slack webhook Url generation right and working seamlessly for subscribers.

Now, Novu manages the OAuth flow for you. No more spinning of servers! All you need to do is:

  • Add https://api.novu.co/v1/subscribers/ to the Redirect URL in OAuth & Permissions on your Slack Developer Dashboard.
  • Add the Add to Slack button or the shareable URL to your application to request access permission (scope: incoming-webhook). More information here

Africa's Talking SMS Provider Integration

Now, you can use the Africa's talking SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jrxgh7mvseb0rbiopg7f.png

OneSignal Push Provider Integration

Now, you can use the OneSignal Push provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m8bordqacaw8uc6mg8qq.png

Push Webhook

Now you can add a webhook URL to trigger push notifications on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3osipx08eq7tzo8jokn.png

There is work ongoing for Email Webhook Provider. You can follow the commits here

All Changes

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.14.0...v0.15.0

- TypeScript
Published by scopsy over 2 years ago

novu - v0.14.0 - Performance optimization and redesigned workflow editor

What’s new in Novu 0.14.0?

TL;DR: All you need to know about the latest Novu 0.14.0 release. Performance optimization, Workflow UI Editor, Data expiration, Headless Notification Center and more!

0.14.0 Release Updates

We're stoked to share new updates on our latest release. Let's dig in!

Performance Optimization

We have worked extremely hard to improve the core performance of Novu. I'll highlight crucial things to note and be aware of:

  1. Improved Caching.
  2. Optimized Indexes. Indexes are defined on each schema file at the bottom.

New Worker Service

Breaking Change: A new service is required to run with Novu called @novu/worker , extracted from the @novu/api monolith to ensure that queues and jobs are processed faster. Novu Cloud users do not need to be concerned about this change.

Novu self-hosted users can now scale the worker service independently as much as the hardware their hosted domain runs on.

For Novu self-hosted users running on Docker, it is now necessary to pull in the new worker service image in order for Novu to work properly. This is already taken care of here & here. When you run docker-compose up, the worker image will be automatically pulled in. No extra steps are needed.

Data Expiration

The Jobs and Messages collection now has a TTL and will be removed from the database when it expires. For Novu cloud users, notifications and activity feed data will be saved for 1 month, while in-app messages will be saved for 6 months. After that time, the records will be archived.

For Novu self-hosted users, the same time frame applies before records will be deleted. However, they can disable the TTL setting by adding the environment variable DISABLE_TTL=true.

Affected schemes:

  • Notification (for 1 month)
  • Job (for 1 month)
  • Message (for in-app messages - 6 months, for all other messages - 1 month)
  • Execution Details (for 1 month)

New Workflow UI Editor

We're constantly iterating on the UI editor to reduce the number of clicks needed to perform specific actions, improve the UX, and provide a great experience in setting up notification workflows.

In this release, we simplified the workflow editor UI like so:

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/msm9mf9i3thhvtb8i4yg.gif

Headless Notification Center

You might have heard the phrase: “Bring Your Own...” or something along those lines.

We encourage you to bring your UI with the newly released framework-agnostic headless version of Novu's notification center.

This lightweight library allows you to incorporate our notification system into any framework or vanilla JavaScript app without UI constraints. Install and call the API methods needed to access the notification system.

Install:

npm install @novu/headless

Use:

import { HeadlessService } from '@novu/headless';

You can now fetch all In-App notifications shown like so:

```jsx const headlessService = new HeadlessService({ applicationIdentifier: 'APPIDFROMADMINPANEL', subscriberId: 'USERID', backendUrl: 'YOURBACKENDURL', socketUrl: 'YOURSOCKET_URL', });

headlessService.initializeSession({ listener: (session) => { console.log(session); }, onSuccess: (session) => { console.log(session); }, onError: (error) => { console.error(error); }, });

headlessService.fetchNotifications({ listener: ({ data, error, isError, isFetching, isLoading, status }) => { console.log({ data, error, isError, isFetching, isLoading, status }); }, onSuccess: (response: IPaginatedResponse) => { console.log({response.data, response.page, response.totalCount, response.pageSize}); }, page: 1, // page number to be fetched }); ```

Maqsam SMS Provider Integration

Now, you can use the Maqsam SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yj8mleheehqi0rjm97q0.png

Termii SMS Provider Integration

Now, you can use the Termii SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ctsjas4ajli9o14n48i7.png

SMSCentral SMS Provider Integration

Now, you can use the SMSCentral SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gpub5ixz2rspw0au1a5j.png

Sparkpost SMS Provider Integration

Now, you can use the Sparkpost SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p52oukji6lzi9aww2p6a.png

All Changes

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.13.0...v0.14.0

- TypeScript
Published by scopsy over 2 years ago

novu - v0.13.0

What’s new in Novu 0.13.0?

TL;DR: All you need to know about the latest Novu 0.13.0 release. Better onboarding experience, Digest Workflow Playground, Seen/Read Step Filter, SMS providers integration and more!

0.13.0 Release Updates

New Onboarding Page

We shipped a better onboarding experience to make it easier for users to set up multichannel notification workflows.

image

Sign up and set up your app notifications system with ease.

We'll keep iterating on our onboarding process to ensure we provide a best-in-class onboarding experience for new users.

Digest Workflow Playground

We built a new digest playground that allows anyone to test, and play around with the digest feature.

The digest engine collects multiple trigger events, aggregates them into a single message and delivers it to the subscriber.

https://res.cloudinary.com/unicodeveloper/video/upload/v1679931446/Digest_Workflow_Playground___Novu_Manage_Platform_-_27_March_2023_feoctu.gif

Digest Playground

New Node Seen/Read Step Filter

We've added a new seen/read filter. This filter gives the flexibility of executing successive notifications based on the status of previous notifications. It currently works for in-app and email notifications.

Typical Use Case:

You have a set of customers that you need to send a 2-step email to them. However, they should only get the second email if they have read/seen the first email.

With the new seen/read filter, you can do the following in a notification workflow:

  • Set the first email step.
  • Set a delay.
  • Set the second email step.
  • Create a filter on the second email step that indicates if the previous step needs to be seen/read before it should be executed.

https://res.cloudinary.com/unicodeveloper/video/upload/v1679934867/Templates-Filter_dd8jjf.mp4

Setting up Seen/Read Filter

Note: For this to work with emails, the webhook url needs to be set up for the active email provider you're using on Novu. It's very essential for the filter to work. No extra set up is needed for in-app notifications.

PR: https://github.com/novuhq/novu/pull/2922

Create Topics On The Fly when adding Subscribers

Till now, you could not add subscribers to a non-existent topic. You will be met with an error!

We have now reduced friction for users by allowing them to create topics and add subscribers on the fly in one step. The system checks if the topic does not exist, and proceeds to create the topic implicitly.

Kannel SMS Provider Integration

Now, you can use the Kannel SMS Provider on Novu.

https://res.cloudinary.com/unicodeveloper/image/upload/v1679935944/Screenshot_2023-03-27_at_17.51.46_kzwse7.png

PR: https://github.com/novuhq/novu/pull/2700

46elks SMS Provider Integration

Now, you can use the 46elks SMS provider on Novu.

https://res.cloudinary.com/unicodeveloper/image/upload/v1679938643/Screenshot_2023-03-27_at_18.36.21_cninwo.png

PR: https://github.com/novuhq/novu/pull/2973

Mattermost SMS Provider Integration

Mattermost is an open-source Slack alternative. One integrated platform for all of your team messaging, collaborative workflows and project management needs. Now, you can use the Mattermost provider on Novu.

https://res.cloudinary.com/unicodeveloper/image/upload/v1679939274/Screenshot_2023-03-27_at_18.41.41_zki3wn.png

PR: https://github.com/novuhq/novu/pull/2935

Changes & Bug Fixes:

All Changes

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.12.0...v0.13.0

- TypeScript
Published by scopsy almost 3 years ago

novu - v0.12.0 - Polishing Season 💅

What’s new in Novu 0.12.0?

TL;DR: All you need to know about the latest Novu 0.12.0 release. New Onboarding experience, Actor Filtering, Custom subscriber properties, Email overrides, bug fixes, UI polishing and more!

0.12.0 Polishing Release Updates

This release contains exciting updates for existing and new users of Novu. Fun fact, more than 170 polishing issues were resolved in this release. Let's dig in!

New Onboarding Experience for Notification Center

We shipped a new onboarding experience for adding the notification center to existing apps. Check it out below:

https://res.cloudinary.com/unicodeveloper/video/upload/v1677519923/Novu_Manage_Platform_-_27_February_2023_tljibe.gif

Sign up and set up your app with the notification center swiftly!

Actor Filtering for Topics

This feature is great for users of topic-based notification. By default, it excludes an actor responsible for the action of a triggered notification on a topic event.

Typical Use Case:

The comment section of a post. Jane, John, and Doe made comments on a post. When Prosper makes a comment on the post, these users (Jane, John and Doe) should get a notification about the recent comment, but Prosper should not receive a notification on his recently created comment.

``` const topicKey = 'posts:comment:12345';

await novu.trigger('template-name', { to: [{ type: 'Topic', topicKey: topicKey }], payload: {}, actor: { subscriberId: '' }, });

```

Node SDK Usage: Actor filtering

PR: https://github.com/novuhq/novu/pull/2691

Support for cc, bcc, and multiple to for E-mail

Now, you can use the overrides object to allow for multiple to, bcc, and cc when triggering the email channel.

```

await novu.trigger('template-name', { to: 'subscriberId', payload: {...data}, overrides: { email: { to: ['to@test.com'], bcc: ['test@email.com'], cc: ['another@test.com'] } } });

```

Node SDK Usage: E-mail support for cc,bcc and multiple to

The to property will be merged with the subscriber recipient email to avoid duplicates.

Also text can be passed as an override that will send the text version of the email along side the HTML for old clients.

PR: https://github.com/novuhq/novu/pull/2763

Use Custom Sender Name on Template

Before now, the sender name was defined only on the provider integration. So, all the emails triggered had the same sender name.

https://res.cloudinary.com/unicodeveloper/image/upload/v1677512479/Screenshot_2023-02-27_at_15.40.13_fhith6.png

Before: Integration store - Provider Integration

Now, you can define a custom sender from name on the template level. If empty, Novu will fallback to the sender name defined on the provider integration.

https://res.cloudinary.com/unicodeveloper/image/upload/v1677512609/sendername_fhmakz.png

Now: Sender Name from Template

PR: https://github.com/novuhq/novu/pull/2769

Typical Use Case

Each template can serve a different purpose, depending on the type of email content. Specifying different sender names for different templates makes the email content different.

PR: https://github.com/novuhq/novu/pull/2769

Bulk Trigger Endpoint

Previously, the only way to trigger events as many times as possible was to loop the trigger call.

``` await novu.trigger('', { to: [ { subscriberId: '', email: 'john1@doemail.com', firstName: 'John', lastName: 'Doe', }, ], payload: { name: 'Hello World', organization: { logo: 'https://happycorp.com/logo.png', }, }, });

```

Node SDK Usage: Trigger event

Now, Novu has a new bulk trigger endpoint, /events/trigger/bulk.

This endpoint allows simply passing in an array of events to the like so:

``` await novu.bulkTrigger([ { eventId: "my-event", to: "subscriber-id", payload: myPayload }, { eventId: "my-event-2", to: "subscriber-id-2", payload: myPayload2 } ]);

```

Node SDK Usage: Bulk Trigger events

PR: https://github.com/novuhq/novu/pull/2704

Custom Subscriber Properties

Now, custom subscriber properties can be added using the data key via the API or SDK like so:

Typical Use Case

You can leverage using the data key if you need to add some metadata (e.g date of birth, gender) to the subscriber. The data added is also available in templates.

API reference: The property can be set directly via the create & update subscriber API.

``` ... await novu.subscribers.identify(user.id, { email: user.email, firstName: user.firstName, lastName: user.lastName, phone: user.phone, avatar: user.profile_avatar data: { dob: user.dob gender: user.gender } });

```

Node SDK usage - Create Subscriber

PR: https://github.com/novuhq/novu/pull/2707

Resend Email Provider Integration

Now, you can use the Resend email provider on Novu.

https://res.cloudinary.com/unicodeveloper/image/upload/v1677519100/resend_connect_gkp3ck.png

https://res.cloudinary.com/unicodeveloper/image/upload/v1677572334/Screenshot_2023-02-28_at_08.17.54_vrgfei.png

PR: https://github.com/novuhq/novu/pull/2802

Changes & Bug Fixes:

All changes

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.11.0...v0.12.0

- TypeScript
Published by scopsy almost 3 years ago

novu - v0.11.0 - Layouts, Reply Callbacks, Is Online Filters and more...

In this release, we are very excited to introduce a lot of new improvements to some of our core features as well as completely new functionalities to help with creating better notification experiences for your users.

Let's deep dive in the new things available:

E-mail Layouts

You can now create and manage email layouts for notification templates. This feature makes it easier for you to customize the look and feel of your e-mail notifications and ensure that they are consistent across templates. Once a layout is created, you can then attach particular notifications to that layout. All the regular variables that are available on the template level will also be available when compiling the layout content.

To read more about layouts, visit our documentation page: https://docs.novu.co/platform/layouts

Is Online Filters

Really excited to share that from now you can send or not send notifications depending on the online status of the current subscriber in your system. When using the Novu notification center, we will track the current active session of the subscriber and allow filtering by its current status. You can filter by currently online, or online in the last X minutes.

Read more about it here.

Reply Callbacks with Inbound E-mail Parsing (Cloud Only)

Subscribers can now reply to e-mails you send them, similar to the behavior you might see when replying to a GitHub issue comment e-mail and your reply e-mail automagically appears as a GitHub comment.

You can enable Reply Callbacks for a particular notification template. Novu will modify the reply to the field to add a unique identifier when a subscriber replies to this e-mail. After parsing novu will call you the webhook URL defined in the template containing information about the particular notification and the e-mail contents for you to perform extra business logic for it.

Novu Starter E-mail Provider (Cloud only)

For new accounts evaluating Novu you could now have up to 300 free e-mails using the built novu provider to evaluate novu without the need to connect your SendGrid account.

Breaking changes

@novu/notification-center changes

NovuProvider: Added the new prop initialFetchingStrategy which allows deciding about fetching strategy. By default feed notifications and user preferences are not fetched, this behavior is particularly implemented for the PopoverNotificationCenter as we don’t want to make the request for the feed before the notification center is opened, it might not be opened at all. But, sometimes it might be useful to fetch them during the hook mounting, ex. when you build custom UI components, ex. notifications list page, then you can use this prop to define that you want to fetch “right away”. Also, you can change the fetching strategy manually using the useNovuContext and setFetchingStrategy functions.

Hooks:

Changed the return interface of the useNotifications hook:

  • updateAction prop moved to a separate hook useUpdateAction
  • markAsRead renamed to markNotificationAsRead, it takes now only the messageId as the argument
  • markAllAsRead renamed to markAllNotificationsAsRead, it doesn’t require args to pass
  • markAsSeen renamed to markNotificationAsSeen, it takes now only the messageId as the argument
  • fetching renamed to isFetching
  • removed onWidgetClose and onTabChange as these props have nothing to do with this hook and they were only needed for internal use
  • added props: storeId, stores, unseenCount, isLoading, isFetchingNextPage, setStore, markAllNotificationsAsSeen

Split useSubscriberPreference into two separate hooks: useFetchUserPreferences and useUpdateUserPreferences

New hooks: useUpdateUserPreferences, useUpdateAction, useFetchNotifications, useFetchOrganization, useFeedUnseenCount, useMarkNotificationsAs

Hooks removed: useAuth, useApi, useScreens, useUnseenController - used for internal purpose

Hooks exposed: useSocket, useUnseenCount, useNotifications, useNovuContext, useNovuTheme, useNotificationCenter, useTranslations, useUpdateUserPreferences, useUpdateAction, useFetchNotifications, useFetchOrganization, useFeedUnseenCount, useFetchUserPreferences, useMarkNotificationsAs

Other notable changes

  • strict null checks refactor by @scopsy in https://github.com/novuhq/novu/pull/2390
  • chore(docs): improve-topics-swagger by @p-fernandez in https://github.com/novuhq/novu/pull/2422
  • fix(api): improve subscriberId validation by @mocherfaoui in https://github.com/novuhq/novu/pull/2428
  • Updating json web token library by @Cxxshyy in https://github.com/novuhq/novu/pull/2425
  • fix(docs): add topics tag to swagger bootstrap by @p-fernandez in https://github.com/novuhq/novu/pull/2430
  • fix: typescript error for messageIds by @BiswaViraj in https://github.com/novuhq/novu/pull/2435
  • fix: add backwards compatability for auth header by @scopsy in https://github.com/novuhq/novu/pull/2440
  • fix: fix double scroll bars in admin panel by @caiopiassali in https://github.com/novuhq/novu/pull/2333
  • fix: improve env validator for storage providers by @titenkov in https://github.com/novuhq/novu/pull/2433
  • feat(dal): add relationship between message template and layout by @p-fernandez in https://github.com/novuhq/novu/pull/2444
  • feat(api): create layouts module by @p-fernandez in https://github.com/novuhq/novu/pull/2454
  • feat: add usecase to calculate if predefined provider should be used by @davidsoderberg in https://github.com/novuhq/novu/pull/2429
  • feat: add copy functionality for vars in variable manager by @paolapog in https://github.com/novuhq/novu/pull/2412
  • fix: remove redundant cache invalidation by @djabarovgeorge in https://github.com/novuhq/novu/pull/2463
  • fix: remove redundant update by @djabarovgeorge in https://github.com/novuhq/novu/pull/2467
  • feat: online status handler by @BiswaViraj in https://github.com/novuhq/novu/pull/2441
  • fix: duplicate preference rows on update by @ainouzgali in https://github.com/novuhq/novu/pull/2450
  • chore(web): fixed deepsource issues with wai aria by @LetItRock in https://github.com/novuhq/novu/pull/2477
  • feat(api): update step filter type for is online filters by @LetItRock in https://github.com/novuhq/novu/pull/2458
  • feat(api): run step filters - is online logic by @LetItRock in https://github.com/novuhq/novu/pull/2472
  • feat(api): filter layouts endpoint by @p-fernandez in https://github.com/novuhq/novu/pull/2479
  • Nv 1464 web create layout page by @ainouzgali in https://github.com/novuhq/novu/pull/2474
  • fix(api): is online filters - skip processing old subscribers by @LetItRock in https://github.com/novuhq/novu/pull/2483
  • chore: fixed additional deepsource issue by @LetItRock in https://github.com/novuhq/novu/pull/2478
  • Feature/dynamic onboarding by @davidsoderberg in https://github.com/novuhq/novu/pull/2456
  • feat: Added form UI for the online filters by @BiswaViraj in https://github.com/novuhq/novu/pull/2460
  • fix(api): topics pagination was wrong by @p-fernandez in https://github.com/novuhq/novu/pull/2480
  • refactor: change es cache service key by @scopsy in https://github.com/novuhq/novu/pull/2488
  • feat(api): update subscriber online status endpoint by @LetItRock in https://github.com/novuhq/novu/pull/2475
  • feat: consolidate sign up events by @scopsy in https://github.com/novuhq/novu/pull/2482
  • feat: upgrade newrelic by @scopsy in https://github.com/novuhq/novu/pull/2492
  • fix: Add api body params to mark subscriber feed by @codingmickey in https://github.com/novuhq/novu/pull/2476
  • refactor: add new parsing queue for events by @scopsy in https://github.com/novuhq/novu/pull/2501
  • fix: use class validators 0.14.0 by @scopsy in https://github.com/novuhq/novu/pull/2494
  • fix: page flickering issue while using light theme on system by @BiswaViraj in https://github.com/novuhq/novu/pull/2502
  • feat: add endpoint to get novu limits by @davidsoderberg in https://github.com/novuhq/novu/pull/2495
  • feat: added tests for filters by @BiswaViraj in https://github.com/novuhq/novu/pull/2491
  • feat(api): add delete layout endpoint by @p-fernandez in https://github.com/novuhq/novu/pull/2487
  • feat(api): add update endpoint by @p-fernandez in https://github.com/novuhq/novu/pull/2497
  • feat(api): add field description to layout by @p-fernandez in https://github.com/novuhq/novu/pull/2498
  • feat: assign layout to template and dropdown in web by @ainouzgali in https://github.com/novuhq/novu/pull/2506
  • feat(api): add endpoint to set a layout as default by @p-fernandez in https://github.com/novuhq/novu/pull/2514
  • Nv 1488 web delete and update by @ainouzgali in https://github.com/novuhq/novu/pull/2505
  • fix(notification-center-vue): fixed react, react dom dependencies issue by @LetItRock in https://github.com/novuhq/novu/pull/2515
  • CLI Onboarding - email and password registration by @scopsy in https://github.com/novuhq/novu/pull/2508
  • feat: Support serving uploaded files from CDN by @JoeyEamigh in https://github.com/novuhq/novu/pull/2513
  • docs: online filter documentation by @BiswaViraj in https://github.com/novuhq/novu/pull/2516
  • Nv 1486 remove env from the vercel project if by @BiswaViraj in https://github.com/novuhq/novu/pull/2503
  • fix: Add support for Minio local S3 storage by upgrading AWS SDK by @JoeyEamigh in https://github.com/novuhq/novu/pull/2511
  • feat: improve execution details for step filters by @LetItRock in https://github.com/novuhq/novu/pull/2499
  • feat(api,ws): is online filters analytics by @LetItRock in https://github.com/novuhq/novu/pull/2519
  • feat: is online filters by @LetItRock in https://github.com/novuhq/novu/pull/2473
  • feat: add limit bar and analytics by @davidsoderberg in https://github.com/novuhq/novu/pull/2522
  • feat(api): integrate set default layout in creation and update flows by @p-fernandez in https://github.com/novuhq/novu/pull/2526
  • feat: add ses email info doc and few FAQs by @jainpawan21 in https://github.com/novuhq/novu/pull/2445
  • Fix novu integration limit by @davidsoderberg in https://github.com/novuhq/novu/pull/2531
  • Configure Renovate by @renovate in https://github.com/novuhq/novu/pull/2536
  • feat(api): sort and order query params for filtering layouts by @p-fernandez in https://github.com/novuhq/novu/pull/2535
  • chore(deps): update dependency @storybook/testing-library to v0.0.13 by @renovate in https://github.com/novuhq/novu/pull/2537
  • chore(deps): update dependency @types/react to v17.0.53 by @renovate in https://github.com/novuhq/novu/pull/2539
  • chore(deps): update dependency @types/express to v4.17.15 by @renovate in https://github.com/novuhq/novu/pull/2538
  • Complete novu/node integrations module by @codingmickey in https://github.com/novuhq/novu/pull/2533
  • Nv 1458 web abstract variable manager to not by @ainouzgali in https://github.com/novuhq/novu/pull/2529
  • Layouts - compile layout with email content by @ainouzgali in https://github.com/novuhq/novu/pull/2527
  • chore(deps): update dependency @types/react-helmet to v6.1.6 by @renovate in https://github.com/novuhq/novu/pull/2544
  • feat: update logo by @davidsoderberg in https://github.com/novuhq/novu/pull/2548
  • feat: change logo in header nav by @davidsoderberg in https://github.com/novuhq/novu/pull/2549
  • feat(api): disallow delete of assigned by @p-fernandez in https://github.com/novuhq/novu/pull/2545
  • chore(deps): update dependency cypress-intellij-reporter to ^0.0.7 by @renovate in https://github.com/novuhq/novu/pull/2547
  • chore(deps): update dependency @types/react-dom to v17.0.18 by @renovate in https://github.com/novuhq/novu/pull/2542
  • NV-1541: handle default novu layout by @scopsy in https://github.com/novuhq/novu/pull/2551
  • chore(deps): update dependency eslint-plugin-spellcheck to v0.0.20 by @renovate in https://github.com/novuhq/novu/pull/2552
  • chore(deps): update dependency inquirer to v8.2.5 by @renovate in https://github.com/novuhq/novu/pull/2553
  • fix: rearranged the order of statements inside the cleanup function by @BiswaViraj in https://github.com/novuhq/novu/pull/2556
  • fix: update ci pipelines to remove build before building docker image by @scopsy in https://github.com/novuhq/novu/pull/2562
  • fix: add missing redis cache service config by @titenkov in https://github.com/novuhq/novu/pull/2532
  • Add Helmet Secruity Headers to WebSocket Service by @Cliftonz in https://github.com/novuhq/novu/pull/2563
  • chore(deps): update commitlint monorepo to v17.4.2 by @renovate in https://github.com/novuhq/novu/pull/2560
  • fix(deps): update dependency styled-components to v5.3.6 by @renovate in https://github.com/novuhq/novu/pull/2559
  • fix(deps): update dependency @nestjs/axios to v0.1.1 by @renovate in https://github.com/novuhq/novu/pull/2557
  • fix(deps): update dependency react-scripts to v4.0.3 by @renovate in https://github.com/novuhq/novu/pull/2558
  • feat: add reply callback step controller by @djabarovgeorge in https://github.com/novuhq/novu/pull/2462
  • feat(wip): add reply callback support by @djabarovgeorge in https://github.com/novuhq/novu/pull/2465
  • Reply callbacks wip by @djabarovgeorge in https://github.com/novuhq/novu/pull/2525
  • Layout - dropdown searchable, layout required by @ainouzgali in https://github.com/novuhq/novu/pull/2534
  • Nv 1457 web move update button to top header by @ainouzgali in https://github.com/novuhq/novu/pull/2572
  • refactor: provider card for novu integrations by @davidsoderberg in https://github.com/novuhq/novu/pull/2546
  • feat(api): create a layout change by @p-fernandez in https://github.com/novuhq/novu/pull/2521
  • fix: ensure one default layout in set as default by @ainouzgali in https://github.com/novuhq/novu/pull/2575
  • feat: show layout changes in web by @ainouzgali in https://github.com/novuhq/novu/pull/2574
  • Nv 1490 e2e tests for the filter condition by @BiswaViraj in https://github.com/novuhq/novu/pull/2554
  • feat: Added the filter condition component on UI by @BiswaViraj in https://github.com/novuhq/novu/pull/2550
  • feat(api): promote changes of layouts by @p-fernandez in https://github.com/novuhq/novu/pull/2520
  • fix: env for get novu integration by @davidsoderberg in https://github.com/novuhq/novu/pull/2576
  • Layouts Feature by @ainouzgali in https://github.com/novuhq/novu/pull/2540
  • chore(deps): update dependency react-error-overlay to v6.0.11 by @renovate in https://github.com/novuhq/novu/pull/2555
  • feat: add footer link for home by @vishnu-kyatannawar in https://github.com/novuhq/novu/pull/2528
  • fix: long text overflows container by @mocherfaoui in https://github.com/novuhq/novu/pull/2570
  • Reply callbacks by @djabarovgeorge in https://github.com/novuhq/novu/pull/2571
  • Format code with prettier by @deepsource-autofix in https://github.com/novuhq/novu/pull/2581
  • fix: update mail server domain env by @djabarovgeorge in https://github.com/novuhq/novu/pull/2580
  • fix: add env files by @djabarovgeorge in https://github.com/novuhq/novu/pull/2582
  • Reply callbacks by @djabarovgeorge in https://github.com/novuhq/novu/pull/2584
  • fix: description in layout not being promoted by @ainouzgali in https://github.com/novuhq/novu/pull/2586
  • fix: blueprint modal tests by @davidsoderberg in https://github.com/novuhq/novu/pull/2579
  • chore(deps): update dependency @angular/cli to ~15.1.0 by @renovate in https://github.com/novuhq/novu/pull/2566
  • feat: ensure one default layout by @ainouzgali in https://github.com/novuhq/novu/pull/2587
  • Install the CodeSee workflow. by @codesee-maps in https://github.com/novuhq/novu/pull/2588
  • fix: edit layout page, navigate to screens per env change by @ainouzgali in https://github.com/novuhq/novu/pull/2591
  • chore(deps): update dependency @types/express to v4.17.16 by @renovate in https://github.com/novuhq/novu/pull/2578
  • fix: fixes radius issue by @BhuvaneshPatil in https://github.com/novuhq/novu/pull/2391
  • fix: add env config by @djabarovgeorge in https://github.com/novuhq/novu/pull/2593
  • feat(api): tests for layout promotion by @p-fernandez in https://github.com/novuhq/novu/pull/2595
  • feat: add locale property to subscriber model by @katyaterletskaya in https://github.com/novuhq/novu/pull/2509
  • feat: add python utils by @djabarovgeorge in https://github.com/novuhq/novu/pull/2597
  • Nv 1579 useintercom must be inside by @BiswaViraj in https://github.com/novuhq/novu/pull/2599
  • chore(deps): update dependency eslint-config-airbnb-typescript to v16.2.0 by @renovate in https://github.com/novuhq/novu/pull/2594
  • chore(deps): update dependency eslint-plugin-react to v7.32.1 by @renovate in https://github.com/novuhq/novu/pull/2600
  • Update changes count badge on layout change by @ainouzgali in https://github.com/novuhq/novu/pull/2598
  • fix: so changes are aggregated into one by @ainouzgali in https://github.com/novuhq/novu/pull/2596
  • Add description to layout table by @ainouzgali in https://github.com/novuhq/novu/pull/2607
  • fix: so blueprint id is saved on auth pages by @davidsoderberg in https://github.com/novuhq/novu/pull/2609
  • chore(deps): update dependency http-server to ^0.13.0 by @renovate in https://github.com/novuhq/novu/pull/2604
  • chore(deps): update dependency jira-prepare-commit-msg to v1.7.1 by @renovate in https://github.com/novuhq/novu/pull/2611
  • fix(package): fix tests and the implementation of the get topic by @p-fernandez in https://github.com/novuhq/novu/pull/2614
  • fix: copy when there is no email integration active by @davidsoderberg in https://github.com/novuhq/novu/pull/2617
  • chore(deps): update dependency cypress to v10.11.0 by @renovate in https://github.com/novuhq/novu/pull/2592
  • chore(notification-center): refactor notification center context with react-query by @LetItRock in https://github.com/novuhq/novu/pull/2382
  • chore(deps): update dependency lerna to v5.6.2 by @renovate in https://github.com/novuhq/novu/pull/2618
  • feat: add redis tls option by @katyaterletskaya in https://github.com/novuhq/novu/pull/2616
  • Format code with prettier by @deepsource-autofix in https://github.com/novuhq/novu/pull/2621
  • chore(deps): update dependency markdownlint-cli to ^0.33.0 by @renovate in https://github.com/novuhq/novu/pull/2619
  • Feat: Add Logrocket Monitoring by @Cliftonz in https://github.com/novuhq/novu/pull/2610

New Contributors

  • @caiopiassali made their first contribution in https://github.com/novuhq/novu/pull/2333
  • @titenkov made their first contribution in https://github.com/novuhq/novu/pull/2433
  • @paolapog made their first contribution in https://github.com/novuhq/novu/pull/2412
  • @vishnu-kyatannawar made their first contribution in https://github.com/novuhq/novu/pull/2528
  • @codesee-maps made their first contribution in https://github.com/novuhq/novu/pull/2588
  • @katyaterletskaya made their first contribution in https://github.com/novuhq/novu/pull/2509

Full Changelog: https://github.com/novuhq/novu/compare/v0.10.3...v0.11.0

- TypeScript
Published by scopsy almost 3 years ago

novu - v0.10.1 - Webhook filters

This release includes support for webhook filters of steps and also various small improvements and bug fixes.

Webhook Filters

The webhook filter support for steps allows users to filter a particular step execution based on the response received from the webhook. This can be useful in scenarios where it is necessary to take different actions based on the response from the webhook. With this feature, users have greater control over the execution of their workflows and can customize them to meet their specific needs.

Read more about step filters here.

What else has changed

  • feat: add webhook filter support by @djabarovgeorge in https://github.com/novuhq/novu/pull/2338
  • fix: nested and array vars in trigger snippet and test workflow by @ainouzgali in https://github.com/novuhq/novu/pull/2169
  • feat: add scope request for events controller by @scopsy in https://github.com/novuhq/novu/pull/2362
  • fix: pass credentials to the provider by @BiswaViraj in https://github.com/novuhq/novu/pull/2368
  • fix: fix errors of reading undefined in var manager by @ainouzgali in https://github.com/novuhq/novu/pull/2374
  • fix: should not save system variables to trigger by @ainouzgali in https://github.com/novuhq/novu/pull/2363
  • fix: set sns as supported by @ilteoood in https://github.com/novuhq/novu/pull/2380
  • fix(web): the email editor brand logo issue by @LetItRock in https://github.com/novuhq/novu/pull/2386
  • fix(ws|webhook): socket versions match by @p-fernandez in https://github.com/novuhq/novu/pull/2384
  • Nv 1239 bug report unable to remove cta buttons by @BiswaViraj in https://github.com/novuhq/novu/pull/2342
  • docs: rephrased line 20 for better clarity by @sumitsaurabh927 in https://github.com/novuhq/novu/pull/2381
  • fix: change streamToString to streamToBuffer in storage service by @jainpawan21 in https://github.com/novuhq/novu/pull/2370
  • fix: update redirection url text by @jainpawan21 in https://github.com/novuhq/novu/pull/2397
  • docs: warning wasn't rendered correctly by @mocherfaoui in https://github.com/novuhq/novu/pull/2401
  • fix: catch compile errors in preview email and show error notification in ui by @ainouzgali in https://github.com/novuhq/novu/pull/2407
  • chore(notification-center): fix for ssr issues by @LetItRock in https://github.com/novuhq/novu/pull/2395
  • fix: add try catch condition in handlebar template compilation by @jainpawan21 in https://github.com/novuhq/novu/pull/2317
  • change environment parameter from 'production' to 'prod' by @isurumaldeniya in https://github.com/novuhq/novu/pull/2416
  • Add fcm data messages (#2007) by @raikasdev in https://github.com/novuhq/novu/pull/2135

New Contributors

  • @ilteoood made their first contribution in https://github.com/novuhq/novu/pull/2380
  • @sumitsaurabh927 made their first contribution in https://github.com/novuhq/novu/pull/2381
  • @isurumaldeniya made their first contribution in https://github.com/novuhq/novu/pull/2416

Full Changelog: https://github.com/novuhq/novu/compare/v0.10.0...v0.10.1

- TypeScript
Published by scopsy about 3 years ago

novu - v0.10.0 Release - Topics and new e-mail editor

We are excited to announce the latest release of Novu, which includes several new and improved features. One of the requested features has been the addition of Topics, which allows users to easily send notifications to groups for subscribers using a single identifier. We have also added avatar support, so notifications in the notification center can now include subscriber avatars. Another significant addition is the new e-mail editor and preview in the web UI. In addition to these new features, we have also made various performance improvements and bug fixes to enhance the overall experience. Let’s dive deeper:

Topics

We are excited to announce Topics, which allows you to create custom groups of subscribers and send targeted notifications to those groups. Using our API, you can easily create new topics and assign subscribers to them. Once a topic has been created, it is now possible to send notifications to that topic using the unique topic key.

Let’s see how it works in action.

First, we will need to create a topic:

```jsx import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVUAPIKEY);

const result = await novu.topics.create({ key: 'posts:comments:123456', name: 'Post comments', }); ```

Assign subscriber to it:

```jsx import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVUAPIKEY);

const topicKey = 'posts:comments:123456';

const response = await novu.topics.addSubscribers(topicKey, { subscribers: ['subscriber-id-1', 'subscriber-id-2', ...], }); ```

And then trigger a notification for this topic:

```jsx const topicKey = 'posts:comments:123456';

await novu.trigger('', { to: [{ type: TriggerRecipientsTypeEnum.TOPIC, topicKey: topicKey }], payload: {}, }); ```

Read more about Topics on our documentation page.

New e-mail editor and preview

We are also excited to announce the release of a new e-mail editor that makes it easier than ever to customize and send e-mails. The editor includes a list of available variables that you can insert into the e-mail templates and a preview feature that allows seeing how the final e-mail will look. We have also added autocomplete support for variables to make it easier to use them in your e-mails. Another helpful feature is the ability to send a test e-mail to your own account, so you can see exactly how the e-mail will look and make any necessary adjustments before sending it out to your subscribers.

CleanShot_2022-12-27_at_10 04 46

Notification Center as a Vue, Angular, and Web Component (Beta)

We have converted our notification center component to be available as a vue, angular, and web component. This will allow to easily integrate the notification center into their projects regardless of their preferred front-end framework. The notification center provides a central location for users to view and manage their notifications, and we believe that making it available in multiple formats will make it even more accessible.

Let’s explore the usage of the Vue component:

```jsx import { createApp } from 'vue'; import NotificationCenterPlugin from '@novu/notification-center-vue'; import '@novu/notification-center-vue/dist/style.css'; import App from './App.vue';

createApp(App).use(NotificationCenterPlugin).mount('#app'); ```

And then use it as a component:

```jsx

```

Read more about the component information in our documentation.

Are you experienced in one of the new components? Help us improve the API and developer experience by submitting an issue on GitHub.

Actors and Avatars

Now you can add an actor when triggering a notification and display their avatar on the notification feed. This allows a recipient of the notification better understand the context of a particular notification and who sent it. To use this feature, users simply need to include the actor's avatar URL when creating a notification.

CleanShot_2022-12-27_at_10 27 39

```jsx import { Novu } from '@novu/node';

export const novu = new Novu('');

await novu.trigger('', { to: { subscriberId: '', email: 'email@email.com' }, actor: { subscriberId: '', avatar: 'http://path-to-avatar.com/profile.png' }, payload: { customVariables: 'Hello' } } ); ```

Request caching

We have also introduced an optional cache layer to cache frequent requests for the notification feed, you can optionally enable cache by specifying the following environment variable when running the novu API

  • REDIS_CACHE_HOST - The path for your Redis instance
  • REDIS_CACHE_PORT - The port of the Redis instance defaults to the default port.

Webhook support

You can now connect webhooks from supported delivery providers to get better visibility on bounces, email opens, and more… Click on the integration, if supported a webhook URL will appear, copy it, and paste it on your provider delivery dashboard.

The webhook information will appear when inspecting and item in the activity feed. Read more about it on our documentation.

Notable features

  • Activity feed list can now be filtered using transactiondId
  • Upgraded Socket.IO to version 4
  • Security fixes and best practices for the API
  • New Info Bip SMS Provider
  • New Burst SMS Provider
  • New Sparkpost SMS Provider
  • New Outlook365 Provider

Other changes in this release

New Contributors

Full Changelog: https://github.com/novuhq/novu/compare/v0.9.2...v0.10.0

- TypeScript
Published by scopsy about 3 years ago

novu - v0.9.0 - Hacktoberfest Release

Excited to announce our biggest release so far at Novu. This release is the work of our team and over 100 contributors from all around the world. Welcome to version 0.9.0. Let's explore what's new!

Notification Observability

CleanShot 2022-11-10 at 17 58 15@2x

We have overhauled how we store and display the execution of the notification workflow. This change allows much more visibility on the errors or successful execution happening. Here are some of the highlights of the activity feed:

  • Each step workflow can be inspected
  • Execution details for each step are displayed with information and timestamps
  • Inspect raw provider error response
  • Understand delayed and digested events

We hope that this release will provide a ground for improvement and iteration to later support webhook information, etc... Looking forward to hearing your thoughts!

Seen and Read for notification center - Breaking Change

Since our initial launch, we've been asked countless times to provide a true seen functionality and, on top of that, to allow distinguish read from seen.

Currently, we've only had a seen property that was behaving like a read, in this release, we have introduced another property named read and the actual seen behavior is only triggered once the user has seen the notification center.

CleanShot 2022-11-10 at 18 47 36@2x

BREAKING CHANGE seen behavior has changed to now be modified for when the user sees the notification, and the new read property should be updated on click of the notification.

Testing workflows from the UI

Want quickly to test your new notification template? From now you can easily trigger a notification and specify the payload variable without leaving the template editor.

APNS integration (beta)

Recently we have introduced the Push channel with support for FCM. From this release, you will be able to send notifications using APNS. This integration is still in beta, and we would love to hear your feedback or suggestions.

Subscribers List Page

In this version new subscribers list page was added to inspect your registered subscribers, right now we don't allow creating or editing subscribers. This will be implemented in the upcoming versions.

Integrated provider credentials check

Hearing your feedback for onboarding to Novu, we now test the providers during the integration phase by performing a test email to the provider using the credentials provided. Errors will be displayed inline when you try to integrate.

We hope this will help to identify issues much faster when connecting new providers. CleanShot 2022-11-10 at 18 52 28@2x

New navigation Spotlight

CleanShot 2022-11-10 at 18 53 57@2x

Scheduled delay notifications

It is now possible to specify a delayed key following the ISO format, and the delay functionality will be delayed until this timestamp. This could be useful to delay the execution of a message until a predefined dynamic date rather than a hardcoded number of minutes or days.

CleanShot 2022-11-10 at 19 10 56@2x

Adding steps in the middle of the workflow

Steps could be now added in the middle between 2 existing nodes in the UI CleanShot 2022-11-10 at 19 15 01@2x

Other notable changes

  • Regenerating API Keys is now possible by visiting the settings page
  • The novu notification center is available in 45+ new languages! 🌍
  • Novu is now available at the Vercel marketplace, for easier integration with your vercel deployed projects
  • New MS Teams chat provider
  • Various UI and bug fixes resolved (more details in the change list)
  • Documentation improvements
  • Better Kubernetes examples and support
  • Fixed invite link for self-hosted deployments
  • Improved API support in our @novu/node SDK
  • Implemented delivery providers webhook parsing, will be supported fully in next release
  • Higher unit tests coverage for our WEB platform components
  • A lot more!

Changelist

  • remove last ; by @matigumma in https://github.com/novuhq/novu/pull/1260
  • feat: add subscibers list page by @jainpawan21 in https://github.com/novuhq/novu/pull/1182
  • feat: Add new provider for MS Teams by @dcamarasa in https://github.com/novuhq/novu/pull/1238
  • feat: ability to invite existing user by @venarius in https://github.com/novuhq/novu/pull/1244
  • fix: curl req for notification-groups gets error 500 by @ainouzgali in https://github.com/novuhq/novu/pull/1262
  • Fix embed runtime env variables by @djabarovgeorge in https://github.com/novuhq/novu/pull/1266
  • Fix for BUG #1269 by @JakovGlavac in https://github.com/novuhq/novu/pull/1270
  • test: fix so test are testing so defaults are not overriding trigger payload by @davidsoderberg in https://github.com/novuhq/novu/pull/1272
  • chore: small design improvements for the README file by @andrewgolovanov in https://github.com/novuhq/novu/pull/1273
  • fix bug #1275 by @JakovGlavac in https://github.com/novuhq/novu/pull/1276
  • style: bg-color of step card and zindex of error tooltip by @DanishOnGit in https://github.com/novuhq/novu/pull/1268
  • APNS Integration by @ainouzgali in https://github.com/novuhq/novu/pull/1264
  • Add SendGrid provider doc by @scopsy in https://github.com/novuhq/novu/pull/1281
  • fix(jarvis): run docs script branch by @p-fernandez in https://github.com/novuhq/novu/pull/1284
  • feat: Add Global and Service Specific Context Path Capibility to all Novu Apps by @Cliftonz in https://github.com/novuhq/novu/pull/1285
  • fix: smaller fixes for subscriber table by @venarius in https://github.com/novuhq/novu/pull/1293
  • feat: Add Capability to set Custom Redis Prefix by @Cliftonz in https://github.com/novuhq/novu/pull/1287
  • Add save button for digest by @Wyfy0107 in https://github.com/novuhq/novu/pull/1172
  • feat: added functionality to test providers creds during creation by @BiswaViraj in https://github.com/novuhq/novu/pull/1254
  • fix: add run local doc link in readme by @jainpawan21 in https://github.com/novuhq/novu/pull/1296
  • feat: Add interface to prepare for webhook feature by @davidsoderberg in https://github.com/novuhq/novu/pull/1279
  • feat: add so limit can be provided to endpoint by @davidsoderberg in https://github.com/novuhq/novu/pull/1277
  • refactor: workflow queue service by @davidsoderberg in https://github.com/novuhq/novu/pull/1288
  • feat: add spotlight for navigation and some actions by @davidsoderberg in https://github.com/novuhq/novu/pull/1257
  • feat(wip): scheduled delay feature by @ainouzgali in https://github.com/novuhq/novu/pull/1283
  • feat(api): Inforce API key generation is unique by @p-fernandez in https://github.com/novuhq/novu/pull/1299
  • Regenerate api keys by @florian-lefebvre in https://github.com/novuhq/novu/pull/1292
  • fix: api script for e2e tests in root package.json by @jainpawan21 in https://github.com/novuhq/novu/pull/1298
  • fix: missing error message due object object print by @djabarovgeorge in https://github.com/novuhq/novu/pull/1290
  • feat: add empty workflow file for webhook service by @davidsoderberg in https://github.com/novuhq/novu/pull/1309
  • fix: webhook deploy in main by @davidsoderberg in https://github.com/novuhq/novu/pull/1310
  • Changed the Contribution Guidelines link by @mohanthilak in https://github.com/novuhq/novu/pull/1314
  • Copyedit the Getting Started Page under Notification Center in Novu Docs Website by @Rutam21 in https://github.com/novuhq/novu/pull/1340
  • Added how to get Novu's swag by @iampearceman in https://github.com/novuhq/novu/pull/1332
  • test describe wrong by @LucasLeandroBR in https://github.com/novuhq/novu/pull/1325
  • docs: add gitpod quick open by @krshkun in https://github.com/novuhq/novu/pull/1329
  • [NV-796] - i18n - Sanskrit Support by @Rutam21 in https://github.com/novuhq/novu/pull/1338
  • (docs): fix typos in multiple files by @stanulilic in https://github.com/novuhq/novu/pull/1335
  • [NV-933] - Activity Feed - fix month day by @ozanuslan in https://github.com/novuhq/novu/pull/1351
  • NV-1327 i18n - Odia Support by @Rutam21 in https://github.com/novuhq/novu/pull/1328
  • feat: add webhook endpoint for email providers by @davidsoderberg in https://github.com/novuhq/novu/pull/1265
  • feat: add mark all as read functionality by @jainpawan21 in https://github.com/novuhq/novu/pull/1080
  • fix: so messages endpoints are shown in swagger json by @davidsoderberg in https://github.com/novuhq/novu/pull/1360
  • Fix some typos by @Chii-Onan in https://github.com/novuhq/novu/pull/1354
  • Add Nepali language support for @novu/notification-center by @diwash007 in https://github.com/novuhq/novu/pull/1361
  • feat: add invite link by @djabarovgeorge in https://github.com/novuhq/novu/pull/1308
  • Seen read test by @djabarovgeorge in https://github.com/novuhq/novu/pull/1295
  • Updated the API Key insertion step for SendGrid. by @mohanthilak in https://github.com/novuhq/novu/pull/1364
  • fix: close button acts as submit button by @geisterfurz007 in https://github.com/novuhq/novu/pull/1369
  • Fix typo in architecture.md by @kVarunkk in https://github.com/novuhq/novu/pull/1388
  • Grammatical errors fixed by @VasuDevrani in https://github.com/novuhq/novu/pull/1384
  • i18n - Polish support by @vanyaxk in https://github.com/novuhq/novu/pull/1379
  • docs: Updated FCM integration instructions by @saby22 in https://github.com/novuhq/novu/pull/1381
  • fix: so message identifier is saved from send method by @davidsoderberg in https://github.com/novuhq/novu/pull/1387
  • Updated the header bannners by @iampearceman in https://github.com/novuhq/novu/pull/1395
  • Deleted the 'How to get our swag?' toggle by @iampearceman in https://github.com/novuhq/novu/pull/1398
  • fixed bug in template by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1394
  • Grammar Correction in README.md file by @aguywithnojob in https://github.com/novuhq/novu/pull/1389
  • Update line in introduction.md file by @Susmita-Dey in https://github.com/novuhq/novu/pull/1393
  • fix: so subscriber is used to filter activity feed by @davidsoderberg in https://github.com/novuhq/novu/pull/1399
  • feat: add i18n support for kannada by @Asmit2952 in https://github.com/novuhq/novu/pull/1353
  • i18n - Urdu Support by @ArmanChand in https://github.com/novuhq/novu/pull/1373
  • Added Docs page for Postmark by @mohanthilak in https://github.com/novuhq/novu/pull/1371
  • i18n – Czech support by @tomasbranda in https://github.com/novuhq/novu/pull/1380
  • Update line in introduction.md file by @AshishSharma1203 in https://github.com/novuhq/novu/pull/1403
  • Fix Grammatical errors in templates.md by @kVarunkk in https://github.com/novuhq/novu/pull/1410
  • i18n - Tamil Support by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1406
  • i18n - Punjabi Support by @ArmanChand in https://github.com/novuhq/novu/pull/1402
  • Fix grammatical errors in subscribers.md by @kVarunkk in https://github.com/novuhq/novu/pull/1421
  • feat: i18n support for marathi by @Asmit2952 in https://github.com/novuhq/novu/pull/1416
  • feat: i18n support for Korean language by @omimakhare in https://github.com/novuhq/novu/pull/1420
  • fix(jarvis): fix script for running web tests in cypress cli by @p-fernandez in https://github.com/novuhq/novu/pull/1429
  • Language code correction: punjabi by @fadkeabhi in https://github.com/novuhq/novu/pull/1436
  • docs: Added documentation for AWS SNS by @chavda-bhavik in https://github.com/novuhq/novu/pull/1413
  • feat: i18n support for Hungarian language by @IamsahilPhadtare in https://github.com/novuhq/novu/pull/1440
  • Fix Grammatical errors in environments.md by @kVarunkk in https://github.com/novuhq/novu/pull/1445
  • chore(i18n): add Indonesian language support by @rahmat-st in https://github.com/novuhq/novu/pull/1434
  • i18n - Fix spanish translation by @pmontp19 in https://github.com/novuhq/novu/pull/1428
  • fix: take into account credentials.senderName in sendgrid provider by @sebastiaanviaene in https://github.com/novuhq/novu/pull/1418
  • feat(dal): execution details repository implementation by @p-fernandez in https://github.com/novuhq/novu/pull/1423
  • feat: expo provider by @psteinroe in https://github.com/novuhq/novu/pull/1258
  • docs: Fix broken image link by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1432
  • Added link to the banner of Hacktoberfest by @thomasbnt in https://github.com/novuhq/novu/pull/1337
  • Wrong response status on missing template in trigger-event.usecase.ts by @Rutam21 in https://github.com/novuhq/novu/pull/1326
  • fix: NV-904 Errors in Integration Store by @geisterfurz007 in https://github.com/novuhq/novu/pull/1368
  • Copyedit the Subscribers Page under Platform in Novu Docs Website by @ArmanChand in https://github.com/novuhq/novu/pull/1439
  • feat(jarvis): add options to run api tests by @p-fernandez in https://github.com/novuhq/novu/pull/1441
  • feat: added subject variables to variable manager by @MihirShinde-29 in https://github.com/novuhq/novu/pull/1425
  • fix(github-actions): test providers script was not running by @p-fernandez in https://github.com/novuhq/novu/pull/1442
  • fix(auth): during invitation if active session logout redirect by @p-fernandez in https://github.com/novuhq/novu/pull/1305
  • Add Catalan support and translations by @pmontp19 in https://github.com/novuhq/novu/pull/1427
  • Adding Japanese Language support by @Yash-sudo-web in https://github.com/novuhq/novu/pull/1444
  • Feat/test api keys card component by @yk-jp in https://github.com/novuhq/novu/pull/1412
  • feat: update docs styles to match the api docs by @k8isdead in https://github.com/novuhq/novu/pull/1430
  • Complete events module in @novu/node by @florian-lefebvre in https://github.com/novuhq/novu/pull/1357
  • feat: test connect integration form by @geisterfurz007 in https://github.com/novuhq/novu/pull/1377
  • Complete environment module by @Wyfy0107 in https://github.com/novuhq/novu/pull/1370
  • Updated the monorepo by @olinabin2004 in https://github.com/novuhq/novu/pull/1472
  • Fixed minor grammatical error by @Rounak-28 in https://github.com/novuhq/novu/pull/1474
  • Added Assamese Support by @AranavMahalpure in https://github.com/novuhq/novu/pull/1466
  • Added Sindhi support by @fadkeabhi in https://github.com/novuhq/novu/pull/1414
  • fix: fixes markAllAsRead field to its correct translation by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1493
  • Adding Danish Language support by @Yash-sudo-web in https://github.com/novuhq/novu/pull/1476
  • feat: i18n support for Greek language by @IamsahilPhadtare in https://github.com/novuhq/novu/pull/1438
  • fix: typo in architecture.md by @dmulligan in https://github.com/novuhq/novu/pull/1497
  • feat: add endpoint for execution details by @davidsoderberg in https://github.com/novuhq/novu/pull/1490
  • Allow adding new nodes to middle of workflow by @raikasdev in https://github.com/novuhq/novu/pull/1248
  • fix: fix changeids in web api to fit change of bulk apply endpoint by @ainouzgali in https://github.com/novuhq/novu/pull/1500
  • docs: minor fix in CONTRIBUTING.md file by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1501
  • update: added table of contents in readme by @BoseSj in https://github.com/novuhq/novu/pull/1502
  • feat(spotlight): add navigation to integrations in the command palette by @nidble in https://github.com/novuhq/novu/pull/1482
  • Updated i18-Gujarati Support with appropriate language code by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1451
  • Add navigation to Settings in command palette by @npv12 in https://github.com/novuhq/novu/pull/1486
  • feat: Complete Changes module by @L-390 in https://github.com/novuhq/novu/pull/1477
  • updated the sentence grammatical error in docs by @akshitagupta15june in https://github.com/novuhq/novu/pull/1485
  • Feature: Add i18n - Telugu Support by @Susmita-Dey in https://github.com/novuhq/novu/pull/1489
  • Update "Report bug" link in README by @Susmita-Dey in https://github.com/novuhq/novu/pull/1487
  • Added Kurdish translation files by @fadkeabhi in https://github.com/novuhq/novu/pull/1437
  • Added Bulgarian Support by @AranavMahalpure in https://github.com/novuhq/novu/pull/1455
  • fix: pull request template typo by @nidble in https://github.com/novuhq/novu/pull/1512
  • feat: add turkish language support by @thenishantsapkota in https://github.com/novuhq/novu/pull/1505
  • Fixed delay.md by adding necessary changes in grammars by @akshitagupta15june in https://github.com/novuhq/novu/pull/1517
  • Fixed templates.md by removing comma errors and minor grammatical errors by @akshitagupta15june in https://github.com/novuhq/novu/pull/1516
  • Fixed grammatical errors in architecture.md by @akshitagupta15june in https://github.com/novuhq/novu/pull/1540
  • Updated integrations.md sentences error by @akshitagupta15june in https://github.com/novuhq/novu/pull/1528
  • Updated environments.md by fixing errors by @akshitagupta15june in https://github.com/novuhq/novu/pull/1527
  • Added Portuguese language by @ManishModak in https://github.com/novuhq/novu/pull/1504
  • Add navigation to Activity feed in command palette by @og118 in https://github.com/novuhq/novu/pull/1535
  • Updated react-components.md by fixing minor comma errors by @akshitagupta15june in https://github.com/novuhq/novu/pull/1544
  • Updated slack.md by fixing docs by @akshitagupta15june in https://github.com/novuhq/novu/pull/1545
  • Updated monorepo-structure.md by fixing docs by @akshitagupta15june in https://github.com/novuhq/novu/pull/1546
  • i18n - adding Vietnamese language support. by @Yash-sudo-web in https://github.com/novuhq/novu/pull/1552
  • i18n - Norwegian support by @akshitagupta15june in https://github.com/novuhq/novu/pull/1559
  • Updated Discord Server Invite Link by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1563
  • Fixed typo email in the How to add a provider ? page by @bishal7679 in https://github.com/novuhq/novu/pull/1575
  • i18n: added Romanian language support by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1526
  • feat: implement Postmark provider connection test by @daniel-shuy in https://github.com/novuhq/novu/pull/1542
  • Feature to add i18n - Igbo Language support by @akshitagupta15june in https://github.com/novuhq/novu/pull/1590
  • Improve the translation for hindi by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1530
  • Feature to add i18n - Swedish Language Support by @akshitagupta15june in https://github.com/novuhq/novu/pull/1582
  • Bug fixes: fixed react-components.md by @akshitagupta15june in https://github.com/novuhq/novu/pull/1599
  • Updated subscribers.md with necessary changes by @akshitagupta15june in https://github.com/novuhq/novu/pull/1598
  • Added Word For Hindi Translation by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1600
  • i18n - Thai Language support by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1595
  • Update slack.md and discord.md by fixing documentation by @michizhou in https://github.com/novuhq/novu/pull/1547
  • Fixed the introduction.md by @akshitagupta15june in https://github.com/novuhq/novu/pull/1564
  • fix: Tests failing by @L-390 in https://github.com/novuhq/novu/pull/1572
  • feat: Add webhook parser for twilio provider by @TheLearneer in https://github.com/novuhq/novu/pull/1473
  • feat: add missing ru translation by @lex111 in https://github.com/novuhq/novu/pull/1584
  • i18n - Hebrew support by @ranrib in https://github.com/novuhq/novu/pull/1604
  • corrected mistranslation of notifications in bn.ts translation file by @kaustav202 in https://github.com/novuhq/novu/pull/1554
  • Fix/missing env variables by @chavda-bhavik in https://github.com/novuhq/novu/pull/1484
  • feat: implement Nodemailer provider connection test by @daniel-shuy in https://github.com/novuhq/novu/pull/1541
  • Add Sinhala language support by @Dilshan-H in https://github.com/novuhq/novu/pull/1511
  • refactor: improve sanskrit translation by @thenishantsapkota in https://github.com/novuhq/novu/pull/1532
  • feat: implement Mandrill provider connection test by @daniel-shuy in https://github.com/novuhq/novu/pull/1543
  • update: link in "missing a feature?" by @BoseSj in https://github.com/novuhq/novu/pull/1533
  • update(introduction.md): fix a typo by @BoseSj in https://github.com/novuhq/novu/pull/1534
  • Update postmark.md and sendgrid.md by fixing documentation by @michizhou in https://github.com/novuhq/novu/pull/1548
  • i18n - Lao support by @Susmita-Dey in https://github.com/novuhq/novu/pull/1555
  • docs: updated README.md by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1571
  • Updating the link in the provider section by @bishal7679 in https://github.com/novuhq/novu/pull/1574
  • fix: Changes heading level to be consistent with markdownlint by @nilesh-maurya in https://github.com/novuhq/novu/pull/1605
  • feat(i18n): add km(Khmer) language by @munyoudoum in https://github.com/novuhq/novu/pull/1566
  • Refactor Readme.md by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1583
  • Corrected a typo error by @Akash190104 in https://github.com/novuhq/novu/pull/1608
  • Added word in Persian translation by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1617
  • Updated quick-start.md by fixing necessary changes by @akshitagupta15june in https://github.com/novuhq/novu/pull/1613
  • feat: add missing translation in nepali language by @thenishantsapkota in https://github.com/novuhq/novu/pull/1606
  • Update activity-feed.md and templates.md documentation by @michizhou in https://github.com/novuhq/novu/pull/1549
  • update(activity-feed.md): show activity feed image by @BoseSj in https://github.com/novuhq/novu/pull/1578
  • docs: fix formatting of the requirements section by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1626
  • Update .eslintignore by @Aditya-Kapadiya in https://github.com/novuhq/novu/pull/1616
  • Corrected a Typo by @Akash190104 in https://github.com/novuhq/novu/pull/1612
  • Fixed activity-feed.md by adding changes by @akshitagupta15june in https://github.com/novuhq/novu/pull/1614
  • Add missing Azerbaijaini translation by @Smartmind12 in https://github.com/novuhq/novu/pull/1587
  • grammatical error in readme fixed by @harshagrawal523 in https://github.com/novuhq/novu/pull/1620
  • chore: standardize novu's discord server link throughout the codebase by @washbin in https://github.com/novuhq/novu/pull/1623
  • Update @novu/node readme by @vrabe in https://github.com/novuhq/novu/pull/1611
  • fix: deprecated class-transformer methods by @jainpawan21 in https://github.com/novuhq/novu/pull/1615
  • Add missing Uzbek Language Support by @Smartmind12 in https://github.com/novuhq/novu/pull/1589
  • Corrected some typos and punctuation by @Akash190104 in https://github.com/novuhq/novu/pull/1610
  • fix: add pagination support for subscriber feed endpoint by @jainpawan21 in https://github.com/novuhq/novu/pull/1576
  • Correct grammar and flow by @immattdavison in https://github.com/novuhq/novu/pull/1629
  • Corrected grammatical errors. by @Akash190104 in https://github.com/novuhq/novu/pull/1609
  • feat: i18n-dutch support by @Asmit2952 in https://github.com/novuhq/novu/pull/1569
  • Refactored a punctuation mark by @Srikarmk in https://github.com/novuhq/novu/pull/1628
  • feat: Firetext provider by @nickprinsloo in https://github.com/novuhq/novu/pull/1515
  • added navigation to changes in command palette by @MihirShinde-29 in https://github.com/novuhq/novu/pull/1536
  • Update CONTRIBUTING.md by @saimaheshtaduri in https://github.com/novuhq/novu/pull/1636
  • Complete subscriber module in @novu/node by @nilesh-maurya in https://github.com/novuhq/novu/pull/1538
  • Added Translation Arabic Word by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1635
  • Added Kazakh language support by @kailashchoudhary11 in https://github.com/novuhq/novu/pull/1641
  • Fixed some documentation errors by @Akash190104 in https://github.com/novuhq/novu/pull/1639
  • Correct grammar and sentence flow in quick start by @immattdavison in https://github.com/novuhq/novu/pull/1640
  • fix: update stack ordering to put spotlight on front by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1643
  • Made some changes to the doc by @Akash190104 in https://github.com/novuhq/novu/pull/1607
  • style: improve responsiveness of auth container by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1634
  • Documentation error fixed by @Akash190104 in https://github.com/novuhq/novu/pull/1667
  • Added the 'settings' translation by @das-amit in https://github.com/novuhq/novu/pull/1669
  • Added Filipino translate by @maglionaire in https://github.com/novuhq/novu/pull/1602
  • chore(i18n): add Melayu language support by @rahmat-st in https://github.com/novuhq/novu/pull/1672
  • feat: add pagination in changes page and api by @jainpawan21 in https://github.com/novuhq/novu/pull/1579
  • Minor grammatical changes in Readme file by @LunarMarathon in https://github.com/novuhq/novu/pull/1673
  • style: improve responsiveness of the dashboard by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1637
  • chore: minor update for fil/tl language support by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1675
  • Added the missing Ukrainian translation by @das-amit in https://github.com/novuhq/novu/pull/1678
  • Feat: Add webhook parser for Postmark provider by @emhng in https://github.com/novuhq/novu/pull/1506
  • Feature: i18n - Basque Support by @DonnachaHeff in https://github.com/novuhq/novu/pull/1638
  • fix(translations): French Translations file missing settings translation by @DonnachaHeff in https://github.com/novuhq/novu/pull/1677
  • i18n - Zulu support by @codingis4noobs2 in https://github.com/novuhq/novu/pull/1593
  • fix(translations): Gujarati Translations file missing translation for 'settings' by @DonnachaHeff in https://github.com/novuhq/novu/pull/1681
  • feat(lang): add galego language by @p-fernandez in https://github.com/novuhq/novu/pull/1686
  • Update providers list in readmes and docs by @vrabe in https://github.com/novuhq/novu/pull/1680
  • Add i18n - Armenian Language Support by @Smartmind12 in https://github.com/novuhq/novu/pull/1666
  • Update settings.json by @ranodeepbanerjee in https://github.com/novuhq/novu/pull/1691
  • Fix Grammatical errors and sentence flows by @immattdavison in https://github.com/novuhq/novu/pull/1684
  • Fix: issues with the Bengali translation by @furtidev in https://github.com/novuhq/novu/pull/1692
  • feat(docker): add kubernetes files by @L-U-C-K-Y in https://github.com/novuhq/novu/pull/1627
  • Doc edits by @LunarMarathon in https://github.com/novuhq/novu/pull/1695
  • Updated sns.md by @LunarMarathon in https://github.com/novuhq/novu/pull/1694
  • docs: added documentation for telnyx by @BoseSj in https://github.com/novuhq/novu/pull/1698
  • Added Twilio SMS Docs by @CursedRock17 in https://github.com/novuhq/novu/pull/1699
  • Added Irish language translation by @PalashDhabale in https://github.com/novuhq/novu/pull/1632
  • Feat: Bengali Language Merged with English by @hitblast in https://github.com/novuhq/novu/pull/1705
  • SMS77 documentation page by @LunarMarathon in https://github.com/novuhq/novu/pull/1700
  • doc: added telnyx doc link to index.md by @BoseSj in https://github.com/novuhq/novu/pull/1706
  • chore: Added unit test coverage for emailjs provider by @DonnachaHeff in https://github.com/novuhq/novu/pull/1708
  • feat: Add cypress tests for ProviderCard by @shtelzerartem in https://github.com/novuhq/novu/pull/1697
  • docs: added provider documentation link by @BoseSj in https://github.com/novuhq/novu/pull/1709
  • Update README.md by @Sreevidya181 in https://github.com/novuhq/novu/pull/1711
  • Created a Email.js provider documentation page #1665 by @priyanshkulshrestha in https://github.com/novuhq/novu/pull/1714
  • fix: links to request feature and report bug throughout the codebase by @washbin in https://github.com/novuhq/novu/pull/1717
  • update: fix typo in emailjs.md by @BoseSj in https://github.com/novuhq/novu/pull/1720
  • docs: Added Mailjet provider documentation page by @akarsh-jain-790 in https://github.com/novuhq/novu/pull/1712
  • Updated the missing translation of 'Settings' by @das-amit in https://github.com/novuhq/novu/pull/1715
  • feat: Add webhook parser for Sendinblue by @ShaneMaglangit in https://github.com/novuhq/novu/pull/1625
  • feat: Created webhook parser for Mailjet by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1453
  • Fixed the italian translation for the notification center by @TheZal in https://github.com/novuhq/novu/pull/1718
  • feat: Add navigation to team members in command palette by @npv12 in https://github.com/novuhq/novu/pull/1726
  • Grammar fix for sms77 by @TheZal in https://github.com/novuhq/novu/pull/1722
  • Grammar fix for postmark by @TheZal in https://github.com/novuhq/novu/pull/1721
  • Updated Architecture Diagram by @kaustav202 in https://github.com/novuhq/novu/pull/1719
  • feat: i18n support for Afrikaans language by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1728
  • fix: full #1735 fix by @MaximFedarau in https://github.com/novuhq/novu/pull/1738
  • docs: Add Send In Blue provider documentation page by @tanishk-23 in https://github.com/novuhq/novu/pull/1730
  • feat: add nodemailer integration docs by @shtelzerartem in https://github.com/novuhq/novu/pull/1731
  • feat: Created Webhook parser for Mandrill by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1514
  • feat: i18n support for Belarusian language by @MaximFedarau in https://github.com/novuhq/novu/pull/1739
  • Test Mailjet connection by @chavda-bhavik in https://github.com/novuhq/novu/pull/1733
  • feat: Add the notification templates module to node package by @codingmickey in https://github.com/novuhq/novu/pull/1670
  • [NV-924] - Add cypress component test to ActivityStatistics component by @soundarrajan-official in https://github.com/novuhq/novu/pull/1724
  • Updated link to enforcement ladder [ code-conduct.md ] by @kaustav202 in https://github.com/novuhq/novu/pull/1742
  • Added cypress component test to BrandingForm component by @MihirShinde-29 in https://github.com/novuhq/novu/pull/1736
  • fix: fix decision of when should create another digest event by @ainouzgali in https://github.com/novuhq/novu/pull/1707
  • docs: Fix Typos in sendinblue.md by @SarojWasti in https://github.com/novuhq/novu/pull/1748
  • fix: postmark tests by @shtelzerartem in https://github.com/novuhq/novu/pull/1756
  • refactor: updated links to open in a new tab by @BiswaViraj in https://github.com/novuhq/novu/pull/1762
  • docs: Remove link to provider-template by @SarojWasti in https://github.com/novuhq/novu/pull/1764
  • docs(slack): small typo fix by @ranrib in https://github.com/novuhq/novu/pull/1765
  • Add notifications group module in @novu/node by @deepak-sreekumar in https://github.com/novuhq/novu/pull/1741
  • docs: Fix typo in react-components.md by @dmulligan in https://github.com/novuhq/novu/pull/1763
  • Fixed all grammar issues and typos in README.md by @bishal7679 in https://github.com/novuhq/novu/pull/1747
  • Fixed documentation errors by @Akash190104 in https://github.com/novuhq/novu/pull/1773
  • Update docker-deploy.md by @Akash190104 in https://github.com/novuhq/novu/pull/1774
  • feat: mailersend check integration function by @shtelzerartem in https://github.com/novuhq/novu/pull/1749
  • fix: fix subscriber variables in trigger snippet not being updated by @ainouzgali in https://github.com/novuhq/novu/pull/1784
  • Update quick-start.md by @Akash190104 in https://github.com/novuhq/novu/pull/1785
  • Fix large attachment issue by @chavda-bhavik in https://github.com/novuhq/novu/pull/1256
  • feat(): Add auto PR labeler by @scopsy in https://github.com/novuhq/novu/pull/1786
  • fix: full #1780 fix by @MaximFedarau in https://github.com/novuhq/novu/pull/1790
  • style: Fix UI issues in settings page by @TheLearneer in https://github.com/novuhq/novu/pull/1788
  • docs: Change SUBSCRIBER_ID to subscriberId by @ShashankKumarSaxena in https://github.com/novuhq/novu/pull/1793
  • docs: Improve monorepo documentation by @SarojWasti in https://github.com/novuhq/novu/pull/1787
  • Tab Border Color Notification center by @aggmoulik in https://github.com/novuhq/novu/pull/1365
  • feat: implement #1781 by @MaximFedarau in https://github.com/novuhq/novu/pull/1789
  • Fix receiver spelling. by @ShashankKumarSaxena in https://github.com/novuhq/novu/pull/1797
  • feat: assign milestone by @scopsy in https://github.com/novuhq/novu/pull/1802
  • Update introduction.md by @Raunik2 in https://github.com/novuhq/novu/pull/1810
  • Contributors section properly loading in README by @Astrodevil in https://github.com/novuhq/novu/pull/1808
  • add apns provider initaization usage by @ShashankKumarSaxena in https://github.com/novuhq/novu/pull/1800
  • feat: added customizability to empty state in notification center by @TheLearneer in https://github.com/novuhq/novu/pull/1795
  • feat: Added Telnyx webhook parser by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1759
  • Fix "Need Help?" link in the Readme file by @tuanlc in https://github.com/novuhq/novu/pull/1827
  • Update README.md by @Raunik2 in https://github.com/novuhq/novu/pull/1817
  • feat: i18n support for Albanian by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1825
  • fix: update node version in .nvmrc by @devXprite in https://github.com/novuhq/novu/pull/1820
  • fix: fix wrong text in settings tab by @MaximFedarau in https://github.com/novuhq/novu/pull/1826
  • feat: notify about security changes on settings page by @lex111 in https://github.com/novuhq/novu/pull/1819
  • feat: add lithuanian i18n support by @MaximFedarau in https://github.com/novuhq/novu/pull/1840
  • [fix] Fix Tamil translation errors by @Akshu-on-github in https://github.com/novuhq/novu/pull/1836
  • Fix spelling and punctuation by @Raunik2 in https://github.com/novuhq/novu/pull/1832
  • fix: comment typo by @eltociear in https://github.com/novuhq/novu/pull/1849
  • Hyperlinked the novu logo. by @Abubakrce19 in https://github.com/novuhq/novu/pull/1858
  • fix: layout and details for feed by @davidsoderberg in https://github.com/novuhq/novu/pull/1855
  • feat: Latvian language i18n support by @MaximFedarau in https://github.com/novuhq/novu/pull/1851
  • Fix missing integration error not shown for email and sms by @ainouzgali in https://github.com/novuhq/novu/pull/1857
  • [feat] Add section about Jarvis by @Akshu-on-github in https://github.com/novuhq/novu/pull/1852
  • fix: so parent digest is saved on digested notifications by @davidsoderberg in https://github.com/novuhq/novu/pull/1869
  • i18n support for Bihari language by @omimakhare in https://github.com/novuhq/novu/pull/1870
  • removed duplicate entry and corrected alphabetical order by @omimakhare in https://github.com/novuhq/novu/pull/1871
  • feat(web): accordion for execution details modal by @p-fernandez in https://github.com/novuhq/novu/pull/1862
  • [docs] FAQ: How do I customize messages on Novu? by @Akshu-on-github in https://github.com/novuhq/novu/pull/1838
  • fix: add Redis optional configurable password by @ljobse in https://github.com/novuhq/novu/pull/1864
  • very minor typo in fr translation by @cuitlazotlac in https://github.com/novuhq/novu/pull/1877
  • Update integrations.md by @Raunik2 in https://github.com/novuhq/novu/pull/1818
  • Improved subscriber.md by @Abubakrce19 in https://github.com/novuhq/novu/pull/1873
  • refactor: auth pages improvements by @lex111 in https://github.com/novuhq/novu/pull/1865
  • fix: make proper color for box icon in dark mode by @lex111 in https://github.com/novuhq/novu/pull/1841
  • fix: so underscores are replaced with space in step type for step name by @davidsoderberg in https://github.com/novuhq/novu/pull/1883
  • fix: show and hide raw content of detail by @davidsoderberg in https://github.com/novuhq/novu/pull/1885
  • i18n Amharic language support by @rameshwaghmare123 in https://github.com/novuhq/novu/pull/1886
  • fix: make visible code block border on scroll by @lex111 in https://github.com/novuhq/novu/pull/1884
  • chore: Improved quick-start.md by @Abubakrce19 in https://github.com/novuhq/novu/pull/1896
  • docs: Improve deploy using docker pages by @npentrel in https://github.com/novuhq/novu/pull/1913
  • docs: Improve Architecture page by @npentrel in https://github.com/novuhq/novu/pull/1912
  • feat: added a detailed PR Template by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1866
  • docs: fixed typo's 🛠 by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1915
  • Small details changes - debugging by @ainouzgali in https://github.com/novuhq/novu/pull/1920
  • refactor: make trigger cards clickable by @lex111 in https://github.com/novuhq/novu/pull/1889
  • i18n Samoan language support by @MrKrishnaAgarwal in https://github.com/novuhq/novu/pull/1891
  • fix(web): remove back link and fix layout footer of exec-det by @p-fernandez in https://github.com/novuhq/novu/pull/1894
  • fix(web): wrap error icon to notification icon for any device size by @p-fernandez in https://github.com/novuhq/novu/pull/1895
  • feat(web): temporarily hide webhook feedback from ui by @p-fernandez in https://github.com/novuhq/novu/pull/1926
  • fix(doc): fix typos in "Run Novu locally" doc by @vrabe in https://github.com/novuhq/novu/pull/1908
  • Support for handlebars dateFormat by @chavda-bhavik in https://github.com/novuhq/novu/pull/1823
  • docs: Improve quick start by @npentrel in https://github.com/novuhq/novu/pull/1910
  • docs: change issues and discussions in contributing.md to links instead of plain text by @washbin in https://github.com/novuhq/novu/pull/1899
  • docs: Improve Run Novu locally docs by @npentrel in https://github.com/novuhq/novu/pull/1911
  • feat: Add Feeds Module to node package by @viveknshah in https://github.com/novuhq/novu/pull/1903
  • added link for issues and discussion by @Akshay-21 in https://github.com/novuhq/novu/pull/1904
  • Updated readme with code of conduct by @Akshay-21 in https://github.com/novuhq/novu/pull/1905
  • i18n support for Bosnian language by @abhilipsasahoo03 in https://github.com/novuhq/novu/pull/1875
  • fix: color of digest icon if no explicit color is passed by @ainouzgali in https://github.com/novuhq/novu/pull/1931
  • fix: so email and phone are show on subscriber in trigger example by @davidsoderberg in https://github.com/novuhq/novu/pull/1927
  • fix: remove box shadow from got a question button by @davidsoderberg in https://github.com/novuhq/novu/pull/1939
  • feat: add default width and height for digest icon by @davidsoderberg in https://github.com/novuhq/novu/pull/1940
  • feat: add community usecase projects docs page by @davidsoderberg in https://github.com/novuhq/novu/pull/1937
  • fix: docs about projects and articles by @davidsoderberg in https://github.com/novuhq/novu/pull/1941
  • fix(web): avoid execution details modal to break when no subscriber vars by @p-fernandez in https://github.com/novuhq/novu/pull/1943
  • feat(api): trim the response of get notification endpoint by @p-fernandez in https://github.com/novuhq/novu/pull/1942
  • fix: so success message in execution modal will be last detail message by @davidsoderberg in https://github.com/novuhq/novu/pull/1945
  • Use Java-style array declaration instead of C-style array declaration… by @wanderer163 in https://github.com/novuhq/novu/pull/1932
  • Fix grammar and typos in the READMEs by @wanderer163 in https://github.com/novuhq/novu/pull/1934
  • Show indication for a merged digested execution - debugging by @ainouzgali in https://github.com/novuhq/novu/pull/1929
  • Add environment module by @Wyfy0107 in https://github.com/novuhq/novu/pull/1928
  • feat: add error of invalid json on test workflow params by @ainouzgali in https://github.com/novuhq/novu/pull/1954
  • Refactor webhook provider statuses by @davidsoderberg in https://github.com/novuhq/novu/pull/1953
  • feat: add text about update frequency by @davidsoderberg in https://github.com/novuhq/novu/pull/1955
  • fix(web): make step hover border round by @p-fernandez in https://github.com/novuhq/novu/pull/1948
  • test(navmenu): make sure when click menu item class will change to active state by @chaiwattsw in https://github.com/novuhq/novu/pull/1829
  • Nv 1128 got q modal not opened when clicked by @p-fernandez in https://github.com/novuhq/novu/pull/1961
  • feat(web): add hover styles to activity list items by @p-fernandez in https://github.com/novuhq/novu/pull/1962
  • fix(web): pass the values to trigger snippet by @p-fernandez in https://github.com/novuhq/novu/pull/1952
  • Nv 1136 show only the json object on trigger information window by @ainouzgali in https://github.com/novuhq/novu/pull/1966
  • feat: improve pending messages for digest and delay by @ainouzgali in https://github.com/novuhq/novu/pull/1967
  • Stop refetch when status is not pending by @ainouzgali in https://github.com/novuhq/novu/pull/1968
  • refactor: updated the link for create organization redirect by @BiswaViraj in https://github.com/novuhq/novu/pull/1973
  • refactor: usage of execution details status to job status by @davidsoderberg in https://github.com/novuhq/novu/pull/1974
  • fix: details icon to show failed and success icons by @davidsoderberg in https://github.com/novuhq/novu/pull/1977
  • Fix(notification center) api calls on first render by @djabarovgeorge in https://github.com/novuhq/novu/pull/1976

New Contributors

  • @matigumma made their first contribution in https://github.com/novuhq/novu/pull/1260
  • @dcamarasa made their first contribution in https://github.com/novuhq/novu/pull/1238
  • @DanishOnGit made their first contribution in https://github.com/novuhq/novu/pull/1268
  • @p-fernandez made their first contribution in https://github.com/novuhq/novu/pull/1284
  • @Cliftonz made their first contribution in https://github.com/novuhq/novu/pull/1285
  • @florian-lefebvre made their first contribution in https://github.com/novuhq/novu/pull/1292
  • @mohanthilak made their first contribution in https://github.com/novuhq/novu/pull/1314
  • @LucasLeandroBR made their first contribution in https://github.com/novuhq/novu/pull/1325
  • @krshkun made their first contribution in https://github.com/novuhq/novu/pull/1329
  • @stanulilic made their first contribution in https://github.com/novuhq/novu/pull/1335
  • @ozanuslan made their first contribution in https://github.com/novuhq/novu/pull/1351
  • @Chii-Onan made their first contribution in https://github.com/novuhq/novu/pull/1354
  • @diwash007 made their first contribution in https://github.com/novuhq/novu/pull/1361
  • @geisterfurz007 made their first contribution in https://github.com/novuhq/novu/pull/1369
  • @kVarunkk made their first contribution in https://github.com/novuhq/novu/pull/1388
  • @VasuDevrani made their first contribution in https://github.com/novuhq/novu/pull/1384
  • @vanyaxk made their first contribution in https://github.com/novuhq/novu/pull/1379
  • @saby22 made their first contribution in https://github.com/novuhq/novu/pull/1381
  • @MrKrishnaAgarwal made their first contribution in https://github.com/novuhq/novu/pull/1394
  • @aguywithnojob made their first contribution in https://github.com/novuhq/novu/pull/1389
  • @Susmita-Dey made their first contribution in https://github.com/novuhq/novu/pull/1393
  • @Asmit2952 made their first contribution in https://github.com/novuhq/novu/pull/1353
  • @ArmanChand made their first contribution in https://github.com/novuhq/novu/pull/1373
  • @tomasbranda made their first contribution in https://github.com/novuhq/novu/pull/1380
  • @AshishSharma1203 made their first contribution in https://github.com/novuhq/novu/pull/1403
  • @abhilipsasahoo03 made their first contribution in https://github.com/novuhq/novu/pull/1406
  • @omimakhare made their first contribution in https://github.com/novuhq/novu/pull/1420
  • @fadkeabhi made their first contribution in https://github.com/novuhq/novu/pull/1436
  • @IamsahilPhadtare made their first contribution in https://github.com/novuhq/novu/pull/1440
  • @rahmat-st made their first contribution in https://github.com/novuhq/novu/pull/1434
  • @pmontp19 made their first contribution in https://github.com/novuhq/novu/pull/1428
  • @sebastiaanviaene made their first contribution in https://github.com/novuhq/novu/pull/1418
  • @psteinroe made their first contribution in https://github.com/novuhq/novu/pull/1258
  • @thomasbnt made their first contribution in https://github.com/novuhq/novu/pull/1337
  • @MihirShinde-29 made their first contribution in https://github.com/novuhq/novu/pull/1425
  • @Yash-sudo-web made their first contribution in https://github.com/novuhq/novu/pull/1444
  • @yk-jp made their first contribution in https://github.com/novuhq/novu/pull/1412
  • @k8isdead made their first contribution in https://github.com/novuhq/novu/pull/1430
  • @olinabin2004 made their first contribution in https://github.com/novuhq/novu/pull/1472
  • @Rounak-28 made their first contribution in https://github.com/novuhq/novu/pull/1474
  • @AranavMahalpure made their first contribution in https://github.com/novuhq/novu/pull/1466
  • @dmulligan made their first contribution in https://github.com/novuhq/novu/pull/1497
  • @BoseSj made their first contribution in https://github.com/novuhq/novu/pull/1502
  • @nidble made their first contribution in https://github.com/novuhq/novu/pull/1482
  • @codingis4noobs2 made their first contribution in https://github.com/novuhq/novu/pull/1451
  • @npv12 made their first contribution in https://github.com/novuhq/novu/pull/1486
  • @L-390 made their first contribution in https://github.com/novuhq/novu/pull/1477
  • @akshitagupta15june made their first contribution in https://github.com/novuhq/novu/pull/1485
  • @thenishantsapkota made their first contribution in https://github.com/novuhq/novu/pull/1505
  • @ManishModak made their first contribution in https://github.com/novuhq/novu/pull/1504
  • @og118 made their first contribution in https://github.com/novuhq/novu/pull/1535
  • @kailashchoudhary11 made their first contribution in https://github.com/novuhq/novu/pull/1563
  • @bishal7679 made their first contribution in https://github.com/novuhq/novu/pull/1575
  • @daniel-shuy made their first contribution in https://github.com/novuhq/novu/pull/1542
  • @michizhou made their first contribution in https://github.com/novuhq/novu/pull/1547
  • @TheLearneer made their first contribution in https://github.com/novuhq/novu/pull/1473
  • @lex111 made their first contribution in https://github.com/novuhq/novu/pull/1584
  • @kaustav202 made their first contribution in https://github.com/novuhq/novu/pull/1554
  • @Dilshan-H made their first contribution in https://github.com/novuhq/novu/pull/1511
  • @nilesh-maurya made their first contribution in https://github.com/novuhq/novu/pull/1605
  • @munyoudoum made their first contribution in https://github.com/novuhq/novu/pull/1566
  • @Akash190104 made their first contribution in https://github.com/novuhq/novu/pull/1608
  • @ShaneMaglangit made their first contribution in https://github.com/novuhq/novu/pull/1626
  • @Aditya-Kapadiya made their first contribution in https://github.com/novuhq/novu/pull/1616
  • @Smartmind12 made their first contribution in https://github.com/novuhq/novu/pull/1587
  • @harshagrawal523 made their first contribution in https://github.com/novuhq/novu/pull/1620
  • @washbin made their first contribution in https://github.com/novuhq/novu/pull/1623
  • @vrabe made their first contribution in https://github.com/novuhq/novu/pull/1611
  • @immattdavison made their first contribution in https://github.com/novuhq/novu/pull/1629
  • @Srikarmk made their first contribution in https://github.com/novuhq/novu/pull/1628
  • @nickprinsloo made their first contribution in https://github.com/novuhq/novu/pull/1515
  • @saimaheshtaduri made their first contribution in https://github.com/novuhq/novu/pull/1636
  • @das-amit made their first contribution in https://github.com/novuhq/novu/pull/1669
  • @maglionaire made their first contribution in https://github.com/novuhq/novu/pull/1602
  • @LunarMarathon made their first contribution in https://github.com/novuhq/novu/pull/1673
  • @emhng made their first contribution in https://github.com/novuhq/novu/pull/1506
  • @DonnachaHeff made their first contribution in https://github.com/novuhq/novu/pull/1638
  • @ranodeepbanerjee made their first contribution in https://github.com/novuhq/novu/pull/1691
  • @furtidev made their first contribution in https://github.com/novuhq/novu/pull/1692
  • @L-U-C-K-Y made their first contribution in https://github.com/novuhq/novu/pull/1627
  • @CursedRock17 made their first contribution in https://github.com/novuhq/novu/pull/1699
  • @PalashDhabale made their first contribution in https://github.com/novuhq/novu/pull/1632
  • @hitblast made their first contribution in https://github.com/novuhq/novu/pull/1705
  • @shtelzerartem made their first contribution in https://github.com/novuhq/novu/pull/1697
  • @Sreevidya181 made their first contribution in https://github.com/novuhq/novu/pull/1711
  • @priyanshkulshrestha made their first contribution in https://github.com/novuhq/novu/pull/1714
  • @akarsh-jain-790 made their first contribution in https://github.com/novuhq/novu/pull/1712
  • @TheZal made their first contribution in https://github.com/novuhq/novu/pull/1718
  • @MaximFedarau made their first contribution in https://github.com/novuhq/novu/pull/1738
  • @tanishk-23 made their first contribution in https://github.com/novuhq/novu/pull/1730
  • @codingmickey made their first contribution in https://github.com/novuhq/novu/pull/1670
  • @soundarrajan-official made their first contribution in https://github.com/novuhq/novu/pull/1724
  • @SarojWasti made their first contribution in https://github.com/novuhq/novu/pull/1748
  • @ShashankKumarSaxena made their first contribution in https://github.com/novuhq/novu/pull/1793
  • @Raunik2 made their first contribution in https://github.com/novuhq/novu/pull/1810
  • @Astrodevil made their first contribution in https://github.com/novuhq/novu/pull/1808
  • @tuanlc made their first contribution in https://github.com/novuhq/novu/pull/1827
  • @devXprite made their first contribution in https://github.com/novuhq/novu/pull/1820
  • @Akshu-on-github made their first contribution in https://github.com/novuhq/novu/pull/1836
  • @eltociear made their first contribution in https://github.com/novuhq/novu/pull/1849
  • @Abubakrce19 made their first contribution in https://github.com/novuhq/novu/pull/1858
  • @ljobse made their first contribution in https://github.com/novuhq/novu/pull/1864
  • @cuitlazotlac made their first contribution in https://github.com/novuhq/novu/pull/1877
  • @rameshwaghmare123 made their first contribution in https://github.com/novuhq/novu/pull/1886
  • @npentrel made their first contribution in https://github.com/novuhq/novu/pull/1913
  • @viveknshah made their first contribution in https://github.com/novuhq/novu/pull/1903
  • @Akshay-21 made their first contribution in https://github.com/novuhq/novu/pull/1904
  • @wanderer163 made their first contribution in https://github.com/novuhq/novu/pull/1932
  • @chaiwattsw made their first contribution in https://github.com/novuhq/novu/pull/1829

Full Changelog: https://github.com/novuhq/novu/compare/v0.8.0...v0.9.0

- TypeScript
Published by scopsy about 3 years ago

novu - v0.8.0 - Delay and Step Filters

Exciting news to share with you all! This cycle was a bit shorter because the team was on our very first company offsite, and it was the first time we met in person 😍

Nonetheless, we prepared some of the long-awaited features based on your request. So let's dive in!

Delay Step

Starting with the v0.8.0 release, you will be able to add a new Delay step type that will delay the sending of the next step by the time you specify it too. This is useful if you wish to wait a day or an hour before sending something to the user.

In the next feature, we will also allow passing a dynamic delay timestamp on the API request so you can create reminders and snooze for users based on a dynamic field. Exciting times 🤯 And thanks to our fantastic @ainouzgali, that took ownership of this one.

Step Filters

You can now filter step execution based on the request criteria from subscriber and payload. This can help customize flows for translation and only send specific steps based on subscriber properties such as paying customers, etc...

Kudus to @davidsoderberg 🇸🇪 for making this a reality!

Integration Store Encryption

From this version, all secret credentials on the integration store will be encrypted on the database and decrypted in real time when needed to send an actual request. @djabarovgeorge made sure this feature is backward compatible, but you must add a new secret environment key when upgrading to v0.8.0.

Migration guide

You must pass a STORE_ENCRYPTION_KEY environment variable to your docker-compose .env file. This key should be 32 characters long and stored in a secret store.

Multiple organizations switch on the web

Thanks to @venarius you can now switch between multiple organizations you are part of. Look at the new organization switcher at the left bottom part of the navigation menu 😍

Template variable protection and defaults

One of the most exciting features of this release was done by the one and only @venarius. On the template level, you can make some variables required or provide polyfill values for each.

No more Hello null!

CleanShot 2022-09-20 at 15 55 31@2x

And much more!

  • feat: add ability for users to switch and create multiple organizations by @venarius in https://github.com/novuhq/novu/pull/1127
  • feat: add on tab click property to notification center by @davidsoderberg in https://github.com/novuhq/novu/pull/1194
  • i18n - Chinese support by @miles170 in https://github.com/novuhq/novu/pull/1195
  • feat: allow disabling of user registration in docker environment by @venarius in https://github.com/novuhq/novu/pull/1142
  • Linked License, Contribution Guidelines and Contributors List in README.md by @AmanNegi in https://github.com/novuhq/novu/pull/1192
  • fix: social image and add keywords by @jainpawan21 in https://github.com/novuhq/novu/pull/1179
  • feat: add the externalUrlRegex param for Algolia by @andrewgolovanov in https://github.com/novuhq/novu/pull/1185
  • i18n - Bengali support by @samaranand in https://github.com/novuhq/novu/pull/1139
  • Fixed broken link to react components page by @SpencerMiller23 in https://github.com/novuhq/novu/pull/1201
  • feat: add pagination support in templates page by @jainpawan21 in https://github.com/novuhq/novu/pull/1131
  • Delete message endpoint by @davidsoderberg in https://github.com/novuhq/novu/pull/1193
  • feat: added handlebar variable checker and defaults by @venarius in https://github.com/novuhq/novu/pull/1145
  • fix: flow editor height by @venarius in https://github.com/novuhq/novu/pull/1210
  • fix: added new languages to docs by @venarius in https://github.com/novuhq/novu/pull/1212
  • feat(readme): change contributors link to community heroes by @nevo-david in https://github.com/novuhq/novu/pull/1216
  • feat: added env variables & explanation to docs by @venarius in https://github.com/novuhq/novu/pull/1213
  • Feat position notification center by @BiswaViraj in https://github.com/novuhq/novu/pull/1184
  • fix: workaround with validation pipe nan casting by @scopsy in https://github.com/novuhq/novu/pull/1217
  • added croatian by @JakovGlavac in https://github.com/novuhq/novu/pull/1214
  • fix: sentry reporting errors by @scopsy in https://github.com/novuhq/novu/pull/1218
  • test: basic e2e tests for delay by @ainouzgali in https://github.com/novuhq/novu/pull/1219
  • Provider api key encryption by @djabarovgeorge in https://github.com/novuhq/novu/pull/1207
  • docs: delay doc by @ainouzgali in https://github.com/novuhq/novu/pull/1221
  • fix: embed <--> widget communication issue on safari by @LetItRock in https://github.com/novuhq/novu/pull/1197
  • remove mongoose import by @ainouzgali in https://github.com/novuhq/novu/pull/1226
  • feat: upgrade widget cypress version by @scopsy in https://github.com/novuhq/novu/pull/1228
  • fix: update api key creator when he is removed by @scopsy in https://github.com/novuhq/novu/pull/1233
  • fix: fcm fallback by @djabarovgeorge in https://github.com/novuhq/novu/pull/1235
  • fix: fix inactive integrations still being used by @venarius in https://github.com/novuhq/novu/pull/1250
  • fix: add red dot in node if content is empty by @jainpawan21 in https://github.com/novuhq/novu/pull/1143
  • feat: iframe callbacks by @venarius in https://github.com/novuhq/novu/pull/1243
  • fix: added base url for mailgun provider by @venarius in https://github.com/novuhq/novu/pull/1253
  • feat: add endpoint to fetch messages by @davidsoderberg in https://github.com/novuhq/novu/pull/1227

New Contributors

  • @miles170 made their first contribution in https://github.com/novuhq/novu/pull/1195
  • @AmanNegi made their first contribution in https://github.com/novuhq/novu/pull/1192
  • @samaranand made their first contribution in https://github.com/novuhq/novu/pull/1139
  • @JakovGlavac made their first contribution in https://github.com/novuhq/novu/pull/1214

Full Changelog: https://github.com/novuhq/novu/compare/v0.7.3...v0.8.0

- TypeScript
Published by scopsy over 3 years ago

novu - v0.7.3 - Small improvements and bug fixes

What's Changed

  • docs: Twilio example with numbers by @eddiejaoude in https://github.com/novuhq/novu/pull/1159
  • feat: Allow adding a custom header to the notification center component by @davidsoderberg in https://github.com/novuhq/novu/pull/1163
  • fix: Fix subscriber endpoints for the notifications feed by @davidsoderberg in https://github.com/novuhq/novu/pull/1166
  • fix: Margin issue in settings page by @adarshajit in https://github.com/novuhq/novu/pull/1133
  • feat: Update redirects for API documentation by @andrewgolovanov in https://github.com/novuhq/novu/pull/1170
  • refactor: Introduce a @novu/client package to handle reusable js front-end logic by @wpoynter in https://github.com/novuhq/novu/pull/1113
  • feat: Add a step to deploy API documentation by @andrewgolovanov in https://github.com/novuhq/novu/pull/1154
  • fix: Slug for redirects on API pages by @andrewgolovanov in https://github.com/novuhq/novu/pull/1171
  • refactor: Use date-fns instead of moment by @venarius in https://github.com/novuhq/novu/pull/1122
  • docs: Updated the readme documentation to make email param as array. by @mrajen27 in https://github.com/novuhq/novu/pull/1161
  • fix: Redirects for API documentation by @andrewgolovanov in https://github.com/novuhq/novu/pull/1175
  • fix: Add set credentials info in push by @jainpawan21 in https://github.com/novuhq/novu/pull/1178
  • Added documentation for triggering events when self-hosting by @SpencerMiller23 in https://github.com/novuhq/novu/pull/1168

New Contributors

  • @eddiejaoude made their first contribution in https://github.com/novuhq/novu/pull/1159
  • @adarshajit made their first contribution in https://github.com/novuhq/novu/pull/1133
  • @wpoynter made their first contribution in https://github.com/novuhq/novu/pull/1113
  • @mrajen27 made their first contribution in https://github.com/novuhq/novu/pull/1161
  • @SpencerMiller23 made their first contribution in https://github.com/novuhq/novu/pull/1168

Full Changelog: https://github.com/novuhq/novu/compare/v0.7.2...v0.7.3

- TypeScript
Published by scopsy over 3 years ago

novu - v0.7.2 - Community Patch Release

A small patch release with work created by the community and our core team.

What's changed

  • Support for notification identifier update by @jainpawan21 in https://github.com/novuhq/novu/pull/1089
  • Support custom language for iframe embed widget by @venarius in https://github.com/novuhq/novu/pull/1115
  • Use react-router link for navbar menu instead of a tag by @venarius in https://github.com/novuhq/novu/pull/1094
  • Add showLastUpdateAuthor and showLastUpdateTime in docs by @jainpawan21 in https://github.com/novuhq/novu/pull/1096
  • Redis installation docs by @KarlGusta in https://github.com/novuhq/novu/pull/1110
  • Update the links and logo in the navbar by @andrewgolovanov in https://github.com/novuhq/novu/pull/1121
  • Add ability for admin to change member roles by @venarius in https://github.com/novuhq/novu/pull/1091
  • Added better errors for signup by @venarius in https://github.com/novuhq/novu/pull/1116
  • Normalize email on password reset by @venarius in https://github.com/novuhq/novu/pull/1117
  • Add seen unseen combined count check by @djabarovgeorge in https://github.com/novuhq/novu/pull/1106
  • Refactor auth provider by @djabarovgeorge in https://github.com/novuhq/novu/pull/1123
  • Refactor web user preference design by @djabarovgeorge in https://github.com/novuhq/novu/pull/1112
  • Add rebuild command by @djabarovgeorge in https://github.com/novuhq/novu/pull/1108
  • Fix minor spelling errors by @asgeirf in https://github.com/novuhq/novu/pull/1126
  • Add in app editor error alert by @djabarovgeorge in https://github.com/novuhq/novu/pull/1119
  • Cleanup email workflow visuals by @venarius in https://github.com/novuhq/novu/pull/1132
  • Remove max width in hmac desc by @jainpawan21 in https://github.com/novuhq/novu/pull/1134
  • Use cursor pointer for switch by @venarius in https://github.com/novuhq/novu/pull/1135
  • Enforce pnpm 7.5.0 by @venarius in https://github.com/novuhq/novu/pull/1125
  • Throttle refetch of notifications by @venarius in https://github.com/novuhq/novu/pull/1109
  • Remove embedded CSS to body done by widget embed by @davidsoderberg in https://github.com/novuhq/novu/pull/1130
  • Fix unhandled SES errors generated by @davidsoderberg in https://github.com/novuhq/novu/pull/1146
  • Add i18n Malayalam support by @varghesejose2020 in https://github.com/novuhq/novu/pull/1136
  • Configure redirect and rewrite rules for Netlify by @andrewgolovanov in https://github.com/novuhq/novu/pull/1150
  • Filter steps can be used for step filters by @davidsoderberg in https://github.com/novuhq/novu/pull/1149
  • Fix failing web e2e test by @venarius in https://github.com/novuhq/novu/pull/1141

New Contributors

  • @KarlGusta made their first contribution in https://github.com/novuhq/novu/pull/1110
  • @asgeirf made their first contribution in https://github.com/novuhq/novu/pull/1126
  • @varghesejose2020 made their first contribution in https://github.com/novuhq/novu/pull/1136

Full Changelog: https://github.com/novuhq/novu/compare/v0.7.1...v0.7.2

- TypeScript
Published by scopsy over 3 years ago

novu - v0.7.0 - Slack, Discord, Push and Subscriber Preferences

This is our biggest release yet, with over 30 contributors and 130 Pull requests with awaited features such as Push, Chat, Subscriber Preference API, API Reference documentation, and more... Let's dive in!

Subscriber Preferences API

From this release, your application notification subscriber will be able to configure their preferences from within the notification center or directly via our API. image

By default, all existing templates prior to 0.7.0 will be marked as critical and will be excluded from the preference list. To add them, go to the template editor page and un-mark the critical template from the preference defaults.

New templates created after this release will be added to the preference list, and the user can select from the available channels what to not receive and over which channel.

To read more about Subscriber Preference visit the documentation.

Push notifications with FCM

Excited to share that from now it's possible to send push notifications to mobile devices using FCM. This feature was entirely built by our amazing community members and specifically by @raikasdev 💖. APNS and other providers' support will be landed in the next release. Looking for other push providers? Create a GitHub issue or contribute directly.

To send over the push channel, deviceTokens should be added to the specified subscribers. To read more about it visit the documentation on subscriber credentials and our FCM guide.

Chat Apps (Slack and Discord)

One of our requested features was to send notifications with chat applications such as Slack and Discord. And now you can! Chat apps could be directly configured from the template editor and delivered using the webhook_url mechanism of the chat providers.

To read more about it, visit our guide.

API Reference documentation

With so many requests by the community members, we just had to do something about it ;) With help from @andrewgolovanov and the entire pixel point team, we are honored to present the first version of our API reference.

Notable changes

  • feat(web): Allow removing a team member for admins #841 by @MaurerKrisztian in https://github.com/novuhq/novu/pull/888
  • feat: Customize notification list item by @davidsoderberg in https://github.com/novuhq/novu/pull/880
  • feat: Support for google cloud storage by @Lian1230 in https://github.com/novuhq/novu/pull/934
  • feat(web): Invite for a team member can be resent by @venarius in https://github.com/novuhq/novu/pull/998
  • feat: Azure blob storage support by @proDOOMman in https://github.com/novuhq/novu/pull/1001
  • feat: Migrate from moment to date-fns by @venarius in https://github.com/novuhq/novu/pull/1032

New notification center languages

  • Spanish 🇪🇸 🥘 by @csachdeva83
  • Finish 🇫🇮 ☕ by @raikasdev
  • Hindi 🇮🇳🍛 by @jainpawan21
  • Gujarti 🇮🇳🍛 by @thisaakash
  • Russian 🇷🇺🪆 by @proDOOMman
  • French 🇫🇷🥖 by @csachdeva83
  • Arabic 🇸🇦🕌 by @ArshErgon
  • Italian 🇮🇹🍕 by @Zed93
  • Ukrainian 🇺🇦🌻 by @proDOOMman

Other improvements

  • Fix activity emails filter by @djabarovgeorge in https://github.com/novuhq/novu/pull/576
  • Netcore provider logos for dark and white by @EmiliyaGrossman in https://github.com/novuhq/novu/pull/825
  • Docker tag action for packages by @scopsy in https://github.com/novuhq/novu/pull/905
  • feat: Implement optional credential fields by @WinterCore in https://github.com/novuhq/novu/pull/909
  • fix: breaking page on deleted template by @scopsy in https://github.com/novuhq/novu/pull/913
  • feat: add netcore provider by @davidsoderberg in https://github.com/novuhq/novu/pull/813
  • Docker staged build on API docker file by @scopsy in https://github.com/novuhq/novu/pull/933
  • refactor: api get use case by @djabarovgeorge in https://github.com/novuhq/novu/pull/927
  • feat: add endpoint to get subscriber by subscriber id by @davidsoderberg in https://github.com/novuhq/novu/pull/945
  • Template IDs for invites and password reset can be configured by environment by @proDOOMman in https://github.com/novuhq/novu/pull/797
  • fix: User should be logged out when API sends 401 Unauthorized error by @chavda-bhavik in https://github.com/novuhq/novu/pull/935
  • Cypress tests for user preference by @ainouzgali in https://github.com/novuhq/novu/pull/952
  • fix: add stop-only dev dependency by @jainpawan21 in https://github.com/novuhq/novu/pull/960
  • fix: safari in-app notification template glitches by @LetItRock in https://github.com/novuhq/novu/pull/937
  • fix: move drop zone to add node by @jainpawan21 in https://github.com/novuhq/novu/pull/950
  • Events for user preferences by @ainouzgali in https://github.com/novuhq/novu/pull/976
  • Allow hiding user preferences cog by @ainouzgali in https://github.com/novuhq/novu/pull/981
  • feat: improve the command.create static function to be reused by @LetItRock in https://github.com/novuhq/novu/pull/987
  • refactor: update theme default by @djabarovgeorge in https://github.com/novuhq/novu/pull/990
  • fix: upgrade node-fetch by @Lian1230 in https://github.com/novuhq/novu/pull/988
  • Compound index for (_environmentId, subscriberId) by @proDOOMman in https://github.com/novuhq/novu/pull/980
  • changed invite link to a working one by @crismxiex in https://github.com/novuhq/novu/pull/997
  • fix: upgrade semantic-release by @Lian1230 in https://github.com/novuhq/novu/pull/995
  • Switch deprecated faker.name.title function to jobTitle by @Rutam21 in https://github.com/novuhq/novu/pull/1017
  • fix: added docs and libs folders to lint-staged by @venarius in https://github.com/novuhq/novu/pull/1010
  • feat: add loading overlay to invites page by @venarius in https://github.com/novuhq/novu/pull/1013
  • fix: Fix lint staged for multiple folders and added eslint step by @venarius in https://github.com/novuhq/novu/pull/1025
  • fix: update the logo of documentation by @vannyle in https://github.com/novuhq/novu/pull/1028
  • fix: notification center moment locale change by @venarius in https://github.com/novuhq/novu/pull/1026
  • Added toggleTabIndex attribute in PasswordInput for focus Management … by @sachinsom93 in https://github.com/novuhq/novu/pull/1029
  • Upgrade Novu Issue Templates to use Github Issue Forms by @Rutam21 in https://github.com/novuhq/novu/pull/1035
  • fix: promotion of delete notification template change by @davidsoderberg in https://github.com/novuhq/novu/pull/1042
  • fix: user preference promotion by @djabarovgeorge in https://github.com/novuhq/novu/pull/1043
  • feat: better error for login page by @venarius in https://github.com/novuhq/novu/pull/1038
  • feat: add accept term and privacy query by @djabarovgeorge in https://github.com/novuhq/novu/pull/1020
  • feat: added support and docs bottom links to sidenav by @venarius in https://github.com/novuhq/novu/pull/1045
  • Update arrow functionality on missing provider by @Rutam21 in https://github.com/novuhq/novu/pull/1046
  • Fixed text for email field for provider connection by @oba2311 in https://github.com/novuhq/novu/pull/1036
  • feat: add swagger for feeds controller by @davidsoderberg in https://github.com/novuhq/novu/pull/1051
  • fix: 200 and 201 for same endpoint by @davidsoderberg in https://github.com/novuhq/novu/pull/1053
  • feat: show supported locales for notification-center in docs by @venarius in https://github.com/novuhq/novu/pull/1044
  • fix: external api accessible for endpoints with swagger by @davidsoderberg in https://github.com/novuhq/novu/pull/1059
  • feat: add missing alerts pre action for push chat by @djabarovgeorge in https://github.com/novuhq/novu/pull/1061
  • feat: show save notification on email template button by @venarius in https://github.com/novuhq/novu/pull/1060
  • web accept terms and privacy by @djabarovgeorge in https://github.com/novuhq/novu/pull/1055
  • Fixed Typo [Line 51]✔️ by @CodrShiv in https://github.com/novuhq/novu/pull/1071
  • feat: change email template text direction to text align by @venarius in https://github.com/novuhq/novu/pull/1063
  • feat: add broadcast to node package by @davidsoderberg in https://github.com/novuhq/novu/pull/1069

New Contributors

  • @EmiliyaGrossman made their first contribution in https://github.com/novuhq/novu/pull/825
  • @dha-stix made their first contribution in https://github.com/novuhq/novu/pull/882
  • @oba2311 made their first contribution in https://github.com/novuhq/novu/pull/946
  • @jainpawan21 made their first contribution in https://github.com/novuhq/novu/pull/963
  • @csachdeva83 made their first contribution in https://github.com/novuhq/novu/pull/967
  • @proDOOMman made their first contribution in https://github.com/novuhq/novu/pull/797
  • @chavda-bhavik made their first contribution in https://github.com/novuhq/novu/pull/935
  • @LetItRock made their first contribution in https://github.com/novuhq/novu/pull/937
  • @thisaakash made their first contribution in https://github.com/novuhq/novu/pull/972
  • @ArshErgon made their first contribution in https://github.com/novuhq/novu/pull/974
  • @crismxiex made their first contribution in https://github.com/novuhq/novu/pull/997
  • @Zed93 made their first contribution in https://github.com/novuhq/novu/pull/996
  • @venarius made their first contribution in https://github.com/novuhq/novu/pull/998
  • @Rutam21 made their first contribution in https://github.com/novuhq/novu/pull/1017
  • @sachinsom93 made their first contribution in https://github.com/novuhq/novu/pull/1029
  • @andrewgolovanov made their first contribution in https://github.com/novuhq/novu/pull/1070
  • @CodrShiv made their first contribution in https://github.com/novuhq/novu/pull/1071

Full Changelog: https://github.com/novuhq/novu/compare/v0.6.2...v0.7.0

- TypeScript
Published by scopsy over 3 years ago

novu - 0.6.2 - i18n support for notification center

i18n support for notification-center component

It is now possible to translate the notification center UI elements by passing a translation object or a premade translation. More info can be found on the documentation page.

Custom object implementation:

```tsx <NovuProvider i18n={{ // Make sure that the following is a proper 2 letter language code, // since this is used by moment.js in order to calculate the relative time for each notification lang: "de",

translations: { poweredBy: "unterstützt von", markAllAsRead: "Alles als gelesen markieren", notifications: "Benachrichtigungen", }, }}> ```

Premade languages created by the community:

tsx <NovuProvider i18n={'en'}> </NovuProvider>

What else has changed

  • fix: so dkim can be undefined by @davidsoderberg in https://github.com/novuhq/novu/pull/892
  • fix: remove console errors by @ainouzgali in https://github.com/novuhq/novu/pull/889
  • fix: remove un-needed node-fetcher dependency by @scopsy in https://github.com/novuhq/novu/pull/895
  • fix: add button type for unstyled buttons by @scopsy in https://github.com/novuhq/novu/pull/894
  • fix: use notification default storeid by @djabarovgeorge in https://github.com/novuhq/novu/pull/897
  • Cypress component testing seed for WEB project by @scopsy in https://github.com/novuhq/novu/pull/899
  • fix: add subject rendering variables with handlebars by @scopsy in https://github.com/novuhq/novu/pull/903
  • fix: add missing shared exports by @scopsy in https://github.com/novuhq/novu/pull/902

Full Changelog: https://github.com/novuhq/novu/compare/v0.6.0...v0.6.2

- TypeScript
Published by scopsy over 3 years ago

novu - v0.6.0 - Digest Engine & Notification Center Upgrades

Version v0.6.0 introduces so many long-awaited features such as: Digest Engine, multi-tab support on notification center, notifications actions and so many other improvements and bug fixes. This release is the hard work of more 16 individual contributors and collaborators that made this version possible.

Digest Engine

The digest engine collects multiple trigger events and aggregates them into a single message delivered to the subscriber in form of an email, ,in-app notification or any other supported novu channel.

This becomes useful when a user needs to be notified on a large number of triggers, and you want to avoid sending too many notifications. Novu will automatically batch the incoming trigger events based on the subscriberId and an optional digestKey that can be added to control the digestion of the events.

Here is an overview of the digest flow, including both supported strategies: Regular and Backoff.

image

To learn more about the digest engine and the additional strategies and usage guide, visit our docs page here.

Notification Actions

Now, creating an even richer experience with the novu notification center is possible, and adding action buttons to a dedicated notification template. Subscribers can make interactions such as accepting invites or friend requests from the notification center without navigating to a different URL.

CleanShot 2022-07-24 at 15 14 57@2x

Multiple notification feeds

It is now possible to configure multiple feed configurations for various notification center templates. The feeds created can be used to fetch notifications for each feed separately. This can help to achieve a multi-tab experience for subscribers depending on the actual use-cases.

CleanShot 2022-07-24 at 15 19 49@2x

New delivery providers

  • Termii by @samsoft00
  • Gupshup by @davidsoderberg

System sync for dark and light modes

Thanks to @FidalMathew you can now choose to sync your theme preference for you system, or select light & dark modes which will be persistent across browser refreshes.

New Go-lang SDK

Created by our amazing community member @samsoft00 you can now interact with Novu using the new go-lang SDK. Info can be found here: https://github.com/novuhq/go-novu

Other notable changes

  • Docs: improve react-component code block by @murtuzaalisurti in https://github.com/novuhq/novu/pull/742
  • Remove unnesessary docker socket mount in docker-compose by @kymppi in https://github.com/novuhq/novu/pull/757
  • Upgrade pnpm to version 7 by @scopsy in https://github.com/novuhq/novu/pull/740
  • feat: add endpoint to get all subscribers by @davidsoderberg in https://github.com/novuhq/novu/pull/766
  • Node v16 support by @scopsy in https://github.com/novuhq/novu/pull/765
  • adding backendurl option for iFrame embed solution by @AlexVCS in https://github.com/novuhq/novu/pull/611
  • Create codeql-analysis.yml by @scopsy in https://github.com/novuhq/novu/pull/773
  • feat: upgrade node version images by @scopsy in https://github.com/novuhq/novu/pull/782
  • Fix docs links by @raikasdev in https://github.com/novuhq/novu/pull/785
  • fix: add pointer cursor to cta by @remirobichet in https://github.com/novuhq/novu/pull/798
  • NV-626: fix: Move focus to "YES" in the delete workflow step confirmation modal by @WinterCore in https://github.com/novuhq/novu/pull/800
  • fix (docs): missing link to guide on how to create a provider by @zakariaelas in https://github.com/novuhq/novu/pull/792
  • fix(apps/web): close menu on click outside in flow editor by @zakariaelas in https://github.com/novuhq/novu/pull/802
  • Update passport by @raikasdev in https://github.com/novuhq/novu/pull/805
  • Fix docs broken /docs/ redirect by @raikasdev in https://github.com/novuhq/novu/pull/806
  • feat: add trigger id to list and settings page by @raikasdev in https://github.com/novuhq/novu/pull/808
  • Add remove notification by @raikasdev in https://github.com/novuhq/novu/pull/809
  • fix: add a return statement on invite accept by @scopsy in https://github.com/novuhq/novu/pull/814
  • Parallel cypress testing by @scopsy in https://github.com/novuhq/novu/pull/815
  • NV-631 - fix(web): Redirect to getting started on first session by @WinterCore in https://github.com/novuhq/novu/pull/812
  • Updated Discord Invite Link by @iampearceman in https://github.com/novuhq/novu/pull/816
  • Fix organization invite issue by @scopsy in https://github.com/novuhq/novu/pull/821
  • feat: upgrade api nestjs to v9 by @scopsy in https://github.com/novuhq/novu/pull/822
  • Upgrade WS typescript version by @scopsy in https://github.com/novuhq/novu/pull/849
  • Update run-locally.md by @josephjosedev in https://github.com/novuhq/novu/pull/856
  • fix: Disable the delete step button on production by @WinterCore in https://github.com/novuhq/novu/pull/857
  • feat: added nest module async provider option by @shahriar-shojib in https://github.com/novuhq/novu/pull/844
  • Fix embed widget position option by @remirobichet in https://github.com/novuhq/novu/pull/864
  • docs: include golang code snippets to dashboard by @samsoft00 in https://github.com/novuhq/novu/pull/853
  • feat: add gupshup provider by @davidsoderberg in https://github.com/novuhq/novu/pull/862
  • feat: add so a text template can be provided for emails text version by @davidsoderberg in https://github.com/novuhq/novu/pull/874
  • fix: Theme is persistent by @FidalMathew in https://github.com/novuhq/novu/pull/852
  • fix: ses provider with attatchments by @davidsoderberg in https://github.com/novuhq/novu/pull/876
  • feat: add dkim config option for nodemailer by @davidsoderberg in https://github.com/novuhq/novu/pull/875
  • Use a docker image with both nodejs and python by @Lian1230 in https://github.com/novuhq/novu/pull/886
  • fix(logo): update mailjet logo in dark theme #878 by @MaurerKrisztian in https://github.com/novuhq/novu/pull/887

New Contributors

  • @remirobichet made their first contribution in https://github.com/novuhq/novu/pull/798
  • @WinterCore made their first contribution in https://github.com/novuhq/novu/pull/800
  • @zakariaelas made their first contribution in https://github.com/novuhq/novu/pull/792
  • @josephjosedev made their first contribution in https://github.com/novuhq/novu/pull/856
  • @shahriar-shojib made their first contribution in https://github.com/novuhq/novu/pull/844
  • @Lian1230 made their first contribution in https://github.com/novuhq/novu/pull/886
  • @MaurerKrisztian made their first contribution in https://github.com/novuhq/novu/pull/887

Full Changelog: https://github.com/novuhq/novu/compare/v0.5.1...v0.6.0

- TypeScript
Published by scopsy over 3 years ago

novu - v0.5.1 - UI/UX improvements and bug fixes

This minor release brings some UI and UX improvements to the notification workflow editor and some bug fixes.

Upsert subscriber on event trigger

Previously when a subscriber was created using the trigger.event method, we wouldn't update it's details with new information brought from the to object when another triggered was performed. This caused multiple users not to receive an email or SMS due to invalid email saved originally on the subscriber.

Now the subscriber entity will be updated upon delivery.

Bug Fixes

When importing the @novu/notification-center using the method suggested in docs an error was received:

Uncaught TypeError: Cannot read properties of undefined (reading 'unseenBadge') This is now fixed.

What else Changed

  • test: refactor notifications editor spec by @davidsoderberg in https://github.com/novuhq/novu/pull/718
  • fix: not set as dirty when clicking on trigger by @ainouzgali in https://github.com/novuhq/novu/pull/719
  • fix: updated web/public/index.html and removed unused default-react logos by @devblin in https://github.com/novuhq/novu/pull/716
  • feat: add delete step modal by @davidsoderberg in https://github.com/novuhq/novu/pull/720
  • edit message not shown after delete, deleted node not shown again by @ainouzgali in https://github.com/novuhq/novu/pull/721
  • fix: add redirect / to /docs by @vannyle in https://github.com/novuhq/novu/pull/717
  • fix: reintroduce attachments support by @djabarovgeorge in https://github.com/novuhq/novu/pull/723
  • Notication center docs default values by @ainouzgali in https://github.com/novuhq/novu/pull/724
  • Nv 447 plus button, add a step close to the next node by @ainouzgali in https://github.com/novuhq/novu/pull/727
  • Remove unimplemented property border radius by @ainouzgali in https://github.com/novuhq/novu/pull/728
  • fix: so job is removed on complete by @davidsoderberg in https://github.com/novuhq/novu/pull/731
  • fix: use only one unsaved changes error by @ainouzgali in https://github.com/novuhq/novu/pull/730
  • NV 546 fix: clipped blocked html by @djabarovgeorge in https://github.com/novuhq/novu/pull/722
  • feat: subscriber id validation by @djabarovgeorge in https://github.com/novuhq/novu/pull/726
  • feat: save event trigger payload in the message instance by @djabarovgeorge in https://github.com/novuhq/novu/pull/725
  • fix: change redirect match to slug by @vannyle in https://github.com/novuhq/novu/pull/732
  • feat: update subscriber via trigger by @djabarovgeorge in https://github.com/novuhq/novu/pull/729
  • Fix a typo in quick-start.md & react-components.md file by @murtuzaalisurti in https://github.com/novuhq/novu/pull/736
  • fix notification center bell props by @djabarovgeorge in https://github.com/novuhq/novu/pull/733

New Contributors

  • @murtuzaalisurti made their first contribution in https://github.com/novuhq/novu/pull/736

Full Changelog: https://github.com/novuhq/novu/compare/v0.5.0...v0.5.1

- TypeScript
Published by scopsy over 3 years ago

novu - v0.5.0 - ⭐ New workflow engine and UI Editor

Extremly excited to anounce our latest release which includes an entire redesign of our trigger engine, a brand new and shining workflow editor on the web management platform, notification center theme customization, and a lot more goodies! Let's check it out:

Redesigned backend trigger engine

To support a more complex Novu usecase with custom flows and events we had to reimagine how our trigger engine works, instead of processing just the hardcoded configuration of delivery a user can now specify a tree-like flow with a custom order of nodes. This infra change will help us to support the upcoming: Digest, Delay, Decision trees, and more.

Job Workflow

In this change, we also introduced BullMQ to manage or step execution Queue to support better persistency and scalability as it will allow us to scale trigger processing across multiple machines in the next upcoming releases.

Redesigned Notification Template Editor

One of the biggest steps to support our future plans is the redesigned Workflow Editor when editing a notification template. Previously, you could only decide on a channel but couldn't control more than one message of this particular channel, and couldn't control the order of execution.

Introducing the new workflow editor powered by React-Flow: CleanShot 2022-06-24 at 09 31 06@2x

This new workflow will be the basis of more exciting features we are about to release in the upcoming weeks!

Attachment support on email providers

Thank to our amazing contributor @devblin, it is possible to send attachments with your emails. You can easily add attachments using the following API:

```javascript import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVUAPIKEY);

novu.trigger('event-name', { to: { subscriberId: '...' }, payload: { attachments: [{ file: fs.readFileSync(__dirname + '/data/test.jpeg'), name: 'test.jpeg', mime: 'image/jpg' }] } }) ```

Notification center theme customization

Based on a lot of your requests, it is possible now to customize the notification center component visuals for in our React component. Here is how you can do that:

```jsx const theme = { dark: { // Dark Theme Props }, light: { // Light Theme Props }, common: { // Common } };

return ( ); ```

For more information about the different parts of the theme configuration:

```typescript export interface INovuTheme { layout?: IThemeLayout; header?: IThemeHeader; popover?: IThemePopover; notificationItem?: IThemeNotificationListItem; footer?: IThemeFooter; loaderColor?: string; unseenBadge?: IThemeUnseenBadge; }

export interface IThemeLayout { background?: string; boxShadow?: string; borderRadius?: string; wrapper?: { secondaryFontColor?: string; }; }

export interface IThemeHeader { badgeColor?: string; badgeTextColor?: string; fontColor?: string; }

export interface IThemePopover { arrowColor?: string; }

export interface IThemeNotificationListItem { seen?: { fontColor?: string; background?: string; timeMarkFontColor?: string; }; unseen?: { fontColor?: string; background?: string; boxShadow?: string; notificationItemBeforeBrandColor?: string; timeMarkFontColor?: string; }; }

export interface IThemeFooter { logoTextColor?: string; logoPrefixFontColor?: string; }

export interface IThemeUnseenBadge { color?: { fillColor?: string | ISvgStopColor; borderColor?: string; }; } ```

More changes and improvements

  • fixed grammatical error in notification form by @tusharsrivastav in https://github.com/novuhq/novu/pull/613
  • Made changes in the CONTIBUTING.md file for ports information by @AakashRaj20 in https://github.com/novuhq/novu/pull/637
  • update readme by @souravjain540 in https://github.com/novuhq/novu/pull/638
  • fix: added support for attachments passing within Novu API by @devblin in https://github.com/novuhq/novu/pull/608
  • Proper Error Message when used without NovuProvider by @BiswaViraj in https://github.com/novuhq/novu/pull/639
  • Added env flag for github oauth option by @BiswaViraj in https://github.com/novuhq/novu/pull/644
  • Upgrade Widget cypress to v10 by @kymppi in https://github.com/novuhq/novu/pull/658
  • Docker-compose for local development by @kymppi in https://github.com/novuhq/novu/pull/659
  • style changed integration to integrations by @AlexVCS in https://github.com/novuhq/novu/pull/669
  • changed api to API by @Tosin-webdev in https://github.com/novuhq/novu/pull/670
  • Fixed typo on line 36 by @AlexVCS in https://github.com/novuhq/novu/pull/673
  • fix: updated the docker env to string by @BiswaViraj in https://github.com/novuhq/novu/pull/688
  • fix: updated scripts to use cross-env by @BiswaViraj in https://github.com/novuhq/novu/pull/685
  • fix: team invite not working when already logged in by @samsoft00 in https://github.com/novuhq/novu/pull/678
  • feat: #686 add termii sms provider by @samsoft00 in https://github.com/novuhq/novu/pull/690
  • import IMessage + Dark mode (colorScheme update) Documentation by @Lorakus in https://github.com/novuhq/novu/pull/698
  • Added unseenCount in popover notification component by @Lorakus in https://github.com/novuhq/novu/pull/699
  • Update Types to support nested payload properties by @dcbartlett-fadv in https://github.com/novuhq/novu/pull/701
  • Upgraded apps/web cypress to v10 by @devblin in https://github.com/novuhq/novu/pull/689
  • Fix/update provider hygen template by @samsoft00 in https://github.com/novuhq/novu/pull/710

New Contributors

  • @tusharsrivastav made their first contribution in https://github.com/novuhq/novu/pull/613
  • @AakashRaj20 made their first contribution in https://github.com/novuhq/novu/pull/637
  • @souravjain540 made their first contribution in https://github.com/novuhq/novu/pull/638
  • @kymppi made their first contribution in https://github.com/novuhq/novu/pull/658
  • @Tosin-webdev made their first contribution in https://github.com/novuhq/novu/pull/670
  • @samsoft00 made their first contribution in https://github.com/novuhq/novu/pull/678
  • @Lorakus made their first contribution in https://github.com/novuhq/novu/pull/698
  • @vannyle made their first contribution in https://github.com/novuhq/novu/pull/558
  • @dcbartlett-fadv made their first contribution in https://github.com/novuhq/novu/pull/701

Full Changelog: https://github.com/novuhq/novu/compare/v0.4.2...v0.5.0

- TypeScript
Published by scopsy over 3 years ago

novu - v0.5.0-alpha.0

- TypeScript
Published by scopsy over 3 years ago

novu - v0.4.2 - Notification center support for Safari browsers

What's Changed

  • Fix gradient picker cross browser by @djabarovgeorge in https://github.com/novuhq/novu/pull/610

This addresses the issue discussed in #607 that fixes safari browsers fail to render the notification center due to not supported regex expression.

Thank for singhgulshan, @BiswaViraj, and @djabarovgeorge for collaborating on bringing this fix

- TypeScript
Published by scopsy over 3 years ago

novu - v0.4.1 - React 18 support for notification center

React 18 support for @novu/notification-center

thanks to the incredible work by @BiswaViraj we are now supporting react 18 for the @novu/notification-center component, also gone the webpack spreadArray) is not a function error encountered in #569

What's Changed

  • New handlebars titlecase helper by @AlexVCS in https://github.com/novuhq/novu/pull/585
  • v0.4.0 Release by @scopsy in https://github.com/novuhq/novu/pull/595
  • removed the null return in useeffect by @BiswaViraj in https://github.com/novuhq/novu/pull/596
  • Improved documentation: Corrected spelling in README.md by @FidalMathew in https://github.com/novuhq/novu/pull/603
  • fix : package.json to respect the monorepo structure by @williamsgqdev in https://github.com/novuhq/novu/pull/601

New Contributors

  • @FidalMathew made their first contribution in https://github.com/novuhq/novu/pull/603
  • @williamsgqdev made their first contribution in https://github.com/novuhq/novu/pull/601

Full Changelog: https://github.com/novuhq/novu/compare/v0.4.0...v0.4.1

- TypeScript
Published by scopsy over 3 years ago

novu - v0.4.0 - The open-source notification infrastructure

The first Novu Notification Infrastructure Release

We are incredibly excited to release our biggest version since the beginning of Novu. This version includes our first milestone in building the best open-source notification infrastructure. The release is a result of our incredible community collaboration and efforts. Check out all the great shoutouts at the end.

This version includes those large chunks of work: - Novu API - Notification management web interface - Multi Environment Support - Integration Store - Notification Center API - React Notification Center - And more!

Get started with the novu platform using: npx novu init

Novu API

The Novu API was created to manage complex notification delivery use cases. It will be the platform for our future advanced features such as Digest, Scheduling, Time-zone awareness, etc. The API can be accessed from the @novu/node npm package for Node.js and other languages using the simple rest HTTP API accessed using an API key.

Notification management web interface

A brand new React-based web interface to manage your notification templates and monitor the activity of sent notifications. We are planning to add and upgrade the web interface on an ongoing basis, looking forward to hearing your opinions and ideas!

Notification Center API

You can now add a real-time notification center to your web application, including real-time updates using socket.io. In addition, we provide a react notification center component and an iframe window for non-react apps. You can read more about it here.

https://docs.novu.co/assets/images/notification-center-912bb96e009fb3a69bafec23bcde00b0.png

Multi Environment Support

Based on the feedback from previous alpha releases, we have added support for multiple environments inside the web management site. You can make changes to your dev environment and then commit them to the Production Environment. So you can test your changes before pushing them to prod. Which is always a good thing to do, right? 😜

Integration Store

You can now select what email or SMS provider you will send notifications from. Check out the integrations page on the web management platform. New integrations are coming soon!

Moving from the old @novu/node or @notifire/node packages

The last versions below v0.4.0 only supported stateless and in-code notification template management. If you don't plan to use the Novu API and web management platform, you will need to download the @novu/stateless library, which has an identical API to the old package. Read more about the stateless library here.

What's next?

  • Improving documentation and usage guides
  • Visual Workflow Editor
  • Direct Channel
  • Push Channel
  • Digest Engine
  • and many more exciting features :)

Read more about the new API platform from our documentation site.

Get started with the novu platform using: npx novu init

Merged issues

  • subject now accepts a Function on trigger method by @CharlieBrownCharacter in https://github.com/novuhq/novu/pull/155
  • Fixed some typo by @bigpreshy in https://github.com/novuhq/novu/pull/159
  • Some typo and grammar fix by @bigpreshy in https://github.com/novuhq/novu/pull/160
  • Docker compose support by @osbornetunde in https://github.com/novuhq/novu/pull/146
  • Add storybook for admin panel by @scopsy in https://github.com/novuhq/novu/pull/163
  • NX Workspaces Support by @nishit-g in https://github.com/novuhq/novu/pull/165
  • Update package.json(NX workspace code review) by @nishit-g in https://github.com/novuhq/novu/pull/168
  • Update providers template by @nishit-g in https://github.com/novuhq/novu/pull/170
  • Update build scripts to use NX by @scopsy in https://github.com/novuhq/novu/pull/169
  • Add NX cloud support by @scopsy in https://github.com/novuhq/novu/pull/172
  • Add project build on setup:project command by @djabarovgeorge in https://github.com/novuhq/novu/pull/178
  • Border style on window widget #176 by @djabarovgeorge in https://github.com/novuhq/novu/pull/179
  • Configure Renovate by @renovate in https://github.com/novuhq/novu/pull/186
  • Implement OAuth flow with GitHub by @djabarovgeorge in https://github.com/novuhq/novu/pull/187
  • Pin dependencies by @renovate in https://github.com/novuhq/novu/pull/191
  • Pin dependency apollo-boost to 0.4.9 by @renovate in https://github.com/novuhq/novu/pull/192
  • Update dependency @types/express to v4.17.13 by @renovate in https://github.com/novuhq/novu/pull/194
  • Add npx only-allow-pnpm to avoid people running yarn install by @djabarovgeorge in https://github.com/novuhq/novu/pull/195
  • Update dependency @types/react-helmet to v6.1.5 by @renovate in https://github.com/novuhq/novu/pull/200
  • Update dependency cypress-intellij-reporter to v0.0.7 by @renovate in https://github.com/novuhq/novu/pull/201
  • Update docker files to use pnpm by @djabarovgeorge in https://github.com/novuhq/novu/pull/199
  • Update dependency react-scripts to v4.0.3 by @renovate in https://github.com/novuhq/novu/pull/203
  • Update Node.js to v14.18.3 by @renovate in https://github.com/novuhq/novu/pull/208
  • Update dependency styled-components to v5.3.3 by @renovate in https://github.com/novuhq/novu/pull/205
  • Update docusaurus monorepo to v2.0.0-beta.14 by @renovate in https://github.com/novuhq/novu/pull/206
  • Update dependency @typescript-eslint/eslint-plugin to v4.33.0 by @renovate in https://github.com/novuhq/novu/pull/212
  • Update dependency @types/react-router-dom to v5.3.3 by @renovate in https://github.com/novuhq/novu/pull/211
  • Update dependency hygen to v6.1.0 by @renovate in https://github.com/novuhq/novu/pull/216
  • Update dependency jira-prepare-commit-msg to v1.6.2 by @renovate in https://github.com/novuhq/novu/pull/217
  • Update github actions to use pnpm by @djabarovgeorge in https://github.com/novuhq/novu/pull/197
  • Search for other npm usages in the repository to replace with pnpm by @djabarovgeorge in https://github.com/novuhq/novu/pull/220
  • Add capitalization to subscribers names on activity list page by @ainouzgali in https://github.com/novuhq/novu/pull/221
  • PNPM dependency management by @djabarovgeorge in https://github.com/novuhq/novu/pull/185
  • Pin dependencies by @renovate in https://github.com/novuhq/novu/pull/189
  • Update dependency @aws-sdk/client-ses to v3.48.0 by @renovate in https://github.com/novuhq/novu/pull/210
  • Update dependency standard-version to v9.3.2 by @renovate in https://github.com/novuhq/novu/pull/204
  • Update dependency @istanbuljs/nyc-config-typescript to v1.0.2 by @renovate in https://github.com/novuhq/novu/pull/193
  • Update react-router monorepo by @renovate in https://github.com/novuhq/novu/pull/207
  • Update dependency @types/jest to v27.4.0 by @renovate in https://github.com/novuhq/novu/pull/222
  • Update dependency axios to v0.25.0 by @renovate in https://github.com/novuhq/novu/pull/213
  • Mantine layout integration by @scopsy in https://github.com/novuhq/novu/pull/225
  • ➕ Add @emotion/react and @emotion/styled by @scopsy in https://github.com/novuhq/novu/pull/226
  • RLD-86: Add linter action for projects by @scopsy in https://github.com/novuhq/novu/pull/231
  • RLD-68 Flaky password reset test add debug lines by @scopsy in https://github.com/novuhq/novu/pull/232
  • Environment variables configuration by @djabarovgeorge in https://github.com/novuhq/novu/pull/229
  • Updated deprecated environment variable by @djabarovgeorge in https://github.com/novuhq/novu/pull/233
  • Update docker-compose to use pre-built images from ghcr by @djabarovgeorge in https://github.com/novuhq/novu/pull/235
  • Typography Buttons Colors - starting mantine by @ainouzgali in https://github.com/novuhq/novu/pull/230
  • Update docker files location by @djabarovgeorge in https://github.com/novuhq/novu/pull/237
  • [RLD-88] - Docker compose api error fix by @scopsy in https://github.com/novuhq/novu/pull/238
  • Create shadow styles and add to Button by @ainouzgali in https://github.com/novuhq/novu/pull/239
  • RLD-92 Add sdk serving to docker compose by @scopsy in https://github.com/novuhq/novu/pull/241
  • [RLD-94] Add documentation on how to run docker compose by @scopsy in https://github.com/novuhq/novu/pull/242
  • Rld 18 switch buttons by @ainouzgali in https://github.com/novuhq/novu/pull/244
  • Implements Telnyx SMS provider by @Abobos in https://github.com/novuhq/novu/pull/227
  • RLD-20 Inputs + Form Fields by @ainouzgali in https://github.com/novuhq/novu/pull/247
  • Create CLI project scaffold by @djabarovgeorge in https://github.com/novuhq/novu/pull/248
  • [RLD-23] - Checkbox component by @rockingrohit9639 in https://github.com/novuhq/novu/pull/249
  • Added: doc for Hooks feature by @rhythm-sharma in https://github.com/novuhq/novu/pull/253
  • Rld 22 select inputs by @ainouzgali in https://github.com/novuhq/novu/pull/250
  • Application name & providers selection by @djabarovgeorge in https://github.com/novuhq/novu/pull/252
  • Added new SMS provider (Telnyx)to Readme.md by @iampearceman in https://github.com/novuhq/novu/pull/262
  • [RLD-105] - Create a local server on ephemeral port by @djabarovgeorge in https://github.com/novuhq/novu/pull/257
  • Table component by @ainouzgali in https://github.com/novuhq/novu/pull/255
  • Variable naming conventions for camel and pascal casing by @scopsy in https://github.com/novuhq/novu/pull/264
  • Fix linting rules for padding by @scopsy in https://github.com/novuhq/novu/pull/263
  • 🚨 Fix web padding eslint issues by @scopsy in https://github.com/novuhq/novu/pull/265
  • [RLD-106] - Initialize the GitHub auth flow by @djabarovgeorge in https://github.com/novuhq/novu/pull/259
  • [RLD-108] - Persist JWT token in the users CLI storage by @djabarovgeorge in https://github.com/novuhq/novu/pull/261
  • Create Organization & Application by @djabarovgeorge in https://github.com/novuhq/novu/pull/267
  • Authentication flow by @djabarovgeorge in https://github.com/novuhq/novu/pull/269
  • ✨ Add onChange and onClick events to components by @scopsy in https://github.com/novuhq/novu/pull/270
  • Fix bug update const typo by @djabarovgeorge in https://github.com/novuhq/novu/pull/273
  • Radio components by @scopsy in https://github.com/novuhq/novu/pull/272
  • Icons management by @ainouzgali in https://github.com/novuhq/novu/pull/274
  • 💄 Fixed checkbox BG and dark mode styling by @scopsy in https://github.com/novuhq/novu/pull/276
  • Menu buttons by @ainouzgali in https://github.com/novuhq/novu/pull/275
  • Tooltip by @ainouzgali in https://github.com/novuhq/novu/pull/277
  • Add demo dashboard html by @djabarovgeorge in https://github.com/novuhq/novu/pull/279
  • Create http server to serve this demo panel by @djabarovgeorge in https://github.com/novuhq/novu/pull/281
  • Validate and switch use application by @djabarovgeorge in https://github.com/novuhq/novu/pull/283
  • Demo web application by @djabarovgeorge in https://github.com/novuhq/novu/pull/289
  • During application, creation create a demo template by @djabarovgeorge in https://github.com/novuhq/novu/pull/285
  • New Layout, Header, Nav & Templates list page by @ainouzgali in https://github.com/novuhq/novu/pull/291
  • Update "master" to "main" by @scopsy in https://github.com/novuhq/novu/pull/292
  • Raise demo dashboard by @djabarovgeorge in https://github.com/novuhq/novu/pull/287
  • Test notification template by @djabarovgeorge in https://github.com/novuhq/novu/pull/294
  • 🔧 Copy HTML files when compiling CLI by @scopsy in https://github.com/novuhq/novu/pull/295
  • Add copy button that copies curl command by @djabarovgeorge in https://github.com/novuhq/novu/pull/297
  • Add hide the jwt and api key by @djabarovgeorge in https://github.com/novuhq/novu/pull/300
  • ✨ Get available port instead of hardcoded 4600 port by @scopsy in https://github.com/novuhq/novu/pull/298
  • ✨ Handle returning visitors to the CLI by @scopsy in https://github.com/novuhq/novu/pull/301
  • ✨ Send a custom text node if onboarding notification is sent by @scopsy in https://github.com/novuhq/novu/pull/302
  • 💄 Fix unseen badge location by @scopsy in https://github.com/novuhq/novu/pull/304
  • ♻️ Change firstName to $first_name and remove un-needed $email by @scopsy in https://github.com/novuhq/novu/pull/303
  • Create contextual guidance in main page and styling by @scopsy in https://github.com/novuhq/novu/pull/307
  • 💄 Add styled welcome screen by @scopsy in https://github.com/novuhq/novu/pull/309
  • Create custom text styles for answers with chalk by @scopsy in https://github.com/novuhq/novu/pull/310
  • Widget bell style jump by @djabarovgeorge in https://github.com/novuhq/novu/pull/313
  • ✨ Add in-web trigger button by @scopsy in https://github.com/novuhq/novu/pull/311
  • Account Creation Flow by @djabarovgeorge in https://github.com/novuhq/novu/pull/306
  • Fix application id in the widget by @djabarovgeorge in https://github.com/novuhq/novu/pull/314
  • Implements tabs horizontal menu(design system) by @Abobos in https://github.com/novuhq/novu/pull/308
  • Color Input by @ainouzgali in https://github.com/novuhq/novu/pull/320
  • Create Integration Data-Model by @djabarovgeorge in https://github.com/novuhq/novu/pull/316
  • 🐛 Fixed an issue where an inifinite loader would show after API redirect by @scopsy in https://github.com/novuhq/novu/pull/324
  • 💬 Update text nodes for questions in CLI by @scopsy in https://github.com/novuhq/novu/pull/325
  • Settings page with new design system by @ainouzgali in https://github.com/novuhq/novu/pull/319
  • Left Menu Buttons - Template Editor by @ainouzgali in https://github.com/novuhq/novu/pull/335
  • ✨ Add novu CLI command to launch program by @scopsy in https://github.com/novuhq/novu/pull/336
  • Create post integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/328
  • Fetch integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/330
  • Edit integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/334
  • Delete integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/337
  • Add deactivation of old providers on creation of new active one by @djabarovgeorge in https://github.com/novuhq/novu/pull/339
  • Add constrains on update request by @djabarovgeorge in https://github.com/novuhq/novu/pull/342
  • Notification Settings Screen by @ainouzgali in https://github.com/novuhq/novu/pull/345
  • Fix cli race condition on docker setup by @djabarovgeorge in https://github.com/novuhq/novu/pull/346
  • Initialize integration api by @djabarovgeorge in https://github.com/novuhq/novu/pull/326
  • react-router-dom v6 update by @ninjadev101 in https://github.com/novuhq/novu/pull/333
  • Cypress update on web by @ninjadev101 in https://github.com/novuhq/novu/pull/349
  • :sparkles: Trigger Modal by @ainouzgali in https://github.com/novuhq/novu/pull/350
  • Create actions CI pipeline by @scopsy in https://github.com/novuhq/novu/pull/348
  • 📝 Variable Protection Docs by @ninjadev101 in https://github.com/novuhq/novu/pull/351
  • Prod environment CI by @scopsy in https://github.com/novuhq/novu/pull/354
  • add channel screen by @ainouzgali in https://github.com/novuhq/novu/pull/357
  • Add Trigger Screen by @ainouzgali in https://github.com/novuhq/novu/pull/359
  • Add integration store page by @djabarovgeorge in https://github.com/novuhq/novu/pull/358
  • Auto deploy sdk docker images by @scopsy in https://github.com/novuhq/novu/pull/360
  • In App Settings Screen by @ainouzgali in https://github.com/novuhq/novu/pull/362
  • Add docker builds for web and widget containers by @scopsy in https://github.com/novuhq/novu/pull/364
  • 💄 Fixed storybook color scheme by @ninjadev101 in https://github.com/novuhq/novu/pull/363
  • Fix TypeError: Cannot read properties of null (reading '_id') issue #365 Draft PR by @AlexVCS in https://github.com/novuhq/novu/pull/370
  • ⬆️ Updated faker and normalized email address by @ninjadev101 in https://github.com/novuhq/novu/pull/375
  • SMS Settings Screen by @ainouzgali in https://github.com/novuhq/novu/pull/369
  • Fix/sendgrid global api key by @nevo-david in https://github.com/novuhq/novu/pull/376
  • 🩹 fallback to templates page for signed users by @ninjadev101 in https://github.com/novuhq/novu/pull/379
  • Email settings screen by @ainouzgali in https://github.com/novuhq/novu/pull/372
  • Create provider component by @djabarovgeorge in https://github.com/novuhq/novu/pull/367
  • Edit Mode - Template Editor by @ainouzgali in https://github.com/novuhq/novu/pull/381
  • Creation of integration modal by @djabarovgeorge in https://github.com/novuhq/novu/pull/368
  • Fix Notification Group Select by @ainouzgali in https://github.com/novuhq/novu/pull/384
  • Trigger engine connected provider usage by @djabarovgeorge in https://github.com/novuhq/novu/pull/356
  • Add api communication by @djabarovgeorge in https://github.com/novuhq/novu/pull/380
  • Tooltips Errors by @ainouzgali in https://github.com/novuhq/novu/pull/383
  • 🐛 Fix select group behaviour on creatable mode by @scopsy in https://github.com/novuhq/novu/pull/388
  • Integration store provider list page by @djabarovgeorge in https://github.com/novuhq/novu/pull/385
  • Fix ColorScheme Toggle by @ainouzgali in https://github.com/novuhq/novu/pull/390
  • feat(providers): added provider id and changed the architecture by @nevo-david in https://github.com/novuhq/novu/pull/374
  • Integration store fixs by @djabarovgeorge in https://github.com/novuhq/novu/pull/386
  • Reusable actions by @scopsy in https://github.com/novuhq/novu/pull/382
  • Final editor flow changes by @scopsy in https://github.com/novuhq/novu/pull/395
  • 🔧 Add a warning exception for github oauth flow by @scopsy in https://github.com/novuhq/novu/pull/396
  • Integration store add cypress tests by @djabarovgeorge in https://github.com/novuhq/novu/pull/393
  • Template editor UI integration by @djabarovgeorge in https://github.com/novuhq/novu/pull/387
  • Adding MailerSend provider by @fredsossa1 in https://github.com/novuhq/novu/pull/389
  • Update Team Members page from legacy by @aggmoulik in https://github.com/novuhq/novu/pull/352
  • Login Page - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/397
  • SignUp + Reset Password - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/398
  • Accept Invitation Page - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/399
  • Application Creation Page - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/400
  • Activity Page - Table and Filters by @ainouzgali in https://github.com/novuhq/novu/pull/392
  • Final update for flow styling and behaviour by @scopsy in https://github.com/novuhq/novu/pull/405
  • Add sender email & sender name by @djabarovgeorge in https://github.com/novuhq/novu/pull/401
  • Update the api (event-trigger) flow to use the integration instead by @djabarovgeorge in https://github.com/novuhq/novu/pull/403
  • Update application & integration entities by @djabarovgeorge in https://github.com/novuhq/novu/pull/402
  • Remove email tab from setting page by @djabarovgeorge in https://github.com/novuhq/novu/pull/404
  • Move sender from and name to inside of email integration modal by @djabarovgeorge in https://github.com/novuhq/novu/pull/406
  • Add providers logo by @djabarovgeorge in https://github.com/novuhq/novu/pull/407
  • Integration store hotfix by @djabarovgeorge in https://github.com/novuhq/novu/pull/409
  • ♻️ Change settings screen route name for invites by @scopsy in https://github.com/novuhq/novu/pull/408
  • Integration store hotfix by @djabarovgeorge in https://github.com/novuhq/novu/pull/410
  • 💄 Fix responsive issue in template editor by @scopsy in https://github.com/novuhq/novu/pull/412
  • Fix mailersend build by @djabarovgeorge in https://github.com/novuhq/novu/pull/414
  • 🔥 Remove old design code by @scopsy in https://github.com/novuhq/novu/pull/413
  • Update providers logo by @djabarovgeorge in https://github.com/novuhq/novu/pull/415
  • ✨ Add the ability to specifiy the left offset for the widget to open by @scopsy in https://github.com/novuhq/novu/pull/416
  • Widget - New Design by @ainouzgali in https://github.com/novuhq/novu/pull/418
  • Logo Updates by @ainouzgali in https://github.com/novuhq/novu/pull/420
  • Refactor by @scopsy in https://github.com/novuhq/novu/pull/419
  • Update GHCR organization name by @djabarovgeorge in https://github.com/novuhq/novu/pull/422
  • :bug: Fix Widget Dropdown Position by @ainouzgali in https://github.com/novuhq/novu/pull/424
  • Description Label For Integration Store by @ainouzgali in https://github.com/novuhq/novu/pull/426
  • Update Docs - Logos by @ainouzgali in https://github.com/novuhq/novu/pull/425
  • Update Sender From Credential by @ainouzgali in https://github.com/novuhq/novu/pull/427
  • Display pagination when there is total or page size is greater than one by @magnetomax in https://github.com/novuhq/novu/pull/423
  • New Integration Defaults to Active by @ainouzgali in https://github.com/novuhq/novu/pull/428
  • Activity graph by @djabarovgeorge in https://github.com/novuhq/novu/pull/394
  • Update provider logo images by @djabarovgeorge in https://github.com/novuhq/novu/pull/431
  • Add initial component library by @djabarovgeorge in https://github.com/novuhq/novu/pull/430
  • Fix - Notification Group Not Selected after Creation by @ainouzgali in https://github.com/novuhq/novu/pull/432
  • Novu node package by @scopsy in https://github.com/novuhq/novu/pull/435
  • Update ses integration logo by @djabarovgeorge in https://github.com/novuhq/novu/pull/436
  • Trigger Event Keys Modification by @ainouzgali in https://github.com/novuhq/novu/pull/433
  • Creating New Template - Defaults to Active by @ainouzgali in https://github.com/novuhq/novu/pull/438
  • Update Notification Content - Demo Dashboard by @ainouzgali in https://github.com/novuhq/novu/pull/439
  • Change provider button color by @djabarovgeorge in https://github.com/novuhq/novu/pull/421
  • Add input mapping by @djabarovgeorge in https://github.com/novuhq/novu/pull/411
  • 🐛 Fixes the distinct id problem by @davidsoderberg in https://github.com/novuhq/novu/pull/441
  • Added a link to our Discord server by @iampearceman in https://github.com/novuhq/novu/pull/437
  • 🐛 Fixes so if there is no items for pagination it hides by @davidsoderberg in https://github.com/novuhq/novu/pull/442
  • 🐛 Fix so button do not change in size when active toggle is used by @davidsoderberg in https://github.com/novuhq/novu/pull/443
  • 🚸 Add so users computer theme are reflected in web app by @davidsoderberg in https://github.com/novuhq/novu/pull/444
  • Added: Script to inject env var in window object by @rhythm-sharma in https://github.com/novuhq/novu/pull/434
  • Fix Package Name by @ainouzgali in https://github.com/novuhq/novu/pull/448
  • Rename "sdk" Package to "embed" by @ainouzgali in https://github.com/novuhq/novu/pull/450
  • Update contributing.md by @ainouzgali in https://github.com/novuhq/novu/pull/451
  • Update README.md by @iampearceman in https://github.com/novuhq/novu/pull/453
  • Convert messages to steps by @scopsy in https://github.com/novuhq/novu/pull/456
  • Nv 241 enable runtime dynamic environment by @davidsoderberg in https://github.com/novuhq/novu/pull/446
  • 👷 Add envsetup for widget by @davidsoderberg in https://github.com/novuhq/novu/pull/447
  • Create @novu/stateless package by @ainouzgali in https://github.com/novuhq/novu/pull/455
  • Subscribers API - Update Subscriber by @ainouzgali in https://github.com/novuhq/novu/pull/464
  • Subscribers API - Create Subscriber by @ainouzgali in https://github.com/novuhq/novu/pull/463
  • ✨ An organization do now have two environments by @davidsoderberg in https://github.com/novuhq/novu/pull/460
  • Subscribers API - Delete Subscriber by @ainouzgali in https://github.com/novuhq/novu/pull/465
  • Add widget logic by @djabarovgeorge in https://github.com/novuhq/novu/pull/440
  • Clean widget from bell logic by @djabarovgeorge in https://github.com/novuhq/novu/pull/457
  • Create notification center interface by @djabarovgeorge in https://github.com/novuhq/novu/pull/458
  • Create novu povider by @djabarovgeorge in https://github.com/novuhq/novu/pull/459
  • Add Subscribers for @novu/node by @ainouzgali in https://github.com/novuhq/novu/pull/469
  • Switch application entity to environment entity by @scopsy in https://github.com/novuhq/novu/pull/468
  • 🐛 fix storybook crash because of emotion by @ninjadev101 in https://github.com/novuhq/novu/pull/473
  • ✨ added segmented control by @ninjadev101 in https://github.com/novuhq/novu/pull/467
  • Nv 322 calculate diff to create a change entity by @davidsoderberg in https://github.com/novuhq/novu/pull/476
  • ✨ Add Change entity, schema and repository by @davidsoderberg in https://github.com/novuhq/novu/pull/466
  • 🐛 Fix Cors issue when accessing window.parent inside widget by @scopsy in https://github.com/novuhq/novu/pull/480
  • Nv 331 create changes when a message template by @davidsoderberg in https://github.com/novuhq/novu/pull/477
  • Nv 321 add parentid for notification template by @davidsoderberg in https://github.com/novuhq/novu/pull/478
  • Nv 332 get user environments api by @ninjadev101 in https://github.com/novuhq/novu/pull/483
  • Nv 311 switch environment by @ninjadev101 in https://github.com/novuhq/novu/pull/487
  • [NV-296] Update pages meta title to indicate visiting pge by @13colours in https://github.com/novuhq/novu/pull/489
  • Use content-type: application/json for payload in example script by @wolfymaster in https://github.com/novuhq/novu/pull/490
  • :boom: Trigger interface update by @ainouzgali in https://github.com/novuhq/novu/pull/488
  • React helmet async by @ninjadev101 in https://github.com/novuhq/novu/pull/495
  • Move Brand Settings to Organization by @ainouzgali in https://github.com/novuhq/novu/pull/492
  • Refactor bell interface by @djabarovgeorge in https://github.com/novuhq/novu/pull/474
  • Use bell package in widget app by @djabarovgeorge in https://github.com/novuhq/novu/pull/475
  • Refactor widget code by @djabarovgeorge in https://github.com/novuhq/novu/pull/491
  • Changes Page by @ainouzgali in https://github.com/novuhq/novu/pull/497
  • cypress test for switch environment by @ninjadev101 in https://github.com/novuhq/novu/pull/498
  • Docs update by @scopsy in https://github.com/novuhq/novu/pull/502
  • React widget component by @djabarovgeorge in https://github.com/novuhq/novu/pull/496
  • Fix notification center deploment by @djabarovgeorge in https://github.com/novuhq/novu/pull/505
  • Add widget user origin wildcard by @djabarovgeorge in https://github.com/novuhq/novu/pull/508
  • Nv 295 delete notification template by @ninjadev101 in https://github.com/novuhq/novu/pull/507
  • Disallow templates and messages edit - API by @ainouzgali in https://github.com/novuhq/novu/pull/506
  • Cypress tests for changes page by @ainouzgali in https://github.com/novuhq/novu/pull/509
  • Fix re-navigation in edit. by @ainouzgali in https://github.com/novuhq/novu/pull/519
  • 🐛 Fix so notification group are promoted if notification template are by @davidsoderberg in https://github.com/novuhq/novu/pull/520
  • Fix Readonly Styles - light mode by @ainouzgali in https://github.com/novuhq/novu/pull/521
  • 🐛 Fix so a update on message template creates a change by @davidsoderberg in https://github.com/novuhq/novu/pull/522
  • 🚸 Add notification when a promote goes wrong by @davidsoderberg in https://github.com/novuhq/novu/pull/528
  • Add application identifier in settings by @djabarovgeorge in https://github.com/novuhq/novu/pull/510
  • :sparkles: Read only environments by @ainouzgali in https://github.com/novuhq/novu/pull/499
  • 💚 Pin pnpm version in dockerfiles by @davidsoderberg in https://github.com/novuhq/novu/pull/530
  • 🚧 Add Security component by @djabarovgeorge in https://github.com/novuhq/novu/pull/511
  • 🐛 Fix bug with Authorization header sent to S3 by @davidsoderberg in https://github.com/novuhq/novu/pull/531
  • show empty string when null by @ninjadev101 in https://github.com/novuhq/novu/pull/532
  • Update dal + api HMAC security support by @djabarovgeorge in https://github.com/novuhq/novu/pull/516
  • Add dynamic backendUrl in @novu/node by @djabarovgeorge in https://github.com/novuhq/novu/pull/535
  • Nv 386 env token validation by @ninjadev101 in https://github.com/novuhq/novu/pull/545
  • 🐛 Fix isDirty state for channel switches by @davidsoderberg in https://github.com/novuhq/novu/pull/533
  • Passing a subscriber object to the template compilation by @djabarovgeorge in https://github.com/novuhq/novu/pull/537
  • Hmac support by @djabarovgeorge in https://github.com/novuhq/novu/pull/539
  • Onboarding Page by @ainouzgali in https://github.com/novuhq/novu/pull/534
  • ✨ added pluralize helper by @ninjadev101 in https://github.com/novuhq/novu/pull/549
  • ✨ added breadcrumb by @ninjadev101 in https://github.com/novuhq/novu/pull/550
  • 🐛 Fix empty notification group payload by @djabarovgeorge in https://github.com/novuhq/novu/pull/548
  • 🐛 Fix shared clipboard state by @djabarovgeorge in https://github.com/novuhq/novu/pull/551
  • Docs - add backendUrl by @ainouzgali in https://github.com/novuhq/novu/pull/556
  • Fix activity graph missing current date by @djabarovgeorge in https://github.com/novuhq/novu/pull/552
  • Update README.md by @TexasBullet26 in https://github.com/novuhq/novu/pull/566
  • Updated documentation. Using gender neutral language and making doc mo… by @pgaijin66 in https://github.com/novuhq/novu/pull/564
  • Fix: 567 Updated the file paths by @BiswaViraj in https://github.com/novuhq/novu/pull/568
  • Notification Center: avoid localStorage actions on SSR by @13colours in https://github.com/novuhq/novu/pull/561
  • Changed sms77 constructor call by @SaschaWebDev in https://github.com/novuhq/novu/pull/584

New Contributors

  • @bigpreshy made their first contribution in https://github.com/novuhq/novu/pull/159
  • @osbornetunde made their first contribution in https://github.com/novuhq/novu/pull/146
  • @nishit-g made their first contribution in https://github.com/novuhq/novu/pull/165
  • @renovate made their first contribution in https://github.com/novuhq/novu/pull/186
  • @Abobos made their first contribution in https://github.com/novuhq/novu/pull/227
  • @rockingrohit9639 made their first contribution in https://github.com/novuhq/novu/pull/249
  • @rhythm-sharma made their first contribution in https://github.com/novuhq/novu/pull/253
  • @iampearceman made their first contribution in https://github.com/novuhq/novu/pull/262
  • @ninjadev101 made their first contribution in https://github.com/novuhq/novu/pull/333
  • @AlexVCS made their first contribution in https://github.com/novuhq/novu/pull/370
  • @nevo-david made their first contribution in https://github.com/novuhq/novu/pull/376
  • @fredsossa1 made their first contribution in https://github.com/novuhq/novu/pull/389
  • @aggmoulik made their first contribution in https://github.com/novuhq/novu/pull/352
  • @magnetomax made their first contribution in https://github.com/novuhq/novu/pull/423
  • @13colours made their first contribution in https://github.com/novuhq/novu/pull/489
  • @wolfymaster made their first contribution in https://github.com/novuhq/novu/pull/490
  • @TexasBullet26 made their first contribution in https://github.com/novuhq/novu/pull/566
  • @pgaijin66 made their first contribution in https://github.com/novuhq/novu/pull/564
  • @BiswaViraj made their first contribution in https://github.com/novuhq/novu/pull/568
  • @SaschaWebDev made their first contribution in https://github.com/novuhq/novu/pull/584

Full Changelog: https://github.com/novuhq/novu/compare/v0.3.5...v0.4.0

- TypeScript
Published by scopsy over 3 years ago

novu - V0.3.3 - The fancy frog release 🐸

What's new?

  • Email attachments support
  • New direct messaging interface
  • New NestJS module for Notifire by @devblin in https://github.com/notifirehq/notifire/pull/106
  • New readme file for our npm package by @SachinHatikankar100 in https://github.com/notifirehq/notifire/pull/121
  • Code generator for SMS providers by @galezra in https://github.com/notifirehq/notifire/pull/131
  • Docs for generating a new provider by @cloudguruab in https://github.com/notifirehq/notifire/pull/132

Email attachments support

This incredible community effort started from @davidsoderberg who took on him to finalize the interface for the $attachments and later on all the community took the effort to update all of our 9 email providers.

So how this works? The $attachment interface receives an array of attachment objects. Each attachment contains a file buffer, the mime type and the attachment name to be used. const fileBuffer = fs.readFileSync('event.ics'); await notifire.trigger('test', { $user_id: '1234', $email: 'recipient@email.com', $attachments: [{ file: fileBuffer, mime: 'text/plain', name: 'event.ics' }] });

NestJS module

Created by @devblin you can now use notifire in your nestjs application easily by installing the @notifire/nest package.

Initializing module with templates and providers: ```typescript import { NotifireModule } from "@notifire/nest";

@Module({ imports: [ NotifireModule.forRoot({ providers: [ new SendgridEmailProvider({ apiKey: process.env.SENDGRIDAPIKEY, from: 'sender@mail.com', }), ], templates: [ { id: 'password-reset', messages: [ { subject: 'Your password reset request', channel: ChannelTypeEnum.EMAIL, template: Hi {{firstName}}! To reset your password click <a href="{{resetLink}}">here.</a> , }, ], }, ], }), ], }) ```

Using notifire's singleton service in other services and modules:

```javascript import { Injectable } from '@nestjs/common'; import { NotifireService } from '@notifire/nest';

@Injectable() export class UserService { constructor(private readonly notifire: NotifireService) {}

async triggerEvent() { await this.notifire.trigger('password-reset', { $email: 'reciever@mail.com', $user_id: 'id' }); } } ```


Mail attachments contributors

  • Add Attachments Interface by @davidsoderberg in https://github.com/notifirehq/notifire/pull/93
  • Added attachment support for mailjet provider by @devblin in https://github.com/notifirehq/notifire/pull/116
  • Nodemailer attachments support by @galezra in https://github.com/notifirehq/notifire/pull/120
  • Postmark attachments support by @galezra in https://github.com/notifirehq/notifire/pull/119
  • Sendgrid attachments support by @galezra in https://github.com/notifirehq/notifire/pull/117
  • Added attachment support to mailgun by @l0ne in https://github.com/notifirehq/notifire/pull/122
  • Mandrill attachment by @diganta413 in https://github.com/notifirehq/notifire/pull/124
  • Added SES attachments support by @galezra in https://github.com/notifirehq/notifire/pull/129
  • Addd emailjs attachment support by @peoray in https://github.com/notifirehq/notifire/pull/130

New providers

  • Added Sendinblue as a provider by @galezra in https://github.com/notifirehq/notifire/pull/111
  • Added Nexmo/Vonage SMS by @ranrib in https://github.com/notifirehq/notifire/pull/136
  • Added sms77 as an SMS provider @matthiez in https://github.com/notifirehq/notifire/pull/134

Other changes

  • Fixed typo at the quick-start docs page by @chasmfiend in https://github.com/notifirehq/notifire/pull/110

New Contributors in this version

  • @chasmfiend made their first contribution in https://github.com/notifirehq/notifire/pull/110
  • @devblin made their first contribution in https://github.com/notifirehq/notifire/pull/106
  • @galezra made their first contribution in https://github.com/notifirehq/notifire/pull/111
  • @l0ne made their first contribution in https://github.com/notifirehq/notifire/pull/122
  • @cloudguruab made their first contribution in https://github.com/notifirehq/notifire/pull/132
  • @matthiez made their first contribution in https://github.com/notifirehq/notifire/pull/134
  • @peoray made their first contribution in https://github.com/notifirehq/notifire/pull/130
  • @ranrib made their first contribution in https://github.com/notifirehq/notifire/pull/136

- TypeScript
Published by scopsy about 4 years ago

novu - v0.2.5 - The tiny cake release  🍰

What's Changed

  • New Amazon SES email provider by @ulentini in https://github.com/notifirehq/notifire/pull/72
  • New Mandrill Provider Added by @diganta413 in https://github.com/notifirehq/notifire/pull/63
  • Custom template function by @davidsoderberg in https://github.com/notifirehq/notifire/pull/85
  • Add SNS sms provider by @Wyfy0107 in https://github.com/notifirehq/notifire/pull/87
  • Validator for trigger variables on the message level by @davidsoderberg in https://github.com/notifirehq/notifire/pull/91

Other changes

  • Typo fixed by @tonytangdev in https://github.com/notifirehq/notifire/pull/81

Custom template function

In some cases, if you want to use your own template engine and not the built handlebars compiler, you can pass a function as the template in the message object.

typescript await templateStore.addTemplate({ id: 'test-notification-promise', messages: [ { subject: '<div>{{firstName}}</div>', channel: ChannelTypeEnum.EMAIL, template: (trigger: ITriggerPayload) => { return `Custom rendered HTML` } }, ], });

Validate trigger variables

From this version, you can run a validator for the ITriggerPayload passed to each message.

```typescript class JoiValidator extends IMessageValidator { constructor(private joiSchema) {}

async validate(payload) { const { error } = this.joiSchema.validate(payload); if (error) throw new Error(error);

 return true;

} }

await templateStore.addTemplate({ id: 'test-notification-promise', messages: [ { validator: new JoiValidator(Joi.object({ firstName: Joi.string(), lastName: Joi.string().required(), })), subject: '

{{firstName}}
', channel: ChannelTypeEnum.EMAIL, template: Template }, ], });

```

New Contributors

  • @ulentini made their first contribution in https://github.com/notifirehq/notifire/pull/72
  • @tonytangdev made their first contribution in https://github.com/notifirehq/notifire/pull/81
  • @davidsoderberg made their first contribution in https://github.com/notifirehq/notifire/pull/85
  • @diganta413 made their first contribution in https://github.com/notifirehq/notifire/pull/63
  • @Wyfy0107 made their first contribution in https://github.com/notifirehq/notifire/pull/87

Full Changelog: https://github.com/notifirehq/notifire/compare/v0.2.4...v0.2.5

- TypeScript
Published by scopsy about 4 years ago

novu - v0.2.4

What's Changed

Easily create provider

Added a hygen script to generate a new provider boilerplate. Run yarn run generate:provider from the root of the project and follow the descriptions by @scopsy in https://github.com/notifirehq/notifire/pull/61

New MailJet provider

You can now send emails using mailjet by @deepak-sreekumar in https://github.com/notifirehq/notifire/pull/66

Unified SMS Providers response

A new unified provider response was added to all the SMS providers by @ComBarnea in https://github.com/notifirehq/notifire/pull/62

Fixes

  • refactor(@notifire/core): adds a strict mode typescript compilation by @scopsy in https://github.com/notifirehq/notifire/pull/69
  • [doc] Updated readme's example by @akhil-gautam in https://github.com/notifirehq/notifire/pull/71
  • fix() Fixed Cannot find module 'handlebars' error

New Contributors

  • @deepak-sreekumar made their first contribution in https://github.com/notifirehq/notifire/pull/66
  • @akhil-gautam made their first contribution in https://github.com/notifirehq/notifire/pull/71

Full Changelog: https://github.com/notifirehq/notifire/compare/v0.2.3...v0.2.4

- TypeScript
Published by scopsy about 4 years ago

novu - v0.2.3

New providers 🚀

Exciting release with 4 new provider:

Improvements ⭐️

  • Added codespaces quick setup. Just press . on every PR to start developing quickly.
  • Unified Provider response API. You will get the provider message identifier and the time stamp.
  • A brand new theming API! Control the theme of your messages easily.

Other bug fixes and enhancements

Thanks to @SachinHatikankar100 and @L8Y for their contributions.

- TypeScript
Published by scopsy about 4 years ago