Commit Graph

5 Commits

Author SHA1 Message Date
779b3d6e8c fix: handle undefined safeStorage and remove diagnostic logging
Root cause: electron.safeStorage was undefined (not null) when the
property doesn't exist, causing "Cannot read properties of undefined"
error when accessing isEncryptionAvailable.

Fix: Normalize undefined to null with `|| null` operator when importing
safeStorage, ensuring consistent null checks throughout the code.

Changes:
- Set safeStorage to null if electron.safeStorage is undefined
- Remove all diagnostic try-catch blocks from settings UI
- Remove console.log debugging statements
- Restore clean code that now works correctly

This resolves the settings UI crash that prevented the API key
management section from displaying.
2025-10-26 00:16:35 -04:00
efd1ff306e fix: refactor encryption utilities to safely check availability
Moved isEncryptionAvailable() to top of file and refactored to prevent
"Cannot read properties of undefined" errors when safeStorage exists
but doesn't have the isEncryptionAvailable method.

Changes:
- Move isEncryptionAvailable() before other functions so it can be used
- Add typeof check for isEncryptionAvailable method existence
- Use isEncryptionAvailable() helper in encryptApiKey() instead of
  directly calling safeStorage.isEncryptionAvailable()
- Ensures consistent safe checking across all encryption operations

This fixes the settings UI crash that prevented API key management
section from rendering.
2025-10-25 23:55:34 -04:00
f2a12ff3c2 fix: add defensive check for isEncryptionAvailable method
The isEncryptionAvailable() function was throwing "Cannot read properties
of undefined" when safeStorage exists but doesn't have the
isEncryptionAvailable method (can occur on some Electron versions).

This was causing the entire settings UI to fail rendering after the
Authentication heading, hiding all API key management controls.

Fix: Add typeof check before calling safeStorage.isEncryptionAvailable()
to ensure the method exists before attempting to call it.
2025-10-25 23:50:45 -04:00
1a42f0f88e feat: improve API key encryption reliability across environments
- Added safe electron import with fallback for non-electron environments
- Enhanced error handling when safeStorage is unavailable
- Updated encryption checks to handle cases where safeStorage is null
- Added warning message when API keys must be stored in plaintext
- Modified isEncryptionAvailable to check for both safeStorage existence and capability
2025-10-25 23:12:40 -04:00
cb21681dd0 feat: add API key encryption utilities using Electron safeStorage
Implement encryption utilities for securely storing API keys:
- encryptApiKey(): encrypts keys using Electron safeStorage with base64 encoding
- decryptApiKey(): decrypts stored keys
- isEncryptionAvailable(): checks platform support

Encryption falls back to plaintext on platforms without keyring support.
Includes comprehensive test coverage with Electron mock.
2025-10-25 22:14:29 -04:00