Files
headlamp-rook-plugin/CHANGELOG.md
T
DevContainer User 62c24e3857 fix: register AppBarClusterBadge, fix CSI label mismatch, improve accessibility and theme support
- Register AppBarClusterBadge via registerAppBarAction (was dead code)
- Add Rook 1.12+ CSI pod labels to CephPodDetailSection alongside legacy labels
- Add sidebar entries for Storage Classes and Volumes pages
- Add role="dialog", aria-modal, aria-labelledby, and Escape key to all detail drawers
- Replace hardcoded hex colors with CSS custom properties for dark/light theme compat
- Remove duplicate parseStorageToBytes from OverviewPage (import from k8s.ts)
- Add endpoints field to CephObjectStoreStatus interface (remove unsafe cast)
- Use ROOK_CEPH_API_GROUP/VERSION constants in API URL construction
- Hoist extractJsonData to module level
- Remove dead extractPoolFromVolumeHandle function
- Fix redundant storageClasses.length guard in OverviewPage
- Fix lint indent warnings
- Update CLAUDE.md and CHANGELOG.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:55:37 +00:00

5.9 KiB

Changelog

All notable changes to the Headlamp Rook Plugin will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.2.6 - 2026-03-04

Fixed

  • AppBarClusterBadge registration — cluster health badge in the Headlamp top nav bar was implemented but never registered; now wired up via registerAppBarAction
  • CSI pod label mismatchCephPodDetailSection now recognizes both legacy (csi-rbdplugin-provisioner) and Rook 1.12+ (rook-ceph.rbd.csi.ceph.com-ctrlplugin) CSI pod labels
  • Duplicate parseStorageToBytes — removed local copy from OverviewPage; imports shared implementation from k8s.ts
  • ObjectStore endpoint type safety — added endpoints field to CephObjectStoreStatus interface, eliminating unsafe double-cast
  • Redundant guard — removed duplicate storageClasses.length > 0 condition in OverviewPage

Added

  • Sidebar entries for Storage Classes and Volumes pages — both are now navigable from the sidebar instead of only accessible via direct URL
  • Drawer accessibility — all detail panel drawers now include role="dialog", aria-modal, aria-labelledby, and Escape key handling

Changed

  • Theme-aware colors — replaced hardcoded hex colors with CSS custom properties (var(--mui-palette-*)) in AppBarClusterBadge, ClusterStatusCard, and OverviewPage for dark/light theme compatibility
  • API URL constantsRookCephDataContext now uses ROOK_CEPH_API_GROUP and ROOK_CEPH_API_VERSION constants instead of string literals
  • extractJsonData hoisted — moved from inside the component render body to module-level function

Removed

  • Dead code — removed unused extractPoolFromVolumeHandle function from k8s.ts

0.2.2 - 2026-02-19

Changed

  • Package name — renamed from headlamp-rook-plugin to rook so the plugin displays correctly in Headlamp's Plugins list

0.2.1 - 2026-02-19

Fixed

  • Duplicate columns — Protocol and Pool columns on mixed-driver clusters (rook-ceph + tns-csi) are now merged into a single shared column rather than duplicated; whichever plugin loads first owns the column and the second merges into it

Changed

  • Sidebar label — top-level navigation entry renamed from Rook-Ceph to Rook

0.2.0 - 2026-02-19

Changed

  • Rename — plugin renamed from headlamp-rook-ceph-plugin to headlamp-rook-plugin

0.1.3 - 2026-02-19

Fixed

  • Protocol column — renamed TypeProtocol with short values (RBD, CephFS) to match tns-csi column naming convention on shared native tables

0.1.2 - 2026-02-19

Fixed

  • Column naming — renamed Rook TypeType and Cluster IDCluster in StorageClass and PV column processors

0.1.1 - 2026-02-19

Fixed

  • StorageClass/PV column injection — removed redundant Rook Type label prefix; standardized column headers across plugins

0.1.0 - 2026-02-18

Added

  • Overview Dashboard — CephCluster health (HEALTH_OK/WARN/ERR), cluster capacity PercentageBar, storage resource counts (block pools, filesystems, object stores, PVs, PVCs), daemon pod health summary, non-Bound PVC alert table
  • Block Pools page — CephBlockPool table with phase, replication, failure domain, mirroring; slide-in detail panel with erasure coding and status info
  • Storage Classes page — Rook-Ceph StorageClass table with type (Block/Filesystem), pool, provisioner, reclaim policy, expansion; slide-in detail panel with parameters
  • Volumes page — Rook-Ceph PV table with capacity, access modes, reclaim, pool, claim; slide-in detail panel with full CSI volume attributes
  • Pods page — all Rook-Ceph daemon pods grouped by role with ready/total counts and restart tracking
  • StorageClass column injection — adds Rook Type, Pool, and Cluster ID columns to native Headlamp StorageClass table
  • PV column injection — adds Rook Type and Pool columns to native Headlamp PV table
  • PVC Detail Injection — Rook-Ceph section automatically injected into Headlamp's PVC detail view showing driver, type, pool, volume handle, and PV name
  • PV Detail Injection — Rook-Ceph section injected into PV detail view with full CSI volume attributes
  • Pod Detail Injection — Ceph daemon role badge (Operator, MON, OSD, MGR, etc.) injected into matching Pod detail pages
  • App Bar Badge — cluster health badge in top nav bar, color-coded green/orange/red; hidden when no CephCluster present
  • RookCephDataContext — shared React context provider for all plugin pages; fetches CephCluster, CephBlockPool, CephFilesystem, CephObjectStore CRDs plus daemon pods
  • Multi-provisioner support — handles both default rook-ceph.* and custom-namespace provisioner strings

Infrastructure

  • GitHub repository with CI (lint + type-check + test) and release workflows
  • Unit tests with Vitest + @testing-library/react
  • TypeScript strict mode with zero any types
  • ESLint + Prettier code quality tooling