Commit Graph

257 Commits

Author SHA1 Message Date
Hugh Hackman 07d411f993 feat: add upstream appVersion tracking to release workflow
Configures the reusable release workflow to fetch the latest release
tag from FairwindsOps/polaris and set appVersion in artifacthub-pkg.yml.
This keeps our Artifact Hub listing in sync with the upstream project.
2026-03-08 12:29:11 +00:00
hugh-hackman[bot] 4e66a4b7cc Merge PR #20
Enable manual triggering of the CI workflow via GitHub Actions UI.
The release workflow already supports workflow_dispatch.

Co-authored-by: hugh-hackman[bot] <hugh-hackman[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:16:32 +00:00
gandalf-the-greybeard[bot] e800adfc19 fix: restore badge emoji, fix aria-label, and correct service proxy URL (#19)
* fix: restore badge emoji, fix aria-label, and correct service proxy URL

Three root causes for E2E test failures since March 4:

1. Service proxy URL missing http: protocol prefix — Kubernetes requires
   the format http:service-name:port, not service-name:port. This caused
   all data fetches to fail, making data-dependent components render
   empty states instead of expected content.

2. AppBarScoreBadge aria-label "Polaris cluster score: X%" doesn't match
   the E2E test regex /Polaris: \d+%/. Simplified to "Polaris: X%".

3. Shield emoji was removed from badge in commit 514de78 but E2E tests
   still assert its presence.

Fixes PRI-20

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* style: format polaris.ts to pass prettier check

The service proxy URL fix in 61bf1fe exceeded the line length limit.
Run prettier to split the long line.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: gandalf-the-greybeard[bot] <gandalf-the-greybeard[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 22:13:28 -05:00
hugh-hackman[bot] b3349b71d5 ci: switch to org-level reusable workflows (#18)
Co-authored-by: hugh-hackman[bot] <hugh-hackman[bot]@users.noreply.github.com>
2026-03-07 22:12:47 -05:00
hugh-hackman[bot] ceb7f31257 ci: align E2E workflow Node version to 22 (#17)
The CI and release workflows use Node 22, but E2E was still on Node 20.
This aligns all workflows to the same Node version for consistency.

Co-authored-by: gandalf-the-greybeard[bot] <gandalf-the-greybeard[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 22:12:30 -05:00
gandalf-the-greybeard[bot] 8f69329764 Enhance Renovate configuration (#16)
- Target main branch explicitly
- Set weekly schedule (weekends)
- Limit concurrent PRs to 10
- Group minor/patch updates for npm and github-actions to reduce PR noise

Ref: PRI-16

Co-authored-by: gandalf-the-greybeard[bot] <gandalf-the-greybeard[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:01:20 +00:00
Chris Farhood 0882d663fd chore: add LICENSE and FUNDING.yml (#14)
* chore: add Apache-2.0 LICENSE file

* chore: add FUNDING.yml
2026-03-07 10:37:37 -05:00
DevContainer User 6c7064faf0 docs: add architecture decision records for service proxy, error boundary, settings, and exemptions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:49:56 +00:00
DevContainer User fb445954e0 Add artifacthub-headlamp agent skill
Adds Claude Code agent skill for ArtifactHub metadata and publishing,
sourced from headlamp-agent-skills repository.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:36:42 +00:00
github-actions[bot] 8bc6575ac3 release: v0.6.0 v0.6.0 2026-03-04 17:03:10 +00:00
DevContainer User 514de78ba7 fix: comprehensive code quality, theming, and test coverage improvements
- Fix ExemptionManager apiVersion bug (apps/batch resources used wrong API path)
- Replace resource: any with proper KubeResource interface (strict TypeScript)
- Replace all var(--mui-palette-*) CSS variables with useTheme() + theme.palette.*
- Replace custom drawer with MUI Drawer component (proper a11y and theming)
- Replace alert() calls with StatusLabel-based inline feedback
- Add PolarisErrorBoundary wrapping all registered plugin components
- Export getPolarisApiPath/isFullUrl from polaris.ts, deduplicate in PolarisSettings
- Fix PolarisDataContext test mock missing triggerRefresh
- Fix DashboardView test SimpleTable mock using any
- Remove dead NamespaceDetailView (replaced by drawer), unused MockPolarisProvider,
  unused getSeverityColor export
- Add tests for InlineAuditSection, AppBarScoreBadge, topIssues, checkMapping (32 new)
- Update CLAUDE.md, CHANGELOG.md, README.md for v0.6.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:59:50 +00:00
DevContainer User 6dd64e87ce Add headlamp-plugin-developer agent skill
Adds Claude Code agent skill for Headlamp plugin development,
sourced from headlamp-agent-skills repository.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:26:52 +00:00
github-actions[bot] 9b9052243f release: v0.5.2 v0.5.2 2026-03-04 02:44:40 +00:00
github-actions[bot] b772209b65 release: v0.5.1 v0.5.1 2026-03-04 02:35:57 +00:00
DevContainer User f2b0e4c66f fix: use softprops/action-gh-release instead of gh CLI
gh CLI is not installed on the self-hosted runner. Switch to
softprops/action-gh-release@v2 which was used before the
standardization broke it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:33:36 +00:00
github-actions[bot] 4f937efe26 release: v0.5.1 2026-03-04 02:24:10 +00:00
DevContainer User d23ccf3a84 fix: allow same version in npm version for release retries
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:22:17 +00:00
DevContainer User 13bdb9901a fix: match release workflow to working kube-vip template
Remove broken mv logic and use gh CLI for release creation,
matching the proven workflow from other headlamp plugins.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:17:40 +00:00
github-actions[bot] f575623b93 release: v0.5.1 2026-03-04 02:15:09 +00:00
DevContainer User a46d0e7519 fix: handle tarball already having correct name in release workflow
The headlamp-plugin package command already produces a tarball named
{pkg}-{version}.tar.gz, so the mv command fails when source and
destination are the same file.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:01:04 +00:00
DevContainer User 2da1fb3099 fix: move Node.js setup before npm version in release workflow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 01:09:24 +00:00
DevContainer User 28f432f2bf ci: standardize CI/CD workflows and add Renovate
- CI: single sequential job, local-ubuntu-latest runner, Node 22, workflow_call trigger, npm run commands
- Release: CI gate via reusable workflow, concurrency protection, dynamic package name, tarball validation, gh CLI
- Add renovate.json with recommended config

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:41:29 +00:00
DevContainer User 23148bfaff chore: standardize config, MCP, agents, and docs
- Add .eslintcache to .gitignore
- Fix .mcp.json typo (http:/ → http://), add github server, use localhost:8086 for playwright
- Add "github" to .claude/settings.local.json enabled servers
- Create .claude/agents/ with 3 meta-orchestration agents (organizer, coordinator, installer)
- Remove unused lodash from tsconfig.json types
- Remove inaccurate "MCP Servers" section from CLAUDE.md
- Fix CLAUDE.md filename casing (claude.md → CLAUDE.md)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 21:30:36 +00:00
Chris Farhood ed38df7215 commit mcp config 2026-02-21 12:33:11 +00:00
Chris Farhood 40a4b8accc Update MCP server configuration in .mcp.json
Removed unnecessary headers from MCP server configuration.
2026-02-20 10:35:52 -05:00
Chris Farhood 86f959486a Change MCP server URL to internal Kubernetes address 2026-02-20 10:34:11 -05:00
Chris Farhood c621bd1384 Add MCP server configuration for animaniacs 2026-02-20 10:29:41 -05:00
Chris Farhood e574ea66e2 Update .gitignore 2026-02-20 10:28:15 -05:00
Chris Farhood 49bcbe24af ci: use Headlamp service DNS name for E2E tests
Use the Kubernetes service DNS name (headlamp.kube-system.svc.cluster.local)
instead of ClusterIP for reliable in-cluster DNS resolution.

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-13 13:17:42 -05:00
Chris Farhood fdad1a6da2 ci: use Headlamp service IP for E2E tests
Use the Headlamp ClusterIP (10.43.61.138) directly instead of the ingress
hostname to avoid DNS resolution and ingress routing issues on local runners.

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-13 13:13:52 -05:00
Chris Farhood 7bf00593ef ci: use local-ubuntu-latest runner for E2E tests
Use the local self-hosted runner label for internal network access
to headlamp.animaniacs.farh.net.

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-13 11:50:40 -05:00
Chris Farhood 1ca90a7570 Revert "ci: switch E2E workflow to ubuntu-latest runner"
This reverts commit dbc69fb. The Headlamp instance at headlamp.animaniacs.farh.net
is not publicly accessible, so E2E tests require the self-hosted k3s-animaniacs
runner with network access to the internal domain.

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-13 10:55:22 -05:00
Chris Farhood dbc69fb41f ci: switch E2E workflow to ubuntu-latest runner
The k3s-animaniacs self-hosted runner is not available. Use GitHub-hosted
ubuntu-latest runner instead to enable automated E2E testing.

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-13 10:53:19 -05:00
Chris Farhood 24033ca977 docs: remove incorrect watchPlugins: false references
Remove all references to the incorrect `config.watchPlugins: false`
requirement that was believed necessary for Headlamp v0.39.0+.

Investigation revealed that plugins work correctly with the default
`watchPlugins: true` setting. The earlier documentation was based on
a misunderstanding of the plugin loading mechanism.

Changes:
- Remove watchPlugins: false from all YAML configuration examples
- Remove warning sections about watchPlugins requirement
- Update troubleshooting guides to focus on actual issues
- Simplify installation instructions by removing unnecessary config

Files updated:
- README.md (main installation docs and troubleshooting table)
- docs/DEPLOYMENT.md
- docs/TROUBLESHOOTING.md
- docs/getting-started/* (quick-start, installation, prerequisites)
- docs/deployment/* (helm, production)
- docs/troubleshooting/* (common-issues, README)
- Multiple other doc files formatted by prettier

This cleanup ensures ArtifactHub and GitHub documentation show
correct, simplified installation instructions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-13 09:54:15 -05:00
github-actions[bot] 0faa50cd9d chore: release v0.5.0 v0.5.0 2026-02-13 14:32:56 +00:00
Chris Farhood de5feb68a3 feat: add maximize/minimize buttons to namespace drawer
Add toolbar with maximize/minimize and close buttons to namespace detail
drawer, matching Headlamp's native drawer behavior.

Changes:
- Add maximize/minimize button (⊡/⊟) to toggle drawer width
- Maximized width: calc(100vw - 240px) to avoid covering sidebar
- Normal width: 1000px
- Add smooth transition animation (0.3s)
- Add hover effects using MUI theme variables
- Improve close button styling with hover state
- Add accessibility labels and tooltips

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-13 09:32:03 -05:00
Chris Farhood 42df8dd7cc docs: add comprehensive CONTEXT.md reverse prompt
Add CONTEXT.md as a comprehensive reverse prompt for AI assistants working
on this project. Consolidates knowledge from CLAUDE.md and MEMORY.md into
a single, structured reference document.

Includes:
- Project overview and architecture
- Technology constraints and component patterns
- Development workflow and testing strategy
- CI/CD and release process
- Known issues and workarounds (corrects outdated watchPlugins info)
- Deployment patterns and RBAC requirements
- Quick reference commands and diagnosis guide
- Historical context for key decisions

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-12 19:44:48 -05:00
github-actions[bot] 3796d57d12 chore: release v0.4.1 v0.4.1 2026-02-12 20:44:31 +00:00
Chris Farhood 88541bd328 chore: remove Gitea configuration and references
Removed all Gitea-related files and references:
- Deleted .gitea/workflows directory (ai-review, ci, e2e, release)
- Removed gitea MCP server from .mcp.json
- Updated CLAUDE.md to list GitHub instead of Gitea
- Updated CHANGELOG.md to remove Gitea migration note

All CI/CD now runs exclusively through GitHub 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>
2026-02-12 15:25:46 -05:00
Chris Farhood e884894840 ci: consolidate release workflow into single step
Merged prepare-release and release workflows into a single workflow
that handles everything in one job. This eliminates the need for
separate tokens or manual intervention.

Single workflow now:
- Validates version format
- Updates package.json and artifacthub-pkg.yml
- Builds and packages plugin
- Computes checksum
- Updates metadata with real checksum
- Commits all changes to main
- Creates and pushes tag
- Creates GitHub release with tarball

No more tag push triggers, no separate tokens needed.
Everything runs in one workflow_dispatch job.

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 15:20:17 -05:00
Chris Farhood 189ae50024 Revert "ci: use GitHub App token to enable automatic workflow triggering"
This reverts commit e62fba9cc1.
2026-02-12 15:19:22 -05:00
Chris Farhood e62fba9cc1 ci: use GitHub App token to enable automatic workflow triggering
The prepare-release workflow now uses GH_APP_TOKEN instead of
GITHUB_TOKEN to push commits and tags. This allows the tag push
to automatically trigger the release workflow without manual
intervention.

GITHUB_TOKEN cannot trigger other workflows due to GitHub's
security policy to prevent infinite workflow loops.

Added documentation in .github/GH_APP_TOKEN.md explaining the
token setup and requirements.

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 15:08:53 -05:00
github-actions[bot] 062ac72340 ci: update checksum for v0.4.0 2026-02-12 20:03:53 +00:00
github-actions[bot] 515758c829 chore: bump version to 0.4.0 v0.4.0 2026-02-12 20:01:15 +00:00
Chris Farhood 40c4add01b fix: add contents write permission to prepare-release workflow 2026-02-12 15:00:55 -05:00
Chris Farhood cdc1ce0303 ci: overhaul release workflow to eliminate manual steps and tag manipulation
Replace complex draft/publish release workflow with clean two-workflow approach:

1. prepare-release.yaml (manual workflow_dispatch)
   - Validates version format
   - Updates package.json and artifacthub-pkg.yml
   - Commits to main
   - Creates and pushes tag
   - Triggers release workflow automatically

2. release.yaml (automatic on tag push)
   - Single build-and-release job
   - Creates GitHub release with tarball in one step (no draft/publish)
   - Separate update-metadata job runs after release
   - Updates checksum on main branch

Benefits:
- No manual tarball upload required
- No tag force-push anti-pattern
- No draft/publish asset attachment failures
- Clear separation of concerns
- Self-documenting workflow

Eliminates:
- Guard logic for infinite loop prevention
- Post-release tag manipulation
- Manual intervention after workflow "succeeds"
- Checksum chicken-and-egg problem

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 13:44:22 -05:00
Chris Farhood dd5a76e348 ci: update workflows to use local-ubuntu-latest runner
- Changed ci.yaml from ubuntu-latest to local-ubuntu-latest
- Changed release.yaml from ubuntu-latest to local-ubuntu-latest
- e2e.yaml already using k3s-animaniacs (correct)

This ensures all CI jobs run on on-prem runners instead of GitHub-hosted runners.

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 12:25:04 -05:00
Chris Farhood 3b6d7e6b6c chore: bump version to 0.3.12 v0.3.12 2026-02-12 12:24:13 -05:00
Chris Farhood 0e5ff9b7b7 fix: add explicit GET method to API requests and make refresh interval reactive
- Add explicit method: 'GET' to ApiProxy.request() calls in polaris.ts and PolarisSettings.tsx
  for compatibility with Headlamp SDK
- Make refresh interval reactive by polling localStorage every second in PolarisDataContext
  so settings changes take effect immediately without page reload

Fixes connection test button and data refresh issues.

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 12:23:33 -05:00
Chris Farhood 8fab7828f4 ci: update checksum for manually uploaded v0.3.11 tarball 2026-02-12 12:02:59 -05:00