Compare commits

...

40 Commits

Author SHA1 Message Date
github-actions[bot] 377aaf3324 release: v1.0.2 2026-04-15 04:00:13 +00:00
privilegedescalation-ceo[bot] d096a6c70c fix: correct artifacthub-pkg.yml checksum on main for v1.0.1
Co-authored-by: privilegedescalation-ceo[bot] <269721483+privilegedescalation-ceo[bot]@users.noreply.github.com>
2026-04-15 03:51:02 +00:00
privilegedescalation-engineer[bot] 4e5d1a2157 fix: pass pr_number to dual-approval-check workflow (#31)
Companion PR to privilegedescalation/.github#81

Co-authored-by: Hugh Hackman <hugh@paperclip.ing>
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-04-15 03:29:41 +00:00
privilegedescalation-ceo[bot] 1e82ef596a chore: add repository_dispatch trigger for automated release 2026-04-15 02:54:36 +00:00
privilegedescalation-ceo[bot] 24c166dd42 Merge pull request #34 from privilegedescalation/release/v1.0.1
release: v1.0.1 — fix ArtifactHub checksum
2026-04-15 02:21:20 +00:00
Gandalf the Greybeard 422f8e2e22 fix: update archive-url from v1.0.0 to v1.0.1 2026-04-14 23:33:25 +00:00
Pawla Abdul 7dfcfd5e46 chore: remove packageManager field to fix release workflow 2026-04-13 11:37:03 +00:00
Pawla Abdul 5a004c7066 release: v1.0.1 — fix ArtifactHub checksum 2026-04-13 11:09:03 +00:00
privilegedescalation-ceo[bot] 710eeb877e Merge pull request #29 from privilegedescalation/fix/add-package-manager-field
fix: add packageManager field to package.json
2026-03-24 22:46:03 +00:00
privilegedescalation-engineer[bot] f443c7f231 release: v1.0.0 (#28)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-24 22:31:35 +00:00
Gandalf the Greybeard d97d8f0892 fix: add packageManager field to package.json
pnpm/action-setup@v5 requires either a version key in the action config
or a packageManager field in package.json. Add the field to unblock the
release workflow.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 22:12:38 +00:00
privilegedescalation-ceo[bot] 2385d8b231 Merge pull request #24 from privilegedescalation/release/v1.0.0
release: rook v1.0.0
2026-03-24 22:01:26 +00:00
Gandalf the Greybeard eea39267ab fix(ci): add missing eslint/prettier/typescript devDeps, fix tsconfig types
Add eslint@^8.57.0, @headlamp-k8s/eslint-config@^0.6.0, prettier@^2.8.8,
typescript@~5.6.2 as explicit devDependencies. pnpm strict hoisting does
not expose transitive bins, so these must be direct deps.

Remove vite/client and vite-plugin-svgr/client from tsconfig types; these
are transitive deps pnpm does not hoist and polaris plugin omits them.
2026-03-24 21:48:51 +00:00
Gandalf the Greybeard c84c05e961 release: prepare v1.0.0
- Bump version from 0.2.8 to 1.0.0 in package.json
- Add missing devDependencies (vitest, @testing-library/react, @testing-library/jest-dom, @testing-library/user-event, jsdom, react, react-dom, @types/react, @types/react-dom, react-router-dom, @mui/material, notistack) so test suite runs in CI
- Add define block for process.env.NODE_ENV in vitest.config.mts for jsdom/React 18 compatibility
- Switch from package-lock.json to pnpm-lock.yaml (pnpm as canonical package manager)
- Update artifacthub-pkg.yml to v1.0.0 with updated archive-url and changes block
- Update CHANGELOG.md with [1.0.0] entry and updated comparison links

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 21:29:13 +00:00
privilegedescalation-ceo[bot] 5758845514 Merge pull request #23 from privilegedescalation/feat/renovate-extend-org-config
feat: extend Renovate config from org-level preset
2026-03-24 18:46:04 +00:00
Hugh Hackman 763d993eef feat: extend Renovate config from org-level preset
Replaces the duplicated Renovate config with a simple extend from the
org-level preset (privilegedescalation/.github:renovate-config). All
rules (schedule, pinDigests, npm/github-actions minor+patch+major groups)
are now inherited from the org config, which was updated in PR #66 to add
major-version update rules for GitHub Actions.

This eliminates config drift between repos and reduces maintenance toil —
future rule changes only need to be made in one place.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 16:16:38 +00:00
privilegedescalation-ceo[bot] 9b6f8f0cbf Merge pull request #22 from privilegedescalation/chore/renovate-pin-digests
chore(renovate): add pinDigests for GitHub Actions SHA pinning
2026-03-22 11:06:41 +00:00
privilegedescalation-engineer[bot] 2dda82a6e4 chore(renovate): add pinDigests to ensure SHA pinning for GitHub Actions
The org renovate-config.json (PR #63) adds pinDigests: true at the org level,
but this repo extends config:recommended directly. Adding pinDigests: true here
ensures GitHub Actions are pinned to full commit SHAs regardless of whether the
org config is extended.

Related: privilegedescalation/.github#63, PRI-757
2026-03-22 07:16:09 +00:00
privilegedescalation-ceo[bot] 55049a14aa Merge pull request #21 from privilegedescalation/feat/dual-approval-status-check
ci: add dual-approval status check (CTO + QA)
2026-03-22 04:12:34 +00:00
privilegedescalation-engineer[bot] b9a351f53d ci: add dual-approval caller workflow
Calls the shared privilegedescalation/.github dual-approval-check
reusable workflow to enforce CTO + QA approval as a GitHub status check.

Once privilegedescalation/.github#47 is merged, this status check can
be added to required_status_checks in branch protection.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 23:55:52 +00:00
privilegedescalation-paperclip[bot] eb741ea2f4 ci: pass GitHub App token secrets to release workflow (#20)
The shared release workflow now requires RELEASE_APP_ID and
RELEASE_APP_PRIVATE_KEY secrets for PR creation, since the org
blocks GITHUB_TOKEN from creating PRs.

Depends on privilegedescalation/.github#31

Co-authored-by: privilegedescalation-paperclip[bot] <268365651+privilegedescalation-paperclip[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:24:40 +00:00
privilegedescalation-paperclip[bot] 96366578d9 Merge pull request #19 from privilegedescalation/release/v0.2.8
release: v0.2.8
2026-03-19 21:50:53 +00:00
github-actions[bot] 6836f75440 release: v0.2.8 2026-03-19 21:40:05 +00:00
privilegedescalation-paperclip[bot] 8a154a305a fix: add pull-requests write permission to release workflow (#18)
The reusable release workflow declares pull-requests:write but the
caller didn't grant it, causing startup_failure on GitHub Actions.

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-19 21:33:12 +00:00
null-pointer-nancy[bot] 4aca284eca Merge pull request #17 from privilegedescalation/fix/dep-security-overrides-tar-undici
fix: add npm overrides for tar and undici security advisories
2026-03-18 23:14:07 +00:00
Hugh Hackman e7f6feea9e fix: add npm overrides for tar and undici security advisories
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 22:55:46 +00:00
dependabot[bot] f1d45f85b2 chore(deps-dev): bump rollup from 4.57.1 to 4.59.0 (#15)
Bumps [rollup](https://github.com/rollup/rollup) from 4.57.1 to 4.59.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.57.1...v4.59.0)

---
updated-dependencies:
- dependency-name: rollup
  dependency-version: 4.59.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-18 02:42:45 +00:00
hugh-hackman[bot] 7dc68efb6d Merge pull request #13 from privilegedescalation/dependabot/npm_and_yarn/multi-770cfcd984
chore(deps): bump minimatch
2026-03-18 02:33:02 +00:00
hugh-hackman[bot] 44bc14302e Merge pull request #12 from privilegedescalation/dependabot/npm_and_yarn/tar-7.5.11
chore(deps-dev): bump tar from 7.5.9 to 7.5.11
2026-03-18 02:33:00 +00:00
hugh-hackman[bot] 6d13454bea Merge pull request #14 from privilegedescalation/dependabot/npm_and_yarn/undici-7.24.4
chore(deps-dev): bump undici from 7.22.0 to 7.24.4
2026-03-18 02:32:13 +00:00
hugh-hackman[bot] 474ff1a8ba Merge pull request #11 from privilegedescalation/dependabot/npm_and_yarn/multi-0d13b2d87f
chore(deps): bump serialize-javascript and terser-webpack-plugin
2026-03-18 02:32:06 +00:00
dependabot[bot] 673274dc8c chore(deps-dev): bump undici from 7.22.0 to 7.24.4
Bumps [undici](https://github.com/nodejs/undici) from 7.22.0 to 7.24.4.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.22.0...v7.24.4)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.24.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 02:07:14 +00:00
dependabot[bot] 21313438bf chore(deps): bump minimatch
Bumps  and [minimatch](https://github.com/isaacs/minimatch). These dependencies needed to be updated together.

Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `minimatch` from 9.0.5 to 9.0.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
- dependency-name: minimatch
  dependency-version: 9.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 02:07:07 +00:00
dependabot[bot] 510bb7d4a2 chore(deps-dev): bump tar from 7.5.9 to 7.5.11
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.9 to 7.5.11.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.9...v7.5.11)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.11
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 02:07:04 +00:00
dependabot[bot] 1542677226 chore(deps): bump serialize-javascript and terser-webpack-plugin
Removes [serialize-javascript](https://github.com/yahoo/serialize-javascript). It's no longer used after updating ancestor dependency [terser-webpack-plugin](https://github.com/webpack/terser-webpack-plugin). These dependencies need to be updated together.


Removes `serialize-javascript`

Updates `terser-webpack-plugin` from 5.3.16 to 5.4.0
- [Release notes](https://github.com/webpack/terser-webpack-plugin/releases)
- [Changelog](https://github.com/webpack/terser-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/terser-webpack-plugin/compare/v5.3.16...v5.4.0)

---
updated-dependencies:
- dependency-name: serialize-javascript
  dependency-version: 
  dependency-type: indirect
- dependency-name: terser-webpack-plugin
  dependency-version: 5.4.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 02:07:04 +00:00
null-pointer-nancy[bot] 184d4c20e1 Merge pull request #10 from privilegedescalation/docs/remove-manual-install
docs: remove manual install sections from README
2026-03-17 12:19:19 +00:00
Gandalf the Greybeard 441110af51 docs: remove manual install sections from README
ArtifactHub plugin installer is the only supported installation method.
Remove manual tarball, sidecar, and build-from-source install options
to align documentation with company policy.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 12:15:43 +00:00
null-pointer-nancy[bot] 983e1f2bc1 ci: retrigger after shared workflow fix (#9)
CI retrigger after shared workflow fix (.github PR#14)
2026-03-15 17:54:38 +00:00
Chris Farhood f70e47dc7d Merge pull request #8 from privilegedescalation/policy/artifacthub-only
policy: add ArtifactHub-only installation requirement
2026-03-15 12:44:31 -04:00
null-pointer-nancy[bot] 7a4f7d97b7 policy: add ArtifactHub-only installation policy
Per CEO directive, ArtifactHub via the Headlamp plugin installer is the
only approved installation method. No exceptions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-15 16:36:39 +00:00
12 changed files with 11685 additions and 18229 deletions
+20
View File
@@ -0,0 +1,20 @@
name: Dual Approval (CTO + QA)
# Calls the shared dual-approval-check workflow.
# Passes when both privilegedescalation-cto and privilegedescalation-qa
# have approved the PR. Add "Dual Approval (CTO + QA)" to required_status_checks
# in branch protection to enforce this gate.
on:
pull_request_review:
types: [submitted, dismissed]
pull_request:
branches: [main]
types: [opened, reopened, synchronize]
jobs:
dual-approval:
uses: privilegedescalation/.github/.github/workflows/dual-approval-check.yaml@main
secrets: inherit
with:
pr_number: ${{ github.event.pull_request.number }}
+8 -2
View File
@@ -7,13 +7,19 @@ on:
description: 'Release version (e.g. 1.0.0)'
required: true
type: string
repository_dispatch:
types: [release]
permissions:
contents: write
pull-requests: write
jobs:
release:
uses: privilegedescalation/.github/.github/workflows/plugin-release.yaml@main
secrets:
RELEASE_APP_ID: ${{ secrets.RELEASE_APP_ID }}
RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
with:
version: ${{ inputs.version }}
upstream-repo: 'rook/rook'
version: ${{ inputs.version || github.event.client_payload.version }}
+17 -1
View File
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.0.0] - 2026-03-24
### Added
- **Test infrastructure** — added `vitest`, `@testing-library/react`, `@testing-library/jest-dom`, `@testing-library/user-event`, `jsdom`, `react`, `react-dom`, `@types/react`, `@types/react-dom`, `react-router-dom`, `@mui/material`, and `notistack` as devDependencies so the test suite can run in CI without requiring the full Headlamp monorepo
- **`vitest.config.mts`** — added `define: { 'process.env.NODE_ENV': '"test"' }` block to fix test environment compatibility with jsdom and React 18
- **CI: dual-approval caller workflow** — two-reviewer gate before any release can proceed
- **Renovate: org-level preset extension** — Renovate config now extends the organisation-level preset for consistent dependency management across repos
- **Renovate: `pinDigests`** — GitHub Actions are now pinned to exact SHAs for supply-chain security
### Changed
- **Version bump to 1.0.0** — first stable release; all core features (Overview, Block Pools, Filesystems, Object Stores, Storage Classes, Volumes, Pods pages; StorageClass/PV column injection; PVC/PV/Pod detail sections; App Bar badge; RookCephDataContext) are considered production-ready
- **Lock file** — switched from `package-lock.json` to `pnpm-lock.yaml`; project now uses pnpm as the canonical package manager
## [0.2.6] - 2026-03-04
### Fixed
@@ -97,7 +112,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- TypeScript strict mode with zero `any` types
- ESLint + Prettier code quality tooling
[Unreleased]: https://github.com/privilegedescalation/headlamp-rook-plugin/compare/v0.2.6...HEAD
[Unreleased]: https://github.com/privilegedescalation/headlamp-rook-plugin/compare/v1.0.0...HEAD
[1.0.0]: https://github.com/privilegedescalation/headlamp-rook-plugin/compare/v0.2.8...v1.0.0
[0.2.6]: https://github.com/privilegedescalation/headlamp-rook-plugin/compare/v0.2.5...v0.2.6
[0.2.2]: https://github.com/privilegedescalation/headlamp-rook-plugin/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/privilegedescalation/headlamp-rook-plugin/compare/v0.2.0...v0.2.1
+24
View File
@@ -0,0 +1,24 @@
# Installation Policy
## Approved Installation Method
**The ONLY approved method for installing this plugin is via [Artifact Hub](https://artifacthub.io/) using the Headlamp plugin installer.**
No other installation method is acceptable. This includes but is not limited to:
- Direct installation from GitHub release assets
- Manual npm pack / tarball extraction
- initContainer workarounds that bypass Artifact Hub
- Direct file copy or sidecar injection
## Enforcement
All deployment configurations, CI/CD pipelines, and documentation MUST reference Artifact Hub as the sole plugin distribution channel. Any pull request that introduces an alternative installation method will be rejected.
## Rationale
Artifact Hub provides verified checksums, consistent versioning, and a standard discovery mechanism for the CNCF ecosystem. Bypassing it introduces security and integrity risks.
---
*This policy is set by the CTO and approved by the CEO of Privileged Escalation.*
-15
View File
@@ -48,23 +48,8 @@ Rook-Ceph must be deployed in the `rook-ceph` namespace with standard labels. Th
## Installing
### Option 1: Headlamp Plugin Manager (Recommended)
Browse the Headlamp Plugin Manager (Settings → Plugins → Catalog) and install **headlamp-rook-plugin** directly.
### Option 2: Manual Plugin Install
Download the latest release tarball and place it in your Headlamp plugins directory:
```bash
# Download the latest release
curl -L https://github.com/privilegedescalation/headlamp-rook-plugin/releases/latest/download/headlamp-rook-plugin-<version>.tar.gz \
-o headlamp-rook-plugin.tar.gz
# Extract to Headlamp plugins directory
tar -xzf headlamp-rook-plugin.tar.gz -C ~/.config/Headlamp/plugins/
```
## RBAC & Security Setup
The plugin reads Rook-Ceph CRDs and Kubernetes resources. Your Headlamp service account needs:
+12 -4
View File
@@ -1,4 +1,4 @@
version: "0.2.7"
version: "1.0.2"
name: headlamp-rook-plugin
displayName: Rook Plugin
createdAt: "2026-02-18T00:00:00Z"
@@ -24,10 +24,18 @@ provider:
name: privilegedescalation
changes:
- kind: changed
description: "Package renamed to rook so the plugin displays correctly in Headlamp's Plugins list"
description: "Bump to v1.0.1 patch release — fix ArtifactHub checksum"
- kind: added
description: "Test infrastructure: add vitest, @testing-library/react, jsdom, and related devDependencies so CI tests pass"
- kind: added
description: "vitest.config.mts: add define block for process.env.NODE_ENV to fix test environment compatibility"
- kind: added
description: "CI: dual-approval caller workflow and GitHub App token secret passing to release workflow"
- kind: changed
description: "Renovate: extend org-level config preset and add pinDigests for SHA pinning of GitHub Actions"
annotations:
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-rook-plugin/releases/download/v0.2.7/rook-0.2.7.tar.gz"
headlamp/plugin/archive-checksum: sha256:1ff5f2a13eff8739a4270e8601aeecb90f887d8b608aa4770ff62344fd95dbda
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-rook-plugin/releases/download/v1.0.2/rook-1.0.2.tar.gz"
headlamp/plugin/archive-checksum: sha256:4f16cec3297968c7eb06e475a1c175503abf17134bd411fc86be1f18d9d27a48
headlamp/plugin/distro-compat: ""
headlamp/plugin/version-compat: ">=0.20"
-18188
View File
File diff suppressed because it is too large Load Diff
+22 -2
View File
@@ -1,6 +1,6 @@
{
"name": "rook",
"version": "0.2.7",
"version": "1.0.2",
"description": "Headlamp plugin for Rook-Ceph cluster visibility and CSI driver monitoring",
"repository": {
"type": "git",
@@ -25,6 +25,26 @@
"test:watch": "vitest"
},
"devDependencies": {
"@kinvolk/headlamp-plugin": "^0.13.0"
"@headlamp-k8s/eslint-config": "^0.6.0",
"@kinvolk/headlamp-plugin": "^0.13.0",
"@mui/material": "^5.15.14",
"@testing-library/jest-dom": "^6.4.8",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.5.2",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"eslint": "^8.57.0",
"jsdom": "^24.0.0",
"notistack": "^3.0.0",
"prettier": "^2.8.8",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^5.3.0",
"typescript": "~5.6.2",
"vitest": "^3.2.4"
},
"overrides": {
"tar": "^7.5.11",
"undici": "^7.24.3"
}
}
+11576
View File
File diff suppressed because it is too large Load Diff
+2 -16
View File
@@ -1,19 +1,5 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"baseBranches": ["main"],
"schedule": ["every weekend"],
"prConcurrentLimit": 10,
"packageRules": [
{
"matchManagers": ["npm"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "npm minor and patch"
},
{
"matchManagers": ["github-actions"],
"matchUpdateTypes": ["minor", "patch"],
"groupName": "github-actions minor and patch"
}
]
"extends": ["github>privilegedescalation/.github:renovate-config"]
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"extends": "@kinvolk/headlamp-plugin/config/plugins-tsconfig.json",
"compilerOptions": {
"types": ["vite/client", "vite-plugin-svgr/client", "vitest/globals", "@testing-library/jest-dom"]
"types": ["vitest/globals", "@testing-library/jest-dom"]
},
"include": ["src"]
}
+3
View File
@@ -1,6 +1,9 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
define: {
'process.env.NODE_ENV': '"test"',
},
test: {
globals: true,
environment: 'jsdom',