Commit Graph

3 Commits

Author SHA1 Message Date
Chris Farhood 873ec033fe fix: use official Headlamp API instead of internal paths
The plugin was importing from internal Headlamp paths like
'@kinvolk/headlamp-plugin/lib/lib/k8s/cluster' instead of using the
official public API '@kinvolk/headlamp-plugin/lib'.

This caused the plugin to fail loading in the browser with:
"TypeError: undefined is not an object (evaluating 'Ot.KubeObject')"

Changes:
- Updated imports to use K8s.cluster and ApiProxy from main export
- Added vite.config.js with custom globals (now obsolete with this fix)
- Moved node-forge to dependencies for proper bundling

The plugin now uses only the official documented Headlamp plugin API.

Fixes: #[issue number if exists]

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-12 18:10:45 -05:00
Chris Farhood 55aba7417c feat: implement API version detection and compatibility (Phase 2.4)
Add automatic detection of SealedSecrets CRD API version from cluster.
The plugin now adapts to installed versions (v1alpha1, v1, etc.) and
provides warnings when CRD is missing or non-default versions are used.

Changes:
- Add detectApiVersion() to SealedSecretCRD class
  - Queries CRD definition from Kubernetes API
  - Uses storage version (canonical version for etcd)
  - Caches result to avoid repeated API calls
  - Falls back to v1alpha1 if detection fails

- Create VersionWarning component
  - Auto-detects version on mount
  - Shows error alert for missing CRD (with install instructions)
  - Shows info alert for non-default versions
  - Provides retry button for failed detections
  - Configurable detail level (showDetails prop)

- Integrate version warnings into UI
  - SealedSecretList: minimal warnings (errors only)
  - SettingsPage: detailed version info always shown

- Add version management methods
  - getApiEndpoint(): auto-versioned endpoint
  - getDetectedVersion(): get cached version
  - clearVersionCache(): force re-detection

Benefits:
- Future-proof: automatically supports new API versions
- Better UX: clear error messages with installation help
- Performance: version detected once and cached
- Version awareness: users see which API version is active

Build: 351.34 kB (96.75 kB gzipped), +2.88 kB (+0.8%)
Phase 2.4 complete. 7 of 14 phases done (50% milestone).

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-11 21:57:43 -05:00
Chris Farhood dddbd30677 Initial release: Headlamp Sealed Secrets plugin v0.1.0
Features:
- Complete SealedSecret CRD integration with Headlamp
- Client-side encryption using controller's public key
- Support for all three scoping modes (strict, namespace-wide, cluster-wide)
- List and detail views for SealedSecrets
- Encryption dialog for creating new SealedSecrets
- Decryption support with RBAC awareness
- Sealing keys management
- Settings page for controller configuration
- Integration with Secret detail view

Technical:
- Full TypeScript with strict mode
- ~1,345 lines of code
- Build size: 339.42 kB (93.21 kB gzipped)
- Compatible with Headlamp v0.13.0+
- Apache 2.0 license

Security:
- All encryption performed client-side
- RSA-OAEP + AES-256-GCM (kubeseal-compatible)
- Auto-hide decrypted values after 30 seconds

Closes: Initial implementation
2026-02-11 20:31:20 -05:00