Skip to content

feat(platform): Project overview tab - #843

Merged
kriptonian1 merged 23 commits into
developfrom
CU-86cy8d32f_Modifications-in-Edit-Project
Apr 11, 2025
Merged

kriptonian1 merged 23 commits into
developfrom
CU-86cy8d32f_Modifications-in-Edit-Project

Conversation

@Souvik9205

@Souvik9205 Souvik9205 commented Mar 25, 2025 •

Copy link
Copy Markdown
Contributor

User description

Description

Project overview tab to show the secret-variable-environment list and have option to save and regenerate key

This is a draft PR, and we must further update the functionality.

Future Improvements

Mention any improvements to be done in the future related to any file/feature

Developer's checklist

  • [x ] My PR follows the style guidelines of this project
  • [ x] I have performed a self-check on my work

PR Type

Enhancement, Tests


Description

  • Added an "Overview" tab for project management.

    • Displays project details, secrets, variables, and environments.
    • Includes private key setup and regeneration features.
  • Introduced utilities for local key storage and time formatting.

  • Updated navigation and project card links to include the "Overview" tab.

  • Added reusable components for key management and loading states.


Changes walkthrough 📝

Relevant files
Enhancement
13 files
index.ts
Added new SVG icons for key management.                                   
+7/-1     
utils.ts
Added utilities for local key storage and time formatting.
+30/-0   
index.ts
Added atom for managing project private keys.                       
+2/-0     
page.tsx
Implemented "Overview" page with project details and key management.
+170/-0 
page.tsx
Refactored secret page to use centralized private key atom.
+12/-9   
layout.tsx
Integrated "Overview" tab into project layout.                     
+11/-6   
index.tsx
Added component for local private key setup.                         
+77/-0   
index.tsx
Added component for regenerating private keys.                     
+31/-0   
index.tsx
Added component for server-side private key setup.             
+84/-0   
index.tsx
Added dialog component for local private key setup.           
+82/-0   
index.tsx
Added skeleton loader for "Overview" page.                             
+10/-0   
index.tsx
Updated project card links to default to "Overview" tab. 
+1/-1     
index.tsx
Added "Overview" tab to project navigation.                           
+7/-1     

Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • @Souvik9205
    Souvik9205 requested a review from kriptonian1 as a code owner March 25, 2025 14:33
    @rajdip-b

    Copy link
    Copy Markdown
    Member

    Task linked: CU-86cy8d32f Modifications in Edit Project

    @codiumai-pr-agent-free

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
    🧪 No relevant tests
    🔒 Security concerns

    Sensitive information exposure:
    The project stores private keys in localStorage which is not secure for cryptographic keys. While the implementation includes options to reveal/hide the key in the UI, localStorage is vulnerable to XSS attacks and other client-side exploits. Consider using more secure storage options like the Web Crypto API's CryptoKey storage or a secure enclave if available.

    ⚡ Recommended focus areas for review

    Empty Private Key

    The regenerateKey function is sending an empty string as privateKey. The code comment indicates this needs to be changed later, but it could cause issues if deployed as is.

      regenerateKeyPair: true,
      privateKey: '' //Need to change the logic later
    })
    Incomplete Implementation

    The "Remove Key" button is rendered but has no onClick handler implemented, making it non-functional.

    <button
      className="flex w-[8rem] items-center justify-center gap-[10px] rounded-[8px] bg-[#DC2626] p-[16px] text-white"
      type="button"
    >
      <div className="text-[14px] font-[700]">Remove Key</div>
    </button>
    Potential Error

    When privateKey is null, the code attempts to call replace() and substring() methods on it in the LocalKeySetup component, which would cause runtime errors.

    <div className="flex flex-col gap-2">
      <div className="flex items-center gap-3">
        <KeyshadeLogoSVG />

    @codiumai-pr-agent-free

    codiumai-pr-agent-free Bot commented Mar 25, 2025 •

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    ✅ Fix contradictory key parameters
    Suggestion Impact:The commit addressed the contradictory parameters issue by replacing 'regenerateKeyPair: true' with 'storePrivateKey: true', which aligns with the suggestion's intent to prevent regenerating keys when storing an existing private key.

    code diff:

       const updatePrivateKey = useHttp((key: string) =>
         ControllerInstance.getInstance().projectController.updateProject({
           projectSlug,
    -      regenerateKeyPair: true,
    +      storePrivateKey: true,
           privateKey: key
         })
       )

    The updatePrivateKey function is setting regenerateKeyPair to true while also
    providing a privateKey. This is contradictory and potentially dangerous -
    regenerating keys would create new keys that would make the provided privateKey
    invalid. This could lead to data loss or encryption failures.

    apps/platform/src/components/dashboard/overview/ServerKeySetup/index.tsx [19-25]

     const updatePrivateKey = useHttp((key: string) =>
       ControllerInstance.getInstance().projectController.updateProject({
         projectSlug,
    -    regenerateKeyPair: true,
    +    regenerateKeyPair: false,
         privateKey: key
       })
     )

    [Suggestion has been applied]

    Suggestion importance[1-10]: 9

    __

    Why: This suggestion identifies a critical security issue where regenerateKeyPair is set to true while also providing a privateKey, which is contradictory and could lead to encryption failures or data loss. Setting regenerateKeyPair to false when storing an existing key is the correct approach.

    High
    ✅ Fix empty privateKey parameter
    Suggestion Impact:The commit removed the privateKey parameter from the regenerateKey function, addressing the issue highlighted in the suggestion.

    code diff:

    -  const regenerateKey = useHttp(() =>
    -    ControllerInstance.getInstance().projectController.updateProject({
    -      projectSlug,
    -      regenerateKeyPair: true,
    -      privateKey: '' //Need to change the logic later
    -    })

    The regenerateKey function is sending an empty string as privateKey which could
    cause issues when regenerating keys. This might lead to data loss or security
    problems. Either remove the privateKey parameter if it's not needed for
    regeneration or implement the proper logic to provide a valid key.

    apps/platform/src/components/dashboard/overview/RegenerateKey/index.tsx [11-17]

     const regenerateKey = useHttp(() =>
       ControllerInstance.getInstance().projectController.updateProject({
         projectSlug,
    -    regenerateKeyPair: true,
    -    privateKey: '' //Need to change the logic later
    +    regenerateKeyPair: true
       })
     )

    [Suggestion has been applied]

    Suggestion importance[1-10]: 8

    __

    Why: The suggestion correctly identifies a potential security issue where an empty string is being sent as privateKey during key regeneration. Removing this parameter is appropriate since it's not needed when regenerateKeyPair is true, preventing potential data loss or security problems.

    Medium
    Handle negative time differences

    The formatTimeAgo function doesn't handle negative time differences, which can
    occur if the dateString is in the future or if there are clock synchronization
    issues. This could lead to incorrect time displays or potential bugs.

    apps/platform/src/lib/utils.ts [91-115]

     export function formatTimeAgo(dateString: Date): string {
       const updatedDate = new Date(dateString)
       const now = new Date()
       const diffInSeconds = Math.floor(
         (now.getTime() - updatedDate.getTime()) / 1000
       )
    +  
    +  if (diffInSeconds < 0) {
    +    return 'Updated recently'
    +  }
     
       const timeIntervals = [
         { label: 'year', seconds: 31536000 },
         { label: 'month', seconds: 2592000 },
         { label: 'week', seconds: 604800 },
         { label: 'day', seconds: 86400 },
         { label: 'hour', seconds: 3600 },
         { label: 'minute', seconds: 60 }
       ]
     
       for (const interval of timeIntervals) {
         const count = Math.floor(diffInSeconds / interval.seconds)
         if (count >= 1) {
           return `Updated ${count} ${interval.label}${count > 1 ? 's' : ''} ago`
         }
       }
     
       return 'Updated just now'
     }
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    __

    Why: The suggestion addresses a potential edge case where negative time differences could occur due to future dates or clock synchronization issues. Adding this check improves the robustness of the formatTimeAgo function and prevents unexpected behavior.

    Medium
    • Update

    @rajdip-b rajdip-b left a comment

    Copy link
    Copy Markdown
    Member

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I have dropped a lot of reviews. Once you are done with these, i believe it will be in a presentable state. I'll execute the code then, and drop more reviews if needed

    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/store/index.ts Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/layout.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/RegenerateKey/index.tsx Outdated
    @github-actions

    Copy link
    Copy Markdown
    Contributor

    @Souvik9205, please resolve all open reviews!

    @rajdip-b rajdip-b changed the title feat(platform): modification in edit project feat(platform): Project overview tab Mar 28, 2025
    @Souvik9205
    Souvik9205 force-pushed the CU-86cy8d32f_Modifications-in-Edit-Project branch from b70f8c9 to 84c911c Compare March 28, 2025 13:59
    @Souvik9205
    Souvik9205 force-pushed the CU-86cy8d32f_Modifications-in-Edit-Project branch from de65280 to 192b7d7 Compare March 28, 2025 18:16
    @github-actions

    Copy link
    Copy Markdown
    Contributor

    @Souvik9205, please resolve all open reviews; otherwise this PR will be closed after Tue Apr 01 2025 14:33:05 GMT+0000 (Coordinated Universal Time)!

    @rajdip-b rajdip-b left a comment

    Copy link
    Copy Markdown
    Member

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I have dropped quite a few reviews with "here". Need the styles updated for them

    Comment thread apps/platform/src/components/dashboard/overview/LocalKeySetup/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/LocalKeySetup/index.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/RegenerateKeyDialog/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/SetupLocalKeyDialog/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/SetupLocalKeyDialog/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/SetupLocalKeyDialog/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/SetupLocalKeyDialog/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/SetupLocalKeyDialog/index.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@overview/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@secret/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@secret/page.tsx Outdated
    Comment thread apps/platform/src/app/(main)/(project)/[workspace]/[project]/@secret/page.tsx Outdated
    @Souvik9205

    Copy link
    Copy Markdown
    Contributor Author

    updated UI
    Screenshot from 2025-04-05 15-10-37
    Screenshot from 2025-04-05 15-10-27
    Screenshot from 2025-04-05 15-10-16
    Screenshot from 2025-04-05 15-09-44
    Screenshot from 2025-04-05 15-09-38

    Comment thread apps/platform/src/hooks/use-fetch-privatekey.ts Outdated
    Comment thread apps/platform/src/hooks/use-fetch-privatekey.ts Outdated
    Comment thread apps/platform/src/hooks/use-fetch-privatekey.ts Outdated
    Comment thread apps/platform/src/components/dashboard/secret/decryptSecret/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/project/createProjectDialogue/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/confirmDeleteKey/index.tsx Outdated
    Comment thread apps/platform/src/components/dashboard/overview/confirmDeleteKey/index.tsx Outdated

    @kriptonian1 kriptonian1 left a comment

    Copy link
    Copy Markdown
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    LGTM

    @kriptonian1
    kriptonian1 merged commit 1c3b198 into develop Apr 11, 2025
    rajdip-b pushed a commit that referenced this pull request Apr 11, 2025
    ## [2.14.0-stage.23](v2.14.0-stage.22...v2.14.0-stage.23) (2025-04-11)
    
    ### 🚀 Features
    
    * **platform:** Project overview tab ([#843](#843)) ([1c3b198](1c3b198))
    @rajdip-b

    Copy link
    Copy Markdown
    Member

    🎉 This PR is included in version 2.14.0-stage.23 🎉

    The release is available on GitHub release

    Your semantic-release bot 📦🚀

    rajdip-b pushed a commit that referenced this pull request Apr 20, 2025
    ## [2.14.0](v2.13.0...v2.14.0) (2025-04-20)
    
    ### 🚀 Features
    
    * add welcome email template and update account login email service ([#864](#864)) ([e795e78](e795e78))
    * **api:** Resend workspace invitation ([#850](#850)) ([e2e9c0f](e2e9c0f))
    * **api:** Return tier limit for entities in projects and workspaces ([#833](#833)) ([6b1da04](6b1da04))
    * **api:** Return workspace membership creation date ([#842](#842)) ([cf60c35](cf60c35))
    * **cli:** Resend workspace invitation command ([#854](#854)) ([4c716ac](4c716ac))
    * **platform:** Add environment management to project creation dialog ([#848](#848)) ([720d4fb](720d4fb))
    * **platform:** Add role listing ([#855](#855)) ([c326337](c326337))
    * **platform:** Added workspace settings page ([#808](#808)) ([c62304c](c62304c))
    * **platform:** Create roles  ([#831](#831)) ([e07dac4](e07dac4))
    * **platform:** Delete role functionality ([#856](#856)) ([c2010fa](c2010fa))
    * **platform:** Edit Roles ([#862](#862)) ([24985cc](24985cc))
    * **platform:** Members Tab ([#846](#846)) ([edb88b5](edb88b5))
    * **platform:** One-Time Secret Display for API Key ([#771](#771)) ([#799](#799)) ([88e3ad9](88e3ad9))
    * **platform:** Paginated List Component ([#852](#852)) ([41d2266](41d2266))
    * **platform:** Project overview tab ([#843](#843)) ([1c3b198](1c3b198))
    * **project:** Fixed bugs with regenerating and storing private key ([c8f7cc6](c8f7cc6))
    * **project:** Return lastUpdatedBy data ([e665d12](e665d12))
    * **web:** Migrated from nextjs 13 to 15 ([#844](#844)) ([3212d47](3212d47))
    
    ### 🐛 Bug Fixes
    
    * **api:** Error in running the API locally ([88809ea](88809ea))
    * **api:** Prisma crashing ([21489f0](21489f0))
    * **api:** React dom version mismatch ([ed3614c](ed3614c))
    * **api:** Update schema for sentry env ([fb56520](fb56520))
    * **api:** Updated error handling ([8dc6e1f](8dc6e1f))
    * **api:** Updated sentry env name ([660d327](660d327))
    * **platform:** Added profile picture in the user settings with proper fallback ([#845](#845)) ([f32d90e](f32d90e))
    * **platform:** Redirect to dashboard after updating profile details ([#840](#840)) ([daa3e07](daa3e07))
    * **platform:** Scrollbar issue  ([#839](#839)) ([0627a6e](0627a6e))
    * **platform:** ui issues on otp & session expiry toasts ([#832](#832)) ([9d59de8](9d59de8))
    * **web:** Add margin for different screen size ([#820](#820)) ([524e741](524e741))
    
    ### 📚 Documentation
    
    * Update .env.example ([0de7b66](0de7b66))
    
    ### 🔧 Miscellaneous Chores
    
    * **api:** Add database seeding script and related commands ([#849](#849)) ([fe8fa45](fe8fa45))
    * **api:** HTTP 500 gets caught by sentry ([a8a39c1](a8a39c1))
    * **api:** Report only 500 errors ([1740690](1740690))
    * **api:** Return role slug in members response ([c719f16](c719f16))
    * **ci:** Add PNPM and build caching to speed up workflow ([#866](#866)) ([2f8bd9d](2f8bd9d))
    * **docker:** Add self-hosted Sentry support to docker-compose ([#860](#860)) ([163a365](163a365))
    * **release:** 2.14.0-stage.1 [skip ci] ([c9318af](c9318af))
    * **release:** 2.14.0-stage.10 [skip ci] ([f2d2cb0](f2d2cb0))
    * **release:** 2.14.0-stage.11 [skip ci] ([8e2abea](8e2abea))
    * **release:** 2.14.0-stage.12 [skip ci] ([838e775](838e775))
    * **release:** 2.14.0-stage.13 [skip ci] ([37901ab](37901ab))
    * **release:** 2.14.0-stage.14 [skip ci] ([a0956e7](a0956e7))
    * **release:** 2.14.0-stage.15 [skip ci] ([df842d1](df842d1))
    * **release:** 2.14.0-stage.16 [skip ci] ([bd6dac1](bd6dac1))
    * **release:** 2.14.0-stage.17 [skip ci] ([91dcaca](91dcaca))
    * **release:** 2.14.0-stage.18 [skip ci] ([179cd49](179cd49))
    * **release:** 2.14.0-stage.19 [skip ci] ([66011f3](66011f3))
    * **release:** 2.14.0-stage.2 [skip ci] ([0c0e510](0c0e510))
    * **release:** 2.14.0-stage.20 [skip ci] ([4a29665](4a29665))
    * **release:** 2.14.0-stage.21 [skip ci] ([78991e3](78991e3))
    * **release:** 2.14.0-stage.22 [skip ci] ([b8e352a](b8e352a))
    * **release:** 2.14.0-stage.23 [skip ci] ([60752fc](60752fc))
    * **release:** 2.14.0-stage.24 [skip ci] ([e729dcc](e729dcc))
    * **release:** 2.14.0-stage.25 [skip ci] ([4866192](4866192))
    * **release:** 2.14.0-stage.26 [skip ci] ([423782e](423782e))
    * **release:** 2.14.0-stage.27 [skip ci] ([c0e1519](c0e1519))
    * **release:** 2.14.0-stage.28 [skip ci] ([4ad6159](4ad6159))
    * **release:** 2.14.0-stage.29 [skip ci] ([8a22781](8a22781))
    * **release:** 2.14.0-stage.3 [skip ci] ([677211c](677211c))
    * **release:** 2.14.0-stage.4 [skip ci] ([ed82199](ed82199))
    * **release:** 2.14.0-stage.5 [skip ci] ([890979e](890979e))
    * **release:** 2.14.0-stage.6 [skip ci] ([9ab7b8e](9ab7b8e))
    * **release:** 2.14.0-stage.7 [skip ci] ([b615721](b615721))
    * **release:** 2.14.0-stage.8 [skip ci] ([f6ac8bf](f6ac8bf))
    * **release:** 2.14.0-stage.9 [skip ci] ([ff97183](ff97183))
    
    ### 🔨 Code Refactoring
    
    * **platform:** Add auth provider card in profile settings ([#841](#841)) ([8e79b9d](8e79b9d))
    @rajdip-b

    Copy link
    Copy Markdown
    Member

    🎉 This PR is included in version 2.14.0 🎉

    The release is available on GitHub release

    Your semantic-release bot 📦🚀

    rajdip-b pushed a commit that referenced this pull request Apr 20, 2025
    ## [2.14.0](v2.13.0...v2.14.0) (2025-04-20)
    
    ### 🚀 Features
    
    * add welcome email template and update account login email service ([#864](#864)) ([e795e78](e795e78))
    * **api:** Resend workspace invitation ([#850](#850)) ([e2e9c0f](e2e9c0f))
    * **api:** Return tier limit for entities in projects and workspaces ([#833](#833)) ([6b1da04](6b1da04))
    * **api:** Return workspace membership creation date ([#842](#842)) ([cf60c35](cf60c35))
    * **cli:** Resend workspace invitation command ([#854](#854)) ([4c716ac](4c716ac))
    * **platform:** Add environment management to project creation dialog ([#848](#848)) ([720d4fb](720d4fb))
    * **platform:** Add role listing ([#855](#855)) ([c326337](c326337))
    * **platform:** Added workspace settings page ([#808](#808)) ([c62304c](c62304c))
    * **platform:** Create roles  ([#831](#831)) ([e07dac4](e07dac4))
    * **platform:** Delete role functionality ([#856](#856)) ([c2010fa](c2010fa))
    * **platform:** Edit Roles ([#862](#862)) ([24985cc](24985cc))
    * **platform:** Members Tab ([#846](#846)) ([edb88b5](edb88b5))
    * **platform:** One-Time Secret Display for API Key ([#771](#771)) ([#799](#799)) ([88e3ad9](88e3ad9))
    * **platform:** Paginated List Component ([#852](#852)) ([41d2266](41d2266))
    * **platform:** Project overview tab ([#843](#843)) ([1c3b198](1c3b198))
    * **project:** Fixed bugs with regenerating and storing private key ([c8f7cc6](c8f7cc6))
    * **project:** Return lastUpdatedBy data ([e665d12](e665d12))
    * **web:** Migrated from nextjs 13 to 15 ([#844](#844)) ([3212d47](3212d47))
    
    ### 🐛 Bug Fixes
    
    * **api:** Error in running the API locally ([88809ea](88809ea))
    * **api:** Prisma crashing ([21489f0](21489f0))
    * **api:** React dom version mismatch ([ed3614c](ed3614c))
    * **api:** Update schema for sentry env ([fb56520](fb56520))
    * **api:** Updated error handling ([8dc6e1f](8dc6e1f))
    * **api:** Updated sentry env name ([660d327](660d327))
    * **platform:** Added profile picture in the user settings with proper fallback ([#845](#845)) ([f32d90e](f32d90e))
    * **platform:** Redirect to dashboard after updating profile details ([#840](#840)) ([daa3e07](daa3e07))
    * **platform:** Scrollbar issue  ([#839](#839)) ([0627a6e](0627a6e))
    * **platform:** ui issues on otp & session expiry toasts ([#832](#832)) ([9d59de8](9d59de8))
    * **web:** Add margin for different screen size ([#820](#820)) ([524e741](524e741))
    
    ### 📚 Documentation
    
    * Update .env.example ([0de7b66](0de7b66))
    
    ### 🔧 Miscellaneous Chores
    
    * **api:** Add database seeding script and related commands ([#849](#849)) ([fe8fa45](fe8fa45))
    * **api:** HTTP 500 gets caught by sentry ([a8a39c1](a8a39c1))
    * **api:** Report only 500 errors ([1740690](1740690))
    * **api:** Return role slug in members response ([c719f16](c719f16))
    * **ci:** Add PNPM and build caching to speed up workflow ([#866](#866)) ([2f8bd9d](2f8bd9d))
    * **docker:** Add self-hosted Sentry support to docker-compose ([#860](#860)) ([163a365](163a365))
    * **release:** 2.14.0-stage.1 [skip ci] ([c9318af](c9318af))
    * **release:** 2.14.0-stage.10 [skip ci] ([f2d2cb0](f2d2cb0))
    * **release:** 2.14.0-stage.11 [skip ci] ([8e2abea](8e2abea))
    * **release:** 2.14.0-stage.12 [skip ci] ([838e775](838e775))
    * **release:** 2.14.0-stage.13 [skip ci] ([37901ab](37901ab))
    * **release:** 2.14.0-stage.14 [skip ci] ([a0956e7](a0956e7))
    * **release:** 2.14.0-stage.15 [skip ci] ([df842d1](df842d1))
    * **release:** 2.14.0-stage.16 [skip ci] ([bd6dac1](bd6dac1))
    * **release:** 2.14.0-stage.17 [skip ci] ([91dcaca](91dcaca))
    * **release:** 2.14.0-stage.18 [skip ci] ([179cd49](179cd49))
    * **release:** 2.14.0-stage.19 [skip ci] ([66011f3](66011f3))
    * **release:** 2.14.0-stage.2 [skip ci] ([0c0e510](0c0e510))
    * **release:** 2.14.0-stage.20 [skip ci] ([4a29665](4a29665))
    * **release:** 2.14.0-stage.21 [skip ci] ([78991e3](78991e3))
    * **release:** 2.14.0-stage.22 [skip ci] ([b8e352a](b8e352a))
    * **release:** 2.14.0-stage.23 [skip ci] ([60752fc](60752fc))
    * **release:** 2.14.0-stage.24 [skip ci] ([e729dcc](e729dcc))
    * **release:** 2.14.0-stage.25 [skip ci] ([4866192](4866192))
    * **release:** 2.14.0-stage.26 [skip ci] ([423782e](423782e))
    * **release:** 2.14.0-stage.27 [skip ci] ([c0e1519](c0e1519))
    * **release:** 2.14.0-stage.28 [skip ci] ([4ad6159](4ad6159))
    * **release:** 2.14.0-stage.29 [skip ci] ([8a22781](8a22781))
    * **release:** 2.14.0-stage.3 [skip ci] ([677211c](677211c))
    * **release:** 2.14.0-stage.4 [skip ci] ([ed82199](ed82199))
    * **release:** 2.14.0-stage.5 [skip ci] ([890979e](890979e))
    * **release:** 2.14.0-stage.6 [skip ci] ([9ab7b8e](9ab7b8e))
    * **release:** 2.14.0-stage.7 [skip ci] ([b615721](b615721))
    * **release:** 2.14.0-stage.8 [skip ci] ([f6ac8bf](f6ac8bf))
    * **release:** 2.14.0-stage.9 [skip ci] ([ff97183](ff97183))
    
    ### 🔨 Code Refactoring
    
    * **platform:** Add auth provider card in profile settings ([#841](#841)) ([8e79b9d](8e79b9d))
    poswalsameer pushed a commit to poswalsameer/keyshade-poswalsameer that referenced this pull request Apr 27, 2025
    ## [2.14.0](keyshade-xyz/keyshade@v2.13.0...v2.14.0) (2025-04-20)
    
    ### 🚀 Features
    
    * add welcome email template and update account login email service ([keyshade-xyz#864](keyshade-xyz#864)) ([e795e78](keyshade-xyz@e795e78))
    * **api:** Resend workspace invitation ([keyshade-xyz#850](keyshade-xyz#850)) ([e2e9c0f](keyshade-xyz@e2e9c0f))
    * **api:** Return tier limit for entities in projects and workspaces ([keyshade-xyz#833](keyshade-xyz#833)) ([6b1da04](keyshade-xyz@6b1da04))
    * **api:** Return workspace membership creation date ([keyshade-xyz#842](keyshade-xyz#842)) ([cf60c35](keyshade-xyz@cf60c35))
    * **cli:** Resend workspace invitation command ([keyshade-xyz#854](keyshade-xyz#854)) ([4c716ac](keyshade-xyz@4c716ac))
    * **platform:** Add environment management to project creation dialog ([keyshade-xyz#848](keyshade-xyz#848)) ([720d4fb](keyshade-xyz@720d4fb))
    * **platform:** Add role listing ([keyshade-xyz#855](keyshade-xyz#855)) ([c326337](keyshade-xyz@c326337))
    * **platform:** Added workspace settings page ([keyshade-xyz#808](keyshade-xyz#808)) ([c62304c](keyshade-xyz@c62304c))
    * **platform:** Create roles  ([keyshade-xyz#831](keyshade-xyz#831)) ([e07dac4](keyshade-xyz@e07dac4))
    * **platform:** Delete role functionality ([keyshade-xyz#856](keyshade-xyz#856)) ([c2010fa](keyshade-xyz@c2010fa))
    * **platform:** Edit Roles ([keyshade-xyz#862](keyshade-xyz#862)) ([24985cc](keyshade-xyz@24985cc))
    * **platform:** Members Tab ([keyshade-xyz#846](keyshade-xyz#846)) ([edb88b5](keyshade-xyz@edb88b5))
    * **platform:** One-Time Secret Display for API Key ([keyshade-xyz#771](keyshade-xyz#771)) ([keyshade-xyz#799](keyshade-xyz#799)) ([88e3ad9](keyshade-xyz@88e3ad9))
    * **platform:** Paginated List Component ([keyshade-xyz#852](keyshade-xyz#852)) ([41d2266](keyshade-xyz@41d2266))
    * **platform:** Project overview tab ([keyshade-xyz#843](keyshade-xyz#843)) ([1c3b198](keyshade-xyz@1c3b198))
    * **project:** Fixed bugs with regenerating and storing private key ([c8f7cc6](keyshade-xyz@c8f7cc6))
    * **project:** Return lastUpdatedBy data ([e665d12](keyshade-xyz@e665d12))
    * **web:** Migrated from nextjs 13 to 15 ([keyshade-xyz#844](keyshade-xyz#844)) ([3212d47](keyshade-xyz@3212d47))
    
    ### 🐛 Bug Fixes
    
    * **api:** Error in running the API locally ([88809ea](keyshade-xyz@88809ea))
    * **api:** Prisma crashing ([21489f0](keyshade-xyz@21489f0))
    * **api:** React dom version mismatch ([ed3614c](keyshade-xyz@ed3614c))
    * **api:** Update schema for sentry env ([fb56520](keyshade-xyz@fb56520))
    * **api:** Updated error handling ([8dc6e1f](keyshade-xyz@8dc6e1f))
    * **api:** Updated sentry env name ([660d327](keyshade-xyz@660d327))
    * **platform:** Added profile picture in the user settings with proper fallback ([keyshade-xyz#845](keyshade-xyz#845)) ([f32d90e](keyshade-xyz@f32d90e))
    * **platform:** Redirect to dashboard after updating profile details ([keyshade-xyz#840](keyshade-xyz#840)) ([daa3e07](keyshade-xyz@daa3e07))
    * **platform:** Scrollbar issue  ([keyshade-xyz#839](keyshade-xyz#839)) ([0627a6e](keyshade-xyz@0627a6e))
    * **platform:** ui issues on otp & session expiry toasts ([keyshade-xyz#832](keyshade-xyz#832)) ([9d59de8](keyshade-xyz@9d59de8))
    * **web:** Add margin for different screen size ([keyshade-xyz#820](keyshade-xyz#820)) ([524e741](keyshade-xyz@524e741))
    
    ### 📚 Documentation
    
    * Update .env.example ([0de7b66](keyshade-xyz@0de7b66))
    
    ### 🔧 Miscellaneous Chores
    
    * **api:** Add database seeding script and related commands ([keyshade-xyz#849](keyshade-xyz#849)) ([fe8fa45](keyshade-xyz@fe8fa45))
    * **api:** HTTP 500 gets caught by sentry ([a8a39c1](keyshade-xyz@a8a39c1))
    * **api:** Report only 500 errors ([1740690](keyshade-xyz@1740690))
    * **api:** Return role slug in members response ([c719f16](keyshade-xyz@c719f16))
    * **ci:** Add PNPM and build caching to speed up workflow ([keyshade-xyz#866](keyshade-xyz#866)) ([2f8bd9d](keyshade-xyz@2f8bd9d))
    * **docker:** Add self-hosted Sentry support to docker-compose ([keyshade-xyz#860](keyshade-xyz#860)) ([163a365](keyshade-xyz@163a365))
    * **release:** 2.14.0-stage.1 [skip ci] ([c9318af](keyshade-xyz@c9318af))
    * **release:** 2.14.0-stage.10 [skip ci] ([f2d2cb0](keyshade-xyz@f2d2cb0))
    * **release:** 2.14.0-stage.11 [skip ci] ([8e2abea](keyshade-xyz@8e2abea))
    * **release:** 2.14.0-stage.12 [skip ci] ([838e775](keyshade-xyz@838e775))
    * **release:** 2.14.0-stage.13 [skip ci] ([37901ab](keyshade-xyz@37901ab))
    * **release:** 2.14.0-stage.14 [skip ci] ([a0956e7](keyshade-xyz@a0956e7))
    * **release:** 2.14.0-stage.15 [skip ci] ([df842d1](keyshade-xyz@df842d1))
    * **release:** 2.14.0-stage.16 [skip ci] ([bd6dac1](keyshade-xyz@bd6dac1))
    * **release:** 2.14.0-stage.17 [skip ci] ([91dcaca](keyshade-xyz@91dcaca))
    * **release:** 2.14.0-stage.18 [skip ci] ([179cd49](keyshade-xyz@179cd49))
    * **release:** 2.14.0-stage.19 [skip ci] ([66011f3](keyshade-xyz@66011f3))
    * **release:** 2.14.0-stage.2 [skip ci] ([0c0e510](keyshade-xyz@0c0e510))
    * **release:** 2.14.0-stage.20 [skip ci] ([4a29665](keyshade-xyz@4a29665))
    * **release:** 2.14.0-stage.21 [skip ci] ([78991e3](keyshade-xyz@78991e3))
    * **release:** 2.14.0-stage.22 [skip ci] ([b8e352a](keyshade-xyz@b8e352a))
    * **release:** 2.14.0-stage.23 [skip ci] ([60752fc](keyshade-xyz@60752fc))
    * **release:** 2.14.0-stage.24 [skip ci] ([e729dcc](keyshade-xyz@e729dcc))
    * **release:** 2.14.0-stage.25 [skip ci] ([4866192](keyshade-xyz@4866192))
    * **release:** 2.14.0-stage.26 [skip ci] ([423782e](keyshade-xyz@423782e))
    * **release:** 2.14.0-stage.27 [skip ci] ([c0e1519](keyshade-xyz@c0e1519))
    * **release:** 2.14.0-stage.28 [skip ci] ([4ad6159](keyshade-xyz@4ad6159))
    * **release:** 2.14.0-stage.29 [skip ci] ([8a22781](keyshade-xyz@8a22781))
    * **release:** 2.14.0-stage.3 [skip ci] ([677211c](keyshade-xyz@677211c))
    * **release:** 2.14.0-stage.4 [skip ci] ([ed82199](keyshade-xyz@ed82199))
    * **release:** 2.14.0-stage.5 [skip ci] ([890979e](keyshade-xyz@890979e))
    * **release:** 2.14.0-stage.6 [skip ci] ([9ab7b8e](keyshade-xyz@9ab7b8e))
    * **release:** 2.14.0-stage.7 [skip ci] ([b615721](keyshade-xyz@b615721))
    * **release:** 2.14.0-stage.8 [skip ci] ([f6ac8bf](keyshade-xyz@f6ac8bf))
    * **release:** 2.14.0-stage.9 [skip ci] ([ff97183](keyshade-xyz@ff97183))
    
    ### 🔨 Code Refactoring
    
    * **platform:** Add auth provider card in profile settings ([keyshade-xyz#841](keyshade-xyz#841)) ([8e79b9d](keyshade-xyz@8e79b9d))
    @rajdip-b
    rajdip-b deleted the CU-86cy8d32f_Modifications-in-Edit-Project branch July 1, 2025 13:18
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    3 participants