# Changelog All notable changes to the Headlamp Polaris Plugin will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [1.0.0] - 2026-03-22 First stable release. The plugin API (routes, sidebar entries, settings schema, and app bar action) is now frozen — no breaking changes without a new major version. ### Security - Patched 8 of 9 npm audit vulnerabilities via `pnpm.overrides` (#92) ### Added - **Dual-approval CI check**: PRs now require approval from both CTO and QA before merging (#98, #76) - **ExemptionManager test suite**: Full coverage of annotation-based exemption flows, exemption creation, and inline feedback (#82) - **RBAC preflight check**: `deploy-e2e-headlamp.sh` now verifies runner RBAC before attempting E2E deploy (#80) ### Fixed - **E2E infrastructure overhaul**: Replaced Dockerfile.e2e with ConfigMap volume mount for plugin loading; tests now run in the `privilegedescalation-dev` namespace (#73, #89, #94) - **E2E token auth**: Workflow uses GitHub App token auth and handles the `/token` redirect correctly (#97) - **E2E HTTP readiness**: `deploy-e2e-headlamp.sh` waits for HTTP reachability after rollout before running tests (#104) - **E2E runner label**: Updated to `runners-privilegedescalation` for self-hosted ARC runners (#71) - **Direct devDependencies**: Added `typescript`, `eslint`, `prettier`, and `@headlamp-k8s/eslint-config` as explicit direct devDependencies to prevent phantom-dep failures in clean installs (#95, #102) ### Changed - **pnpm version pinned**: `packageManager` field in `package.json` pins the pnpm version used in CI (#103) - **GitHub Actions SHA pinning**: Renovate `pinDigests` enabled to SHA-pin all GitHub Actions (#105) - **ArtifactHub metadata polish**: Improved `install` instructions and `changes` section formatting (#82) ## [0.6.0] - 2026-03-04 ### Fixed - **ExemptionManager apiVersion bug**: `apps` and `batch` resources now correctly use `/apis/{group}/v1/` instead of the broken `/api/v1/` path - **Strict TypeScript**: Replaced `resource: any` in InlineAuditSection with proper `KubeResource` interface - **PolarisDataContext test mock**: Added missing `triggerRefresh` to mock, preventing silent `undefined` for `refresh` in context - **DashboardView test**: Fixed `SimpleTable` mock that used `Array` and didn't exercise column getters ### Changed - **Dark mode / theming**: Replaced all `var(--mui-palette-*)` CSS variables with `useTheme()` + `theme.palette.*` across all components (DashboardView, NamespacesListView, InlineAuditSection, ExemptionManager, PolarisSettings, AppBarScoreBadge) - **Namespace drawer**: Replaced custom `