245 Commits

Author SHA1 Message Date
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
github-actions[bot] 1733eab21b ci: update artifact hub metadata for v0.3.11 2026-02-12 17:00:09 +00:00
Chris Farhood 44fe9ab749 Fix/update org references (#13)
* chore: bump version to 0.3.11

* fix: update owner references from cpfarhood to privilegedescalation

- Updated artifacthub-repo.yml owner
- Updated artifacthub-pkg.yml maintainer
- Updated package.json author

Part of organization migration from cpfarhood to privilegedescalation.
v0.3.11
2026-02-12 11:57:10 -05:00
Chris Farhood 0b081246b0 docs: remove marketing fluff and emojis
- Remove navigation emojis from README and docs/README
- Remove "Made with ❤️ for the Kubernetes community" footer
- Remove checkmark/celebration emojis from quick-start guide
- Remove "(This!)" annotation from architecture diagrams
- Replace emoji references with plain text in features documentation
- Remove GOOD/BAD emojis from production deployment guide
- Simplify congratulations message

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 11:19:05 -05:00
Chris Farhood 765f081867 docs: standardize license to Apache-2.0 and update version references
- Change license from MIT to Apache-2.0 across all documentation to match package.json
- Update all version references from v0.3.4/v0.3.5 to v0.3.10
- Update tarball filenames from headlamp-polaris-plugin-*.tar.gz to polaris-0.3.10.tar.gz
- Update README.md license badge
- Update artifacthub-pkg.yml license field

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 11:13:27 -05:00
Chris Farhood d4fa1674dc chore: update repository references to privilegedescalation org
Repository transferred from cpfarhood to privilegedescalation organization.

Updated all references in:
- Configuration files (package.json, artifacthub-pkg.yml)
- Documentation (README, CONTRIBUTING, SECURITY, docs/)
- Workflow files

GitHub Actions workflows will continue to work as they use
${{ github.repository }} which auto-updates.

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 10:46:44 -05:00
github-actions[bot] 9655514066 ci: update artifact hub metadata for v0.3.10 v0.3.10 2026-02-12 15:33:30 +00:00
Chris Farhood ece87a9824 chore: bump version to 0.3.10
Fixes:
- Drawer transparency using --mui-palette-background-default
- Plugin settings page blank due to name mismatch

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 10:32:51 -05:00
Chris Farhood 5adcca2eb9 fix: plugin settings name must match package.json
Changed registerPluginSettings from 'headlamp-polaris-plugin' to 'polaris'
to match package.json name field. Headlamp requires exact match for
settings registration, otherwise settings page renders blank.

Root cause: When package.json was renamed to 'polaris' in PR #9,
the settings registration was not updated.

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 10:32:20 -05:00
github-actions[bot] 6965103113 ci: update artifact hub metadata for v0.3.9 v0.3.9 2026-02-12 14:37:56 +00:00
Chris Farhood 0659afcf6e chore: bump version to 0.3.9
Fixes drawer transparency by using --mui-palette-background-default
which is fully opaque and follows Headlamp's theme system.

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 09:37:07 -05:00
Chris Farhood 808f60ad88 fix: use Headlamp theme system for drawer background
Replace hardcoded colors with --mui-palette-background-default which:
- Is fully opaque (fixes transparency issue)
- Automatically adapts to Headlamp's light/dark theme
- Matches pattern used throughout codebase
- Eliminates need for media query

Previous approach used hardcoded #ffffff/#1e1e1e which didn't
follow Headlamp's theme settings or custom themes.

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 09:30:47 -05:00
Chris Farhood ade6bf93a7 fix: use explicit opaque colors for drawer background
The previous approach using 'opacity: 1' and CSS variable
'var(--mui-palette-background-paper)' did not work because:
- CSS variable can resolve to semi-transparent rgba() values
- opacity property does not affect background color alpha channel
- Semi-transparent background allowed backdrop to bleed through

Solution:
- Use explicit opaque hex colors (#ffffff light, #1e1e1e dark)
- CSS media query for dark mode: @media (prefers-color-scheme: dark)
- Unique class name per namespace to avoid conflicts
- Maintains proper text color with CSS variable fallbacks

Root cause identified by debugger agent: opacity multiplies element
rendering but does NOT fix backgroundColor alpha transparency.

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 09:28:24 -05:00