Remove Gitea workflows and consolidate to GitHub Actions as the single
CI/CD platform. GitHub is now the sole source of truth for the project.
Changes:
- Remove .gitea/workflows/ directory entirely
- ai-review.yaml (Gitea-specific, not migrating)
- e2e.yaml (replaced by .github/workflows/e2e.yaml)
- release.yaml (already exists at .github/workflows/release.yaml)
- Migrate .gitea/workflows/ci.yaml → .github/workflows/ci.yaml
- Add unit tests to CI workflow
- Use Node.js 20 with npm caching
- Add 10-minute timeout
GitHub Actions Workflows:
- ci.yaml: Lint, type-check, format-check, build, test
- e2e.yaml: End-to-end Playwright tests
- release.yaml: Build tarball, create GitHub release, update ArtifactHub metadata
Repository Setup:
- Single remote: https://github.com/cpfarhood/headlamp-polaris-plugin
- All development, CI/CD, and releases happen on GitHub
- ArtifactHub pulls releases from GitHub every 30 minutes
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>
Add comprehensive Playwright E2E testing documentation and additional
test coverage for app bar badge and plugin settings functionality.
Changes:
- Add GitHub Actions workflow for E2E tests (.github/workflows/e2e.yaml)
- Create .env.example for local test configuration
- Update .gitignore to exclude .env files
- Enhance e2e/README.md with:
- Detailed test coverage documentation
- Cluster requirements and prerequisites
- Debugging guides and troubleshooting tips
- CI/CD integration instructions for GitHub Actions
- Best practices and examples for writing new tests
- Add e2e/settings.spec.ts:
- Test plugin settings page visibility
- Test refresh interval configuration
- Test dashboard URL configuration
- Test connection test button
- Add e2e/appbar.spec.ts:
- Test badge displays cluster score
- Test badge navigation to overview
- Test badge color reflects score level
- Test badge updates across clusters
Test Results (v0.3.4):
- 5/16 tests passing (sidebar, namespaces, drawer functionality)
- 11/16 failing due to missing v0.3.4 features (settings, app bar badge)
- Tests will pass once plugin is updated to v0.3.4 in cluster
The E2E test suite now provides comprehensive coverage of:
- Plugin registration and loading
- Navigation and routing
- Settings configuration
- App bar integration
- Dark mode support
- Data fetching and rendering
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>
Replace all hardcoded colors with Headlamp's MUI CSS variables to ensure
proper theme support in both light and dark modes. This fixes the issue
where plugin UI elements had white backgrounds when the site switched to
dark mode.
Changes:
- PolarisSettings: Use theme variables for input, button, text colors
- ExemptionManager: Use theme variables for all buttons and UI elements
- DashboardView: Use theme variables for refresh button
- AppBarScoreBadge: Keep semantic colors (green/orange/red) for status
CSS Variables Used:
- --mui-palette-primary-main: Primary action color
- --mui-palette-primary-contrastText: Text on primary bg
- --mui-palette-background-paper: Card/paper backgrounds
- --mui-palette-text-primary: Primary text color
- --mui-palette-text-secondary: Secondary text color
- --mui-palette-divider: Border/divider colors
- --mui-palette-action-disabled: Disabled text color
- --mui-palette-action-disabledBackground: Disabled bg color
- --mui-palette-error-main: Error/danger actions
All tests passing (50/50), build successful.
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>
The plugin settings were not showing because the registration name was
incorrect. Changed from 'polaris' to 'headlamp-polaris-plugin' (matching
package.json name) and added displaySaveButton=true parameter.
According to Headlamp plugin API:
registerPluginSettings(name, component, displaySaveButton)
The name must match the plugin name from package.json.
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>
Replace all @mui/material and @mui/icons-material imports with standard
HTML elements and inline styles. This fixes the browser error:
"TypeError: undefined is not an object (evaluating 'q.createSvgIcon')"
The Headlamp plugin environment doesn't provide the full MUI library,
so plugins must use only Headlamp CommonComponents or standard HTML.
Changes:
- AppBarScoreBadge: Replace Chip and ShieldIcon with button and emoji
- DashboardView: Replace Button and RefreshIcon with button and emoji
- ExemptionManager: Replace all MUI form components with HTML equivalents
- PolarisSettings: Replace Button with HTML button
All tests passing (50/50), TypeScript compilation clean, build successful.
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>
- Update package.json version
- Update artifacthub-pkg.yml version and archive URL
- Add PROJECT_ASSESSMENT.md for tracking improvements
- Add deployment/ directory with plugin loading fix documentation
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>
- Update registerDetailsViewSection and registerAppBarAction calls to match new Headlamp plugin API (single argument)
- Add SimpleTable mock to DashboardView tests
- Fix all TypeScript compilation errors
- All 50 tests now passing
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>
Major new features:
- App bar score badge showing cluster Polaris score
- Inline audit results in Deployment/StatefulSet/DaemonSet/Job/CronJob detail views
- Exemption management UI with annotation PATCH support
- Top issues table on overview dashboard
- Audit time display and manual refresh button
- Connection test button in settings
- Check ID to human-readable name mapping
- Enhanced error messages with context
Technical improvements:
- Added triggerRefresh to PolarisDataContext for manual refresh
- Created checkMapping.ts for check metadata
- Created topIssues.ts for extracting common failures
- Enhanced DashboardView with top issues and refresh
- Enhanced PolarisSettings with connection test
- Created InlineAuditSection for details view integration
- Created AppBarScoreBadge for app bar integration
- Created ExemptionManager for annotation patches
UI enhancements:
- 1000px namespace detail panel
- Theme-aware styling throughout
- Improved formatting and layout
- Better status indicators
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>
- Fix namespace detail panel to follow system dark/light theme
- Use proper CSS custom properties for background and text colors
- Fix plugin settings registration (remove deprecated third parameter)
- Ensure close button and headers respect theme colors
- Version bump to 0.2.5
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>
- Add isFullUrl() helper to detect full vs proxy URLs
- Support both K8s proxy URLs and direct HTTP/HTTPS URLs
- Use fetch() for full URLs, ApiProxy for K8s proxy URLs
- Improve error messages with context-specific guidance
- Update settings with examples for both URL types
- Version bump to 0.2.3
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>
- Add getDashboardUrl() and setDashboardUrl() functions to polaris.ts
- Update PolarisSettings with dashboard URL input field
- Replace hardcoded POLARIS_DASHBOARD_PROXY with configurable getPolarisProxyUrl()
- Increase namespace detail panel width to 800px
- Remove unused 'Skipped' field from overview dashboard
- Version bump to 0.2.2
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>
* ci: fix checksum for manually created GitHub release v0.2.0
The GitHub release was created manually with gh CLI, so the checksum
in metadata didn't match. This updates the checksum to match the actual
tarball on GitHub.
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>
* refactor: migrate to GitHub as primary repository
- Move release workflow from Gitea Actions to GitHub Actions
- Update checksum to match manually created GitHub v0.2.0 release
- Simplify workflow by removing Gitea-specific steps
- Use softprops/action-gh-release for easier release management
This eliminates the complexity of Gitea mirroring and the issues
with GH_TOKEN authentication in Gitea Actions.
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>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Happy <yesreply@happy.engineering>
Gitea's push mirroring syncs git objects (branches, tags, commits)
but does not sync GitHub release objects or assets. Since ArtifactHub
needs to download the plugin tarball from the GitHub release URL,
the workflow must create releases on both Gitea and GitHub.
Changes:
- Added "Create GitHub release" step after Gitea release
- Uses GITHUB_TOKEN secret for GitHub API authentication
- Creates release and uploads tarball to GitHub
- Mirroring still handles git data sync
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>