Commit Graph

49 Commits

Author SHA1 Message Date
Chris Farhood d923e655fe fix: correct GitHub API URLs in release workflow
Two GitHub API URLs still had the old repo name (polaris-headlamp-plugin
instead of headlamp-polaris-plugin), causing the GitHub release step to
target the wrong repository.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 00:10:02 -05:00
gitea-actions[bot] a1ef628fb5 ci: update artifact hub metadata for v0.0.7 2026-02-07 04:58:47 +00:00
Chris Farhood b8129a0dbb chore: bump version to 0.0.7
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:57:44 -05:00
Chris Farhood 7facb9be10 Merge pull request 'feat: add per-namespace detail pages with sidebar sub-items' (#12) from feature/polaris-detail-view into main
Reviewed-on: farhoodliquor/headlamp-polaris-plugin#12
2026-02-07 04:42:22 +00:00
Chris Farhood 1b86407d8b refactor: precompute resource counts and add return type annotation
Avoid recalculating per-resource counts 3x per table row by precomputing
them into a Map. Add explicit ResultCounts return type to resourceCounts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:38:10 -05:00
Chris Farhood 40df014b6b style: fix import sorting and prettier formatting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:30:22 -05:00
Chris Farhood b217a8119e feat: add per-namespace detail pages with dynamic sidebar sub-items
Add drill-down namespace views under the Polaris sidebar entry. Each
namespace gets a sidebar sub-item registered dynamically from audit data,
linking to /polaris/:namespace with a score summary and per-resource table.

Introduces a shared PolarisDataContext so the sidebar registrar and view
components share a single data fetch. Also updates the Artifact Hub
repository ID.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:09:40 -05:00
Chris Farhood 818f4bc9cb chore: update repo URLs after rename to headlamp-polaris-plugin
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 22:21:05 -05:00
gitea-actions[bot] a6a1280e4f ci: update artifact hub metadata for v0.0.6 v0.0.6 2026-02-07 03:03:21 +00:00
Chris Farhood 7351d88997 chore: bump version to 0.0.6
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 22:02:05 -05:00
Chris Farhood 071aab4f7e Merge pull request 'fix: use native Headlamp components for consistent styling' (#11) from fix/native-headlamp-styling into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#11
2026-02-07 03:01:18 +00:00
Chris Farhood 40544429f4 fix: remove tarball from repo and gitignore *.tar.gz
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 22:00:15 -05:00
Chris Farhood 1f110a2846 style: fix prettier formatting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:59:16 -05:00
Chris Farhood 672caec903 ci: add build step to CI workflow
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:56:13 -05:00
Chris Farhood b10d09fd41 feat: move refresh interval to plugin settings
Register plugin settings via registerPluginSettings so the refresh
interval is configurable from Headlamp's plugin config page instead
of being embedded in the main view header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:55:13 -05:00
Chris Farhood 8b319c0c8a fix: use native Headlamp components for consistent styling
Replace inline-styled divs and native HTML elements with Headlamp's
built-in NameValueTable, StatusLabel, and HeaderLabel components so the
plugin matches the look and feel of native pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:49:17 -05:00
Chris Farhood 57250a995d ci: update artifact hub checksum for v0.0.5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v0.0.5
2026-02-06 21:22:42 -05:00
Chris Farhood 702be12fc8 chore: bump version to 0.0.5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:14:00 -05:00
Chris Farhood 95aaaa96bd Merge pull request 'feat: query Polaris dashboard API instead of ConfigMap' (#10) from feat/polaris-api-datasource into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#10
2026-02-07 02:11:22 +00:00
Chris Farhood b891b3a624 docs: update CLAUDE.md to reflect API proxy data source
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 21:10:00 -05:00
Chris Farhood 7997eb29fa feat: query Polaris dashboard API instead of ConfigMap
The plugin now fetches audit data from the Polaris dashboard service
via the Kubernetes service proxy instead of reading from a ConfigMap.
This works with the standard Polaris dashboard deployment without
requiring additional configuration.

- Replace ConfigMap.useGet with ApiProxy.request to /results.json
- Compute score from result counts (pass/total) since the API
  response doesn't include a pre-computed score
- Update error messages for service proxy context
- Update CLAUDE.md to reflect new data source

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 20:50:07 -05:00
Chris Farhood 9885dc44c0 Merge pull request 'chore: add AI code review workflow for PRs' (#9) from chore/add-ai-review into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#9
2026-02-06 22:21:35 +00:00
Chris Farhood 72998cfbca fix: add container image for ai-review workflow
The default gitea/act_runner image has no Node.js, which actions/checkout@v4
requires. Use catthehacker/ubuntu:act-latest like the kubernetes repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:18:07 -05:00
Chris Farhood 6f7217f400 chore: add AI code review workflow for PRs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:15:50 -05:00
gitea-actions[bot] 8b8c447983 ci: update artifact hub metadata for v0.0.4 v0.0.4 2026-02-06 21:57:57 +00:00
Chris Farhood 7b794f540f Merge pull request 'chore: bump version to 0.0.4' (#8) from release/v0.0.4 into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#8
2026-02-06 21:55:13 +00:00
Chris Farhood 0f00fd2f29 chore: bump version to 0.0.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 16:54:24 -05:00
Chris Farhood f95a74c6ae Merge pull request 'fix: include package.json in Docker plugin directory' (#7) from fix/dockerfile-package-json into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#7
2026-02-06 21:53:57 +00:00
Chris Farhood 60fc377442 fix: include package.json in Docker plugin directory
Headlamp's plugin discovery requires both main.js and package.json in
the plugin directory. The Dockerfile only copied dist/ (main.js),
causing the plugin to not be discovered at runtime.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 16:43:56 -05:00
Chris Farhood dd3e877580 Merge pull request 'chore: add linting, formatting, and type-checking' (#6) from chore/add-linting-formatting into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#6
2026-02-06 21:39:37 +00:00
Chris Farhood da1ef7e0c3 chore: add linting, formatting, and type-checking
Add ESLint, Prettier, and TypeScript config files extending the shared
Headlamp plugin configs. Add npm scripts for lint/format. Auto-fix
existing source files. Add CI workflow for PRs and main pushes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 16:35:42 -05:00
gitea-actions[bot] 39878f63cc ci: update artifact hub metadata for v0.0.3 v0.0.3 2026-02-06 21:01:11 +00:00
Chris Farhood 374e2f5b57 Merge pull request 'chore: bump version to 0.0.3' (#5) from release/v0.0.3 into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#5
2026-02-06 20:58:43 +00:00
Chris Farhood 581219ceae chore: bump version to 0.0.3
AH doesn't re-process existing versions when a tag is force-moved,
so v0.0.2 is permanently stuck with a stale checksum. Releasing v0.0.3
so AH indexes it as a new version with the correct checksum from the
aligned tag.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 15:57:41 -05:00
gitea-actions[bot] 1b905d2bc6 ci: update artifact hub metadata for v0.0.2 v0.0.2 2026-02-06 19:33:13 +00:00
Chris Farhood 43b284a0f4 Merge pull request 'fix: align tag with metadata after release' (#4) from fix/release-tag-alignment into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#4
2026-02-06 19:29:58 +00:00
Chris Farhood f54795f34f fix: align tag with metadata after release to solve AH checksum mismatch
The CI builds a non-reproducible tarball after the tag is created, then
updates artifacthub-pkg.yml on main with the correct checksum. But
Artifact Hub reads from the tag ref, not main, so it sees the stale
checksum and Headlamp rejects the plugin with "Checksum mismatch".

Changes:
- Add guard step: if the GitHub release tarball checksum already matches
  the metadata in the current commit, skip the entire build (prevents
  infinite retrigger loop)
- After updating metadata on main, force-move the tag to that commit
  so AH reads the correct checksum
- Push main + tag directly to GitHub to avoid mirror sync delay
- Replace akkuman/gitea-release-action with curl-based approach so all
  steps use the same shell guard pattern

Release flow: tag push -> build -> publish releases -> update metadata
on main -> force-move tag -> (retriggered run hits guard -> exits)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 14:20:03 -05:00
gitea-actions[bot] be75ff55d4 ci: update artifact hub metadata for v0.0.2 2026-02-06 19:09:59 +00:00
gitea-actions[bot] 25a093c131 ci: update artifact hub metadata for v0.0.2 2026-02-06 15:26:58 +00:00
Chris Farhood ed9afd02d6 Merge pull request 'fix: remove GitHub Actions workflow to eliminate release race' (#3) from fix/remove-github-ci-race into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#3
2026-02-06 14:46:27 +00:00
Chris Farhood 2dabb1c731 fix: remove GitHub Actions workflow and handle existing release assets
The GitHub Actions fallback workflow raced with the Gitea CI — it ran
first and created the GitHub release with its own tarball (different
checksum), causing the Gitea CI's upload to fail and leaving a
checksum mismatch on Artifact Hub.

- Remove .github/workflows/release.yml entirely (Gitea CI handles both
  Gitea and GitHub releases)
- Fix the Gitea CI's GitHub release step to delete existing assets
  before uploading, so re-runs and race conditions are handled gracefully

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 09:02:19 -05:00
gitea-actions[bot] 8941f9ac16 ci: update artifact hub metadata for v0.0.2 2026-02-06 13:19:36 +00:00
Chris Farhood 4810893440 Merge pull request 'fix: use git push instead of Gitea API for checksum update' (#2) from fix/ci-use-git-push into main
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#2
2026-02-06 13:18:31 +00:00
Chris Farhood e37904a377 fix: use git push instead of Gitea API for checksum update
The Gitea Contents API returned HTTP error (curl exit 22) when the CI
tried to update artifacthub-pkg.yml. Switch to using git checkout/commit/push
which reuses the auth already configured by actions/checkout. Also added
fetch-depth: 0 so the main branch is available for checkout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 08:16:51 -05:00
claude e16776d5f1 fix: correct archive checksum and automate CI updates (#1)
## Summary
- Fix the v0.0.1 archive checksum in `artifacthub-pkg.yml` to match the actual GitHub release tarball (was causing "Checksum mismatch" on Headlamp plugin install)
- Gitea CI now computes the checksum after packaging and updates `artifacthub-pkg.yml` on `main` via the Gitea API, then uploads the **same tarball** to GitHub releases (requires `GH_PAT` secret) so both releases serve identical artifacts
- GitHub CI becomes a fallback — skips entirely if the Gitea CI already created the release, preventing a second build from producing a mismatched tarball

## Setup required
Add a `GH_PAT` secret to the Gitea repo containing a GitHub personal access token with `repo` scope. Without it, the GitHub release step gracefully skips and the GitHub Actions fallback handles it.

## Test plan
- [ ] Verify `GH_PAT` secret is set in Gitea repo settings
- [ ] Tag and push a new release (`v0.0.2`)
- [ ] Confirm Gitea CI updates `artifacthub-pkg.yml` checksum on `main`
- [ ] Confirm GitHub release is created by Gitea CI with matching tarball
- [ ] Confirm GitHub Actions fallback skips (release already exists)
- [ ] Verify Headlamp plugin installs without checksum mismatch

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Chris Farhood <chris@farhood.org>
Reviewed-on: farhoodliquor/polaris-headlamp-plugin#1
Co-authored-by: claude <no-reply.claude@farh.net>
Co-committed-by: claude <no-reply.claude@farh.net>
2026-02-06 13:13:44 +00:00
Chris Farhood 2ad61e90cc feat: add Artifact Hub metadata and GitHub Actions release workflow
Artifact Hub requires a GitHub-hosted repo for Headlamp plugins.
Since Gitea push-mirrors git objects but not releases, a GitHub
Actions workflow builds and publishes GitHub Releases with the
tarball that Artifact Hub needs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 17:58:00 -05:00
Chris Farhood dd330f1c14 docs: add comprehensive README with setup, deploy, and release instructions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 16:45:33 -05:00
Chris Farhood e07e50c904 feat: add Dockerfile, Gitea Actions CI, and Artifact Hub metadata
Multi-stage Dockerfile produces a lightweight image with the compiled
plugin at /plugins/. Gitea Actions workflow triggers on tag push (v*),
builds the plugin, pushes to the Gitea container registry, and creates
a release with the tarball attached.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 15:44:15 -05:00
Chris Farhood 036cb66897 feat: initial Polaris Headlamp plugin (v0.0.1)
Sidebar page at /polaris that reads Fairwinds Polaris audit results
from ConfigMap/polaris-dashboard in the polaris namespace. Displays
cluster score, check summary (pass/warning/danger counts), and
cluster info. Caches results with user-configurable refresh interval.
Handles 403, 404, and malformed JSON error states.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 14:47:25 -05:00