diff --git a/headlamp-sealed-secrets/.eslintcache b/headlamp-sealed-secrets/.eslintcache
index 773d550..a10b532 100644
--- a/headlamp-sealed-secrets/.eslintcache
+++ b/headlamp-sealed-secrets/.eslintcache
@@ -1 +1 @@
-[{"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/DecryptDialog.tsx":"1","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/EncryptDialog.tsx":"2","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretDetail.tsx":"3","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretList.tsx":"4","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealingKeysView.tsx":"5","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SecretDetailsSection.tsx":"6","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SettingsPage.tsx":"7","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/headlamp-plugin.d.ts":"8","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/index.tsx":"9","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/SealedSecretCRD.ts":"10","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/controller.ts":"11","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/crypto.ts":"12","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.ts":"13","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.ts":"14","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.ts":"15","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ControllerStatus.tsx":"16","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/usePermissions.ts":"17","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/rbac.ts":"18","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/VersionWarning.tsx":"19","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useControllerHealth.ts":"20","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useSealedSecretEncryption.ts":"21","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ErrorBoundary.tsx":"22","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/LoadingSkeletons.tsx":"23","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.test.ts":"24","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.test.ts":"25","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/test-setup.ts":"26","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.test.ts":"27"},{"size":5581,"mtime":1770930844758,"results":"28","hashOfConfig":"29"},{"size":9255,"mtime":1770930844758,"results":"30","hashOfConfig":"29"},{"size":9471,"mtime":1770930844758,"results":"31","hashOfConfig":"29"},{"size":4410,"mtime":1770930844759,"results":"32","hashOfConfig":"29"},{"size":6763,"mtime":1770930844759,"results":"33","hashOfConfig":"29"},{"size":2032,"mtime":1770930844759,"results":"34","hashOfConfig":"29"},{"size":5447,"mtime":1770930844759,"results":"35","hashOfConfig":"29"},{"size":654,"mtime":1770930844760,"results":"36","hashOfConfig":"29"},{"size":3101,"mtime":1770930844760,"results":"37","hashOfConfig":"29"},{"size":5550,"mtime":1770937988374,"results":"38","hashOfConfig":"29"},{"size":6452,"mtime":1770930844761,"results":"39","hashOfConfig":"29"},{"size":7209,"mtime":1770930844761,"results":"40","hashOfConfig":"29"},{"size":6736,"mtime":1770937845893,"results":"41","hashOfConfig":"29"},{"size":5606,"mtime":1770930844761,"results":"42","hashOfConfig":"29"},{"size":6584,"mtime":1770930844762,"results":"43","hashOfConfig":"29"},{"size":2503,"mtime":1770930844757,"results":"44","hashOfConfig":"29"},{"size":3720,"mtime":1770930844760,"results":"45","hashOfConfig":"29"},{"size":5047,"mtime":1770930844761,"results":"46","hashOfConfig":"29"},{"size":3542,"mtime":1770930844759,"results":"47","hashOfConfig":"29"},{"size":2080,"mtime":1770930844760,"results":"48","hashOfConfig":"29"},{"size":6710,"mtime":1770930844760,"results":"49","hashOfConfig":"29"},{"size":5486,"mtime":1770930844758,"results":"50","hashOfConfig":"29"},{"size":3236,"mtime":1770930844758,"results":"51","hashOfConfig":"29"},{"size":7517,"mtime":1770930844761,"results":"52","hashOfConfig":"29"},{"size":8512,"mtime":1770930844761,"results":"53","hashOfConfig":"29"},{"size":407,"mtime":1770930844762,"results":"54","hashOfConfig":"29"},{"size":8487,"mtime":1770930844762,"results":"55","hashOfConfig":"29"},{"filePath":"56","messages":"57","suppressedMessages":"58","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"sz0q8e",{"filePath":"59","messages":"60","suppressedMessages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","suppressedMessages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"65","messages":"66","suppressedMessages":"67","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","suppressedMessages":"70","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"71","messages":"72","suppressedMessages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"74","messages":"75","suppressedMessages":"76","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"77","messages":"78","suppressedMessages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"80","messages":"81","suppressedMessages":"82","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"83","messages":"84","suppressedMessages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","suppressedMessages":"88","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"89","messages":"90","suppressedMessages":"91","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"92","messages":"93","suppressedMessages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"95","messages":"96","suppressedMessages":"97","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"98","messages":"99","suppressedMessages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"101","messages":"102","suppressedMessages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","suppressedMessages":"106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"107","messages":"108","suppressedMessages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"110","messages":"111","suppressedMessages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","suppressedMessages":"115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"125","messages":"126","suppressedMessages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","suppressedMessages":"130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"131","messages":"132","suppressedMessages":"133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"134","messages":"135","suppressedMessages":"136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/DecryptDialog.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/EncryptDialog.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretDetail.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretList.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealingKeysView.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SecretDetailsSection.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SettingsPage.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/headlamp-plugin.d.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/index.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/SealedSecretCRD.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/controller.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/crypto.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ControllerStatus.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/usePermissions.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/rbac.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/VersionWarning.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useControllerHealth.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useSealedSecretEncryption.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ErrorBoundary.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/LoadingSkeletons.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.test.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.test.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/test-setup.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.test.ts",[],[]]
\ No newline at end of file
+[{"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/DecryptDialog.tsx":"1","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/EncryptDialog.tsx":"2","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretDetail.tsx":"3","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretList.tsx":"4","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealingKeysView.tsx":"5","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SecretDetailsSection.tsx":"6","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SettingsPage.tsx":"7","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/headlamp-plugin.d.ts":"8","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/index.tsx":"9","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/SealedSecretCRD.ts":"10","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/controller.ts":"11","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/crypto.ts":"12","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.ts":"13","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.ts":"14","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.ts":"15","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ControllerStatus.tsx":"16","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/usePermissions.ts":"17","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/rbac.ts":"18","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/VersionWarning.tsx":"19","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useControllerHealth.ts":"20","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useSealedSecretEncryption.ts":"21","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ErrorBoundary.tsx":"22","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/LoadingSkeletons.tsx":"23","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.test.ts":"24","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.test.ts":"25","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/test-setup.ts":"26","/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.test.ts":"27"},{"size":5581,"mtime":1770930844758,"results":"28","hashOfConfig":"29"},{"size":9255,"mtime":1770930844758,"results":"30","hashOfConfig":"29"},{"size":9471,"mtime":1770930844758,"results":"31","hashOfConfig":"29"},{"size":4410,"mtime":1770930844759,"results":"32","hashOfConfig":"29"},{"size":6763,"mtime":1770930844759,"results":"33","hashOfConfig":"29"},{"size":2032,"mtime":1770930844759,"results":"34","hashOfConfig":"29"},{"size":5447,"mtime":1770930844759,"results":"35","hashOfConfig":"29"},{"size":654,"mtime":1770930844760,"results":"36","hashOfConfig":"29"},{"size":3101,"mtime":1770930844760,"results":"37","hashOfConfig":"29"},{"size":5550,"mtime":1770937988374,"results":"38","hashOfConfig":"29"},{"size":6452,"mtime":1770930844761,"results":"39","hashOfConfig":"29"},{"size":7209,"mtime":1770930844761,"results":"40","hashOfConfig":"29"},{"size":6736,"mtime":1770937845893,"results":"41","hashOfConfig":"29"},{"size":5606,"mtime":1770930844761,"results":"42","hashOfConfig":"29"},{"size":6584,"mtime":1770930844762,"results":"43","hashOfConfig":"29"},{"size":2503,"mtime":1770930844757,"results":"44","hashOfConfig":"29"},{"size":3720,"mtime":1770930844760,"results":"45","hashOfConfig":"29"},{"size":5047,"mtime":1770930844761,"results":"46","hashOfConfig":"29"},{"size":3901,"mtime":1770945481412,"results":"47","hashOfConfig":"29"},{"size":2080,"mtime":1770930844760,"results":"48","hashOfConfig":"29"},{"size":6710,"mtime":1770930844760,"results":"49","hashOfConfig":"29"},{"size":5486,"mtime":1770930844758,"results":"50","hashOfConfig":"29"},{"size":3236,"mtime":1770930844758,"results":"51","hashOfConfig":"29"},{"size":7517,"mtime":1770930844761,"results":"52","hashOfConfig":"29"},{"size":8512,"mtime":1770930844761,"results":"53","hashOfConfig":"29"},{"size":407,"mtime":1770930844762,"results":"54","hashOfConfig":"29"},{"size":8487,"mtime":1770930844762,"results":"55","hashOfConfig":"29"},{"filePath":"56","messages":"57","suppressedMessages":"58","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"sz0q8e",{"filePath":"59","messages":"60","suppressedMessages":"61","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"62","messages":"63","suppressedMessages":"64","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"65","messages":"66","suppressedMessages":"67","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","suppressedMessages":"70","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"71","messages":"72","suppressedMessages":"73","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"74","messages":"75","suppressedMessages":"76","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"77","messages":"78","suppressedMessages":"79","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"80","messages":"81","suppressedMessages":"82","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"83","messages":"84","suppressedMessages":"85","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","suppressedMessages":"88","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"89","messages":"90","suppressedMessages":"91","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"92","messages":"93","suppressedMessages":"94","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"95","messages":"96","suppressedMessages":"97","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"98","messages":"99","suppressedMessages":"100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"101","messages":"102","suppressedMessages":"103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","suppressedMessages":"106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"107","messages":"108","suppressedMessages":"109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"110","messages":"111","suppressedMessages":"112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","suppressedMessages":"115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"116","messages":"117","suppressedMessages":"118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"119","messages":"120","suppressedMessages":"121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"122","messages":"123","suppressedMessages":"124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"125","messages":"126","suppressedMessages":"127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"128","messages":"129","suppressedMessages":"130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"131","messages":"132","suppressedMessages":"133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"134","messages":"135","suppressedMessages":"136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/DecryptDialog.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/EncryptDialog.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretDetail.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealedSecretList.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SealingKeysView.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SecretDetailsSection.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/SettingsPage.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/headlamp-plugin.d.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/index.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/SealedSecretCRD.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/controller.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/crypto.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ControllerStatus.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/usePermissions.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/rbac.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/VersionWarning.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useControllerHealth.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/hooks/useSealedSecretEncryption.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/ErrorBoundary.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/components/LoadingSkeletons.tsx",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/retry.test.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/lib/validators.test.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/test-setup.ts",[],[],"/Users/cpfarhood/Documents/Repositories/headlamp-sealed-secrets-plugin/headlamp-sealed-secrets/src/types.test.ts",[],[]]
\ No newline at end of file
diff --git a/headlamp-sealed-secrets/headlamp-sealed-secrets-0.2.8.tar.gz b/headlamp-sealed-secrets/headlamp-sealed-secrets-0.2.8.tar.gz
new file mode 100644
index 0000000..8ff4cf1
Binary files /dev/null and b/headlamp-sealed-secrets/headlamp-sealed-secrets-0.2.8.tar.gz differ
diff --git a/headlamp-sealed-secrets/package.json b/headlamp-sealed-secrets/package.json
index 4c83c30..9af0cd5 100644
--- a/headlamp-sealed-secrets/package.json
+++ b/headlamp-sealed-secrets/package.json
@@ -1,6 +1,6 @@
{
"name": "headlamp-sealed-secrets",
- "version": "0.2.8",
+ "version": "0.2.9",
"description": "Headlamp plugin for Bitnami Sealed Secrets - manage encrypted Kubernetes secrets",
"files": [
"dist",
diff --git a/headlamp-sealed-secrets/src/components/VersionWarning.tsx b/headlamp-sealed-secrets/src/components/VersionWarning.tsx
index 482fb42..d221068 100644
--- a/headlamp-sealed-secrets/src/components/VersionWarning.tsx
+++ b/headlamp-sealed-secrets/src/components/VersionWarning.tsx
@@ -32,14 +32,24 @@ export function VersionWarning({ autoDetect = true, showDetails = false }: Versi
setLoading(true);
setError(null);
- const result = await SealedSecret.detectApiVersion();
+ try {
+ const result = await SealedSecret.detectApiVersion();
- if (result.ok) {
- setDetectedVersion(result.value);
- setError(null);
- } else if (result.ok === false) {
+ if (result.ok) {
+ setDetectedVersion(result.value);
+ setError(null);
+ } else if (result.ok === false) {
+ setDetectedVersion(null);
+ // Ensure error is always a string
+ const errorMessage = typeof result.error === 'string'
+ ? result.error
+ : String(result.error);
+ setError(errorMessage);
+ }
+ } catch (e) {
+ // Catch any unexpected errors
setDetectedVersion(null);
- setError(result.error);
+ setError(e instanceof Error ? e.message : String(e));
}
setLoading(false);
@@ -67,8 +77,8 @@ export function VersionWarning({ autoDetect = true, showDetails = false }: Versi
}>
API Version Detection Failed
- {error}
- {error.includes('not found') && (
+ {String(error)}
+ {String(error).includes('not found') && (
<>