Skip to content

Releases: novuhq/novu

@novu/[email protected]

13 Aug 13:11
b6cbae2
Compare
Choose a tag to compare

v3.8.1 (2025-08-13)

🩹 Fixes

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

❤️ Thank You

@novu/[email protected]

13 Aug 13:11
b6cbae2
Compare
Choose a tag to compare

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

@novu/[email protected]

22 Jul 12:21
9dfd667
Compare
Choose a tag to compare

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

@novu/[email protected]

22 Jul 12:21
9dfd667
Compare
Choose a tag to compare

v3.7.0 (2025-07-22)

🩹 Fixes

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

❤️ Thank You

@novu/[email protected]

22 Jul 12:21
9dfd667
Compare
Choose a tag to compare

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

@novu/[email protected]

22 Jul 12:21
9dfd667
Compare
Choose a tag to compare

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

v2.3.0

23 Jun 16:03
cb7cb90
Compare
Choose a tag to compare

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 LEGACY_DASHBOARD_URL 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 widget_jwt_expiration_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

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](https://github.com/novuhq/novu/pu...
Read more

v2.2.0

20 May 14:09
f804f31
Compare
Choose a tag to compare

🚀 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

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

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

v2.1.1

07 Feb 14:49
fc2e5c2
Compare
Choose a tag to compare

This release contains performance improvements and bug fixes.

What's Changed

  • fix(api): make access internal to self-managed bridge by @tatarco in #7145
  • fix(dashboard): In app step form fixes by @desiprisg in #7144
  • feat(dashboard): Sign up Questionnaire by @scopsy in #7114
  • feat(application-generic): add SUBSCRIBER_WIDGET_JWT_EXPIRATION_TIME env variable by @jainpawan21 in #7105
  • chore(api, worker): Instrument workflow v2 controller and bridge use-cases by @rifont in #7150
  • chore(root): Release 2024-11-28 08:06 by @github-actions in #7152
  • fix(api): Resolve circular import issue for workflow update validation by @tatarco in #7151
  • fix(dashboard): Sibling form structure and autosave by @desiprisg in #7149
  • feat(dashboard): saving modal on navigating outside editor by @ChmaraX in #7148
  • feat(dashboard): add feature flags provider and hook by @ChmaraX in #7133
  • perf(api): Lookup subscriber preferences with a single database query by @rifont in #7119
  • chore(root): Release 2024-11-28 20:40 by @github-actions in #7158
  • style(dashboard): Fix all modal and toast text overflow by @rifont in #7155
  • fix(dashboard): Copy current tab snippet code when clicking copy button by @rifont in #7157
  • chore(root): Release 2024-11-29 08:06 by @github-actions in #7162
  • chore(api, worker, dal): remove SubscriberPreferenceRepository by @rifont in #7165
  • fix(api,dashboard): Invalid url error and in-app tabs spacing by @desiprisg in #7167
  • feat(dashboard): Nv 4800 implement arrays and nested forms in custom step controls by @BiswaViraj in #7127
  • chore(shared): Eliminate circular dependencies by @SokratisVidros in #6743
  • fix(dashboard): Truncate workflow name on breadcrumbs by @desiprisg in #7169
  • chore(root): Remove logs by @SokratisVidros in #7168
  • fix(node): add includeInactiveChannels option in sdk method by @jainpawan21 in #7115
  • Revert "fix(node): add includeInactiveChannels option in sdk method" by @SokratisVidros in #7171
  • Fix/get subscriber preference channel update by @SokratisVidros in #7172
  • fix(dashboard): polish autosave experience by @LetItRock in #7164
  • feat(api): fix framework workflow payload preview by @djabarovgeorge in #7137
  • chore(root): Release 2024-12-02 08:06 by @github-actions in #7179
  • fix(dashboard): Update predefined avatars by @desiprisg in #7181
  • fix(api): regression bug by @djabarovgeorge in #7182
  • fix(dashboard): Show failed toast on triggering inactive workflows by @desiprisg in #7183
  • fix(dashboard): Fix custom step controls padding by @desiprisg in #7185
  • fix(api): invalid schema by @djabarovgeorge in #7184
  • chore(root): Release 2024-12-02 15:06 by @github-actions in #7188
  • feat(application-generic): core mixpanel events for the workflow and step creation by @LetItRock in #7189
  • feat(api): wip fix framework workflow issues by @djabarovgeorge in #7147
  • feat(api): converted bulk trigger to use SDK by @tatarco in #7166
  • feat(dashboard): add button loading state prop by @scopsy in #7191
  • chore(root): Release 2024-12-03 08:06 by @github-actions in #7195
  • fix(dashboard): don't use defaultValues for async content by @ChmaraX in #7187
  • fix(dashboard): in-app editor preview only call when tab is opened by @LetItRock in #7186
  • feat(dashboard): signout from v2 should navigatefor new login page by @scopsy in #7196
  • refactor(dashboard): use the update motion library instead of framer-motion by @scopsy in #7193
  • feat(api): gracefully preview by @djabarovgeorge in #7190
  • chore(dashboard): beta label by @LetItRock in #7197
  • chore(root): Release 2024-12-03 10:32 by @github-actions in #7198
  • fix(dashboard): step form values were not updated when switching between steps by @LetItRock in #7201
  • chore(api): Enable preview deployments by @SokratisVidros in #7200
  • fix(js): Remove @novu/shared dependency by @SokratisVidros in #6906
  • feat(dashboard): Getting started page by @scopsy in #7132
  • Revert "fix(js): Remove @novu/shared dependency" by @scopsy in #7206
  • feat(dashboard): Inbox starter onboarding page by @scopsy in #7154
  • fix(api): step naming by @djabarovgeorge in #7140
  • fix(api): next build by @djabarovgeorge in #7217
  • fix(dashboard): minor onboarding updates by @scopsy in #7210
  • feat(api): Nv 4939 e2e testing happy path events by @tatarco in #7208
  • feat(dashboard): Clerk based settings page by @scopsy in #7202
  • feat(dashboard): api keys page by @scopsy in #7204
  • feat(dashboard): Implement email step editor & small preview by @desiprisg in #7129
  • chore(root): Release 2024-12-05 12:46 by @github-actions in #7221
  • feat(dashboard): Add workflow page action menu by @scopsy in #7222
  • feat(dashboard): add plain chat buttons by @jainpawan21 in #7209
  • feat(novu): Add --studio-host option on dev server by @4rthem in #7211
  • feat(dashboard): NV-4969 export to code preview banner by @scopsy in #7224
  • fix(dashboard): dropdown freeze by @scopsy in #7229
  • fix(dashboard): editor fields lagging by @LetItRock in #7213
  • feat(dashboard): add delay step by @ChmaraX in #7131
  • fix(dashboard): Ensure URL Input gets the available width by @SokratisVidros in #7226
  • feat(dashboard): Nv 4525 workflow editor channel preferences by @BiswaViraj in #7212
  • feat(api): add exception log by @djabarovgeorge in #7225
  • fix(dashboard): configurable code-first workflows by @ChmaraX in #7231
  • refactor(api): generate payload in runtime by @djabarovgeorge in #7192
  • chore(root): Release 2024-12-06 15:53 by @github-actions in #7233
  • feat(dashboard): Email step preview by @desiprisg in #7228
  • fix(dashboard): Always trust the URL for the environment selection by @SokratisVidros in #7223
  • fix(dashboard): fixed the missing in-app editor body message by @LetItRock in #7215
  • feat(dashboard): delay amount input field polish by @ChmaraX in #7230
  • style(dashboard): improve keys page design and look and feel by @scopsy in #7236
  • feat(api): 'Missing' issue missing when the control value has empty string by @tatarco in #7244
  • fix(api): allow empty email preview by @djabarovgeorge in #7239
  • chore(root): Release 2024-12-09 08:06 by @github-actions in #7241
  • feat(dashboard): Billing settings page in dashboard v2 by @scopsy in #7203
  • fix(dashboard): run queue invocations safely by @ChmaraX in #7243
  • fix(dashboard): autosave do not block request on validation errors by @LetItRock in #7246
  • fix(dashboard): Fix double separator on step template sheet by @desiprisg in #7247
  • feat(dashboard): Delay step custom controls by @desiprisg in #7242
  • chore(dashboard): Update maily dep by @desiprisg in #7261
  • feat(api): add full step data to workflow dto; refactor by @ChmaraX in #7235
  • fix(dashboard): Fix stale data on test workflow page by @desiprisg in #7245
  • chore(root): specify mongodb version to 8.0.3 by @merrcury in #7258
  • feat(api): revert p...
Read more

v2.1.0

27 Nov 10:50
v2.1.0
0a1e34c
Compare
Choose a tag to compare

What’s new in Novu 2.1.0?

TL;DR: Preferences remodelling for 70% improvement in performance of Preference retrieval with an important database migration, 46% reduction in Docker image sizes, and more.

2.1.0 Release Updates

We're excited to share updated focussed on improving database and operational performance in our latest release. Join us as we reveal the improvements our team have been working on!

Preference remodelling and optimization

  • All Workflow & Subscriber preferences are now stored in a central Preferences collection to streamline preference retrieval for the <Inbox /> + Subscriber Preference API for a more performance subscriber preference management experience, and performance improvements of Worker engine during notification delivery
  • IMPORTANT: A mandatory database migration is required with this release to prepare for the removal of the SubscriberPreference collection and the NotificationTemplateRepository.{preferenceSettings,critical} property in a subsequent release. This data is migrated to a centralized Preference collection. Please visit the Data Migration documentation for more information on running the migration script. The following migration of data takes place:
    • Workflow preference (NotificationTemplate.preferenceSettings)
      • -> Preference record with type: 'WORKFLOW_RESOURCE' (for Code-First workflow support)
      • -> Preference record with type: 'USER_WORKFLOW' (for Dashboard/API user preference support)
    • Subscriber Global preference (SubscriberPreference with level: 'GLOBAL')
      • -> Preference record with type: 'SUBSCRIBER_GLOBAL'
    • Subscriber Workflow preference (SubscriberPreference with level: 'TEMPLATE')
      • -> Preference record with type: 'SUBSCRIBER_WORKFLOW'

Docker Image optimization for all applications

  • 46% reduction in Docker image sizes
  • Simplified COPY and RUN commands
  • Overall optimization of image structure
  • Replace external PM2 dependency for graceful shutdowns with native NestJS shutdown module

What's Changed

  • perf(framework): Replace all computed property keys with static declarations by @rifont in #6926
  • chore(web): shorten the digest default duration by @djabarovgeorge in #6918
  • feat(web,dashboard): opt-out, redirects by @ChmaraX in #6922
  • fix(dashboard): Render bold markdown in in app preview by @desiprisg in #6928
  • fix(dashboard): Add default values to workflow editor provider form by @desiprisg in #6932
  • fix(dal): Reduce default Mongo connections by @SokratisVidros in #6901
  • refactor(shared, dal, application-generic, api, web, dashboard): Remove json-schema-to-ts dependency and use JsonSchemaDto everywhere by @rifont in #6921
  • fix(dashboard): promote toast env name by @ChmaraX in #6933
  • fix(dashboard): create workflow docs link by @ChmaraX in #6936
  • fix(dashboard): align heading with the gutter by @ChmaraX in #6935
  • fix(web, dashboard): Remove additional quotes in PHP code snippet by @rifont in #6938
  • feat(api): invalidate stale workflows by @djabarovgeorge in #6887
  • fix(framework): Ensure missing schemas return unknown record type by @rifont in #6912
  • feat(dashboard): Add origin prop to CustomStepControls for conditiona… by @BiswaViraj in #6939
  • chore(root): Release 2024-11-12 08:05 by @github-actions in #6947
  • feat(dashboard): add full utc date for updated at on hover by @djabarovgeorge in #6948
  • fix(dashboard): Dropdown border and action picker clickable area by @desiprisg in #6944
  • fix(dashboard): Trim tag input tags before adding by @desiprisg in #6942
  • fix(dashboard): Allow newlines on trigger workflow payload editor by @desiprisg in #6941
  • fix(dashboard): Align header heights by @desiprisg in #6940
  • feat(api): Billing alerts on usage emails by @scopsy in #6883
  • fix(dashboard): Fix tag input suggestion sorting by @desiprisg in #6943
  • feat(dashboard): unify success toasts by @ChmaraX in #6937
  • fix(dashboard): opt-in image source by @ChmaraX in #6949
  • feat(web,dashboard): opt-in/out tracking by @ChmaraX in #6930
  • feat(api): restrict tags to max 8 by @djabarovgeorge in #6929
  • chore(root): move selective actions to blacksmith by @blacksmith-sh in #6950
  • fix(dashboard): Nv 4679 visiting UI based workflow shows framework code by @BiswaViraj in #6951
  • feat(api): Fix previous steps by @tatarco in #6905
  • fix(dashboard): Show consistent tag inputs by @desiprisg in #6960
  • fix(dashboard): Fix configure action not opening by @desiprisg in #6965
  • feat(dashboard): unify clerk primary button with dashboard design by @ChmaraX in #6959
  • feat(dashboard): trigger test workflow loading state by @ChmaraX in #6961
  • feat(dashboard): autofocus on first create workflow input by @ChmaraX in #6962
  • feat(dashboard): align layout based on design by @ChmaraX in #6964
  • feat(dashboard): workflow list empty states by @ChmaraX in #6955
  • chore(framework, shared, nextjs): Release new versions by @rifont in #6963
  • fix(dashboard): Don't suggest added tags in tag input by @desiprisg in #6968
  • feat(dashboard): workflow editor error handling by @LetItRock in #6953
  • feat(api): add origin backward compatibility mapping by @djabarovgeorge in #6973
  • feat(dashboard): in-app editor unsaved changes modal plus handling esc and clicking on drawer gray overlay by @LetItRock in #6958
  • refactor(api): Use UpdatePreference use-case for all Subscriber Preference updates by @rifont in #6889
  • chore(dashboard): disable 1password on the workflow create sidebar by @LetItRock in #6975
  • fix(api): upsert preference if exist by @djabarovgeorge in #6970
  • feat(dashboard): page meta, gtm, and uptime by @LetItRock in #6974
  • feat(dashboard): styling for read-only input fields by @ChmaraX in #6967
  • fix(dashboard): Tweak Create Workflow copywriting by @desiprisg in #6971
  • fix(dashboard): Workflow saving status on toast and multiple toasts by @desiprisg in #6972
  • refactor(api): remove $or query for hash on env by @scopsy in #6969
  • chore(dashboard): batch of small fixes by @LetItRock in #6977
  • fix(api): fix deletion of issues from persistence once no issues are found by @tatarco in #6956
  • fix(web): Preserve last active organization across full page reloads by @SokratisVidros in #6978
  • feat(node): add deleteByTransactionId method by @jainpawan21 in #6980
  • refactor(worker): Remove redundant Bridge error handling by @rifont in #6875
  • chore(dashboard): a few more fixes by @LetItRock in #6985
  • feat(api): add tags issues by @djabarovgeorge in #6957
  • feat(framework): Expose Workflow resource type in public API by @rifont in #6983
  • chore(dashboard): revert trigger success toast by @LetItRock in #6987
  • fix(api, application-generic): Filter with supplied tags when fetching subscriber preferences by @rifont in #6991
  • chore(framework): Release version 2.5.0 by @rifont in #6988
  • chore(root): Release 2024-11-14 08:06 by @github-actions in #6993
  • chore(root): Release 2024-11-13 08:05 by @github-actions in #6981
  • feat(dashboard): Save workflow on blur by @desiprisg in #6990
  • fix(dashboard): Call save before instantly flushing and instantly save tag changes by @desiprisg in #6997
  • feat(dashboard): Selected route background color in sidebar by @desiprisg in #6996
  • fix(dashboard): Fix close icon padding in tag input by @desiprisg in #6995
  • fix(dashboard): Hide search workflow input by @desiprisg in #6998
  • fix(dashboard): Lighten the focus border on inputs by @desiprisg in https://github.com/novuhq/novu...
Read more