chore(deps): update headlamp to v0.42.0 #6620

Merged
alexlebens merged 1 commits from renovate/unified-headlamp into main 2026-05-07 20:40:18 +00:00
Collaborator

This PR contains the following updates:

Package Update Change
ghcr.io/headlamp-k8s/headlamp minor v0.41.0v0.42.0
headlamp (source) minor 0.41.00.42.0
headlamp-k8s/headlamp minor 0.41.0v0.42.0

Release Notes

kubernetes-sigs/headlamp (headlamp)

v0.42.0: 0.42.0

Compare Source

Hitch hikers guide to Headlamp 0.42.0

Deep-link support was added for pod terminals (?view=exec) and log views (?view=logs), letting users bookmark or share direct links to specific UI states. Resources can now be searched by label in all list views, the Log Viewer gains a severity filter dropdown, and a delete button has been added directly to the plugins list. Node Details received two new sections for pod capacity usage and resource allocation, and the Resource Map now renders status badges on plugin-provided nodes and includes previously missing configuration resources. GRPCRoute details reach full parity with HTTPRoute, and a guided form-based resource creation UI (starting with Pods) is now available alongside the YAML editor.

On the reliability side, a silent cache desync that caused permanently stale cluster data was fixed, along with a lock-order inversion deadlock that could freeze WebSocket connections under load, and a wave of React hooks rule violations across more than a dozen frontend components. Several backend panics were fixed in port-forwarding, kubeconfig parsing, cache key generation, and Helm chart type handling, alongside debounced log aggregation to prevent UI freezes in All Pods mode. Security hardening includes path traversal prevention in the service proxy and dependency bumps.

Enhancements (part 1)

Enhancements
Added deep-link support for pod exec via ?view=exec query parameter, letting users bookmark or share direct links to open a terminal into a specific pod. Thanks to @​justinas-wix. #​4941
Added a hidden 'labels' column to all resource list views so users can search resources by label (e.g. app=test) using the existing search bar. Thanks to @​sniok. Also thanks to @​illume for reporting the issue. #​5035
Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources. Thanks to @​mahmoudmagdy1-1. #​5349
Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit. Thanks to @​Vikaspal8923. Also thanks to @​jimmyjones2 for reporting the issue. #​5039
Extended a8r.io annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource. Thanks to @​mastermaxx03. #​5007
Added a severity filter dropdown to the Log Viewer, letting users quickly filter logs by level (ERROR, WARN, INFO, DEBUG) to cut through noisy streams. Thanks to @​Utkarshpandey0001. #​5338
Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first. Thanks to @​rickbrouwer. #​5314
Added ?view=logs deep-link support on Deployment, ReplicaSet, DaemonSet, and StatefulSet detail pages, letting users open the logs view directly from a URL. Thanks to @​bhat-ganesh. #​5312
Added missing configuration resources to the Resource Map graph so they are now fully visible in the Configuration group. Thanks to @​vishnukothakapu. #​5223
frontend: ResourceTable: Add new 'labels' column to all list views to allow searching by label
Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first.
frontend: Add delete button to plugin list
Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow.
frontend: CreateResourceForm: Add resource form create feature and CreateResourceForm





Enhancements (part 2)

Enhancements
Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats. Thanks to @​Vikaspal8923. Also thanks to @​jimmyjones2 for reporting the issue. #​5169
Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying. Thanks to @​Vikaspal8923. #​5018
Added a background janitor to evict expired Kubernetes clientsets, fixing an unbounded memory leak that could cause OOM crashes on busy clusters. Thanks to @​Joshna907. #​5286
Wrapped the Reconnect button label in LogViewer with the translation function and added the key to all 12 locale files, enabling full i18n support. Thanks to @​NAME-ASHWANIYADAV. #​5176
GRPCRoute details view now shows rules, hostnames, matches, backendRefs, and filters, bringing it to full parity with HTTPRoute details. Thanks to @​NAME-ASHWANIYADAV. #​5174
Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources.
docs: frontend: resourceMap: Add status support for map nodes
Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats.
Screenshot from 2026-04-20 14-32-54
Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view.
Screenshot from 2026-04-12 19-27-27
Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results.
Screenshot from 2026-03-25 13-18-28





Enhancements (part 3)

Enhancements
Added a toast notification when port-forwarding fails so users are explicitly informed instead of errors being silently logged to the console. Thanks to @​itvi-1234. #​5145
Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view. Thanks to @​Vikaspal8923. #​5126
Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views. Thanks to @​Vikaspal8923. #​5119
Added service.extraServicePorts and matching Ingress backend support to the Helm chart, allowing sidecar containers to be exposed without a separate Service resource. Thanks to @​Soli0222. #​5078
Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics. Thanks to @​itvi-1234. #​5048
Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow. Thanks to @​vyncent-t. #​5044
Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance. Thanks to @​itvi-1234. Also thanks to @​trashhead for reporting the issue. #​4956
Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit.
Screenshot from 2026-04-02 23-21-10
Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying.
frontend: EditorDialog :add yaml diff view in editor to compare original manifest against edited
Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views.
Screenshot from 2026-04-11 13-59-36
Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance.
frontend:Show container port name if available





Enhancements (part 4)

Enhancements
Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior. Thanks to @​ChayanDass. Also thanks to @​joaquimrocha for reporting the issue. #​4931
Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results. Thanks to @​Vikaspal8923. #​4965
Extended a8r.io annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource.
frontend: App: resource: Extend a8r.io annotation support to all Kubernetes resources
Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics.
frontend: nodes: Add resource allocation summary in Node Details
Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior.
frontend: align duration formatting with apimachinery logic





🐞 Bug fixes (part 1)

Bug fixes
Fixed pod status icon remaining stuck on warning in list view after a pod becomes healthy, without requiring a page refresh. Thanks to @​nidhi-9900. Also thanks to @​nullzone for reporting the issue. #​5059
Fixed performance regressions in the resource map by properly memoizing values to avoid redundant graph rebuilds, improving responsiveness on larger clusters. Thanks to @​sniok. Also thanks to @​itpick for reporting the issue. #​4961
Fixed a silent cache desync bug where a dead watcher locked the registry and prevented cache invalidation, causing the UI to show permanently stale cluster data. Thanks to @​KumarADITHYA123. #​5163
Removed the --no-quarantine flag from the macOS Homebrew installation command to reflect the current recommended install process. Thanks to @​saivenkateshi. Also thanks to @​hyorimlee for reporting the issue. #​4943
Debounced log aggregation in All Pods mode to eliminate UI freezes when streaming large volumes of logs. Thanks to @​Utkarshpandey0001. #​5320
Fixed react-hooks/rules-of-hooks violations in secret/Details.tsx by extracting the inline section helper into a proper React component, preventing potential hook-related bugs. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5266
Fixed missing data columns (Status, Replicas, etc.) in CustomResourceDetails for core resources whose apiVersion contains no slash, such as Nodes. Thanks to @​Joshna907. #​5259
Fixed react-hooks/rules-of-hooks violations in GraphView.tsx by moving hook calls unconditionally into function bodies, preventing potential rendering bugs. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5252
Fixed react-hooks/rules-of-hooks violations in configmap/Details.tsx by extracting the inline section helper into a proper React component, also resolving a variable shadowing issue in map callbacks. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5203
Fixed a React hooks violation in VolumeDetails where useTranslation was called after an early return, preventing potential runtime errors. Thanks to @​itvi-1234. Also thanks to @​illume for reporting the issue. #​5201





🐞 Bug fixes (part 2)

Bug fixes
Replaced fmt.Printf calls with structured logging in ListPlugins, improving log consistency and simplifying plugin-related test reliability. Thanks to @​NAME-ASHWANIYADAV. #​5072
Fixed a crash on the Namespace details page when ResourceQuota status is absent immediately after creation, preventing blank or broken quota displays. Thanks to @​Vikaspal8923. #​4990
Fixed heading hierarchy in the ReleaseNotes story so h3 elements are always preceded by proper h1/h2 ancestors, ensuring correct document structure. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5356
Added missing aria-controls attribute to EditorDialog action buttons, improving accessibility for assistive technology users. Thanks to @​Utkarshpandey0001. #​5355
Fixed a nil-pointer panic in port-forwarding that could crash the backend when a port-forward process exited gracefully and its error channel was closed. Thanks to @​Joshna907. #​5342
Resource map breadcrumbs now pass apiGroup alongside kind to icon lookups, so resources like apps/ReplicaSet display their correct icon instead of the generic cube. Thanks to @​mahmoudmagdy1-1. #​5332
Fixed the "Use evict for pod deletion" setting not persisting as disabled across reloads by replacing a logical OR with nullish coalescing so an explicit false is correctly saved. Thanks to @​Utkarshpandey0001. #​5328
Fixed orphaned goroutines and lingering port listeners in the port-forwarding module, preventing memory leaks and stuck local ports after a port-forward is deleted or times out. Thanks to @​Joshna907. #​5316
Fixed a lock-order inversion deadlock in the multiplexer that could freeze WebSocket connections under concurrent load. Thanks to @​KumarADITHYA123. #​5307





🐞 Bug fixes (part 3)

Bug fixes
Fixed corrupted Kubernetes cache keys caused by incorrect parsing of internal URLs, preventing cache pollution and key collisions. Thanks to @​Joshna907. #​5292
Silent errors in advanced search query parsing and filter evaluation are now logged via console.debug, making failures easier to diagnose. Thanks to @​NAME-ASHWANIYADAV. #​5284
Fixed a double-response bug in InstallRelease where execution continued after sending a 500 error, preventing corrupted HTTP responses. Thanks to @​NAME-ASHWANIYADAV. #​5277
Fixed a crash (white screen) caused by malformed JWTs during decoding, improving stability for plugins using the getUserInfo utility. Thanks to @​Joshna907. #​5270
Fixed npm run star so developers can load Headlamp in dev mode on Windows without repeated reloads or long waits. Thanks to @​illume. #​5256
Fixed a React hooks-rules violation in useKubeObject where WebSocket hooks were called conditionally, ensuring reliable WebSocket behaviour regardless of feature flags. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5253
Fixed a React hooks-rules violation in the router by extracting an inline arrow function into a named component, preventing unpredictable hook behaviour during routing. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5251
Fixed a React hooks-rules violation in usePrefersColorScheme by moving useState and useEffect above the early return, ensuring consistent color-scheme detection. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5250
Fixed a React hooks-rules violation in useWatchKubeObjectLists by calling both sub-hooks unconditionally, preventing potential runtime errors from conditional hook calls. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5249
Fixed the AuthChooser AnError Storybook story to always render a non-empty DialogTitle, eliminating an empty h1 accessibility issue. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5239





🐞 Bug fixes (part 4)

Bug fixes
Fixed a fatal UI crash caused by malformed or empty sidebar data in browser localStorage during Redux state initialization. Thanks to @​Joshna907. #​5235
Fixed React hooks rule violations in the PortForward component that could cause unpredictable rendering behavior. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5231
Pinned the gcb-docker-gcloud Cloud Build image by digest to prevent CI failures caused by garbage-collected tags. Thanks to @​skoeva. #​5229
Fixed a server crash that occurred when installing or upgrading unsupported Helm chart types such as library charts. Thanks to @​KumarADITHYA123. #​5217
Fixed a backend panic in cache invalidation that crashed the server when a GenerateKey error was silently ignored on short API paths. Thanks to @​KumarADITHYA123. #​5215
Fixed React hooks rule violations in CustomResourceListTable where useMemo calls after an early return caused unpredictable rendering. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5213
Renamed withEnv decorator to PascalCase in AppContainer stories, fixing rules-of-hooks ESLint violations. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5210
Renamed story component functions to PascalCase in PluginSettingsDetails stories, resolving rules-of-hooks ESLint errors. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5209
Moved useCallback before the early return in DialogTitle and added missing focusTitle dependency, fixing rules-of-hooks violations. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5208
Moved all hook calls before the early return in RollbackButton, fixing rules-of-hooks violations and improving TypeScript type narrowing. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5206





🐞 Bug fixes (part 5)

Bug fixes
Fixed and re-enabled a previously skipped multiplexer test, improving test suite reliability. Thanks to @​sniok. #​5179
Removed an unsafe as any TypeScript cast in VersionButton by providing an explicit generic type to useQuery, improving type safety. Thanks to @​itvi-1234. #​5164
Fixed a backend panic crash in GetAPIGroup caused by index out of range errors when Kubernetes discovery paths were shortened or truncated. Thanks to @​KumarADITHYA123. #​5161
Fixed a bug where a stale global namespace filter could hide results in namespace-scoped views when no namespace filter should apply. Thanks to @​Vikaspal8923. Also thanks to @​jimmyjones2 for reporting the issue. #​5157
Fixed Helm repository and chart handler error behavior, including proper 404 responses on missing repos and safer lock error handling. Thanks to @​Athang69. #​5149
Fixed Content-Type: application/json header being silently dropped in 7 Helm release API handlers, ensuring clients receive correct response metadata. Thanks to @​NAME-ASHWANIYADAV. #​5147
Fixed a server panic caused by bare type assertions in kubeconfig parsing when processing malformed kubeconfig files. Thanks to @​KumarADITHYA123. #​5138
Added missing Pi and P memory unit support to normalizeUnit and corrected off-by-one multipliers for Ei and E, ensuring accurate Kubernetes quantity parsing. Thanks to @​KumarADITHYA123. #​5135
Fixed a bug in k8cache where Kubernetes resources older than 60 seconds silently skipped cache invalidation on Update or Delete, preventing stale data from being cleared. Thanks to @​KumarADITHYA123. #​5130
Removed debug console.log statements and fixed a typo in the frontend, keeping the production console clean. Thanks to @​NAME-ASHWANIYADAV. #​5129





🐞 Bug fixes (part 6)

Bug fixes
Removed an unnecessary debug console.log from the clusterRequests remove() function to keep the production console clean. Thanks to @​NAME-ASHWANIYADAV. #​5127
Fixed backend linting on Windows with LF line endings and compatible Makefile targets, replaced deprecated fake clientset, and bumped helm/v3 to 3.20.2. Thanks to @​skoeva. #​5121
Long cluster names in the Home page table now expand dynamically and show the full name on hover, improving readability. Thanks to @​vyncent-t. Also thanks to @​hpschry and @​jimmyjones2 for reporting the issue. #​5109
Fixed resourceFieldRef env vars failing to resolve for admission-injected sidecar containers like istio-proxy, eliminating 'Container not found' errors. Thanks to @​itvi-1234. Also thanks to @​vmozghovyi for reporting the issue. #​5107
Fixed helm route auth token handling to work unconditionally and added regression tests for helm auth and RouteSwitcher key uniqueness. Thanks to @​Athang69. Also thanks to @​v0lkan for reporting the issue. #​5105
Replaced console.log with console.error in catch blocks so exceptions are correctly flagged in browser DevTools and log monitoring tools. Thanks to @​NAME-ASHWANIYADAV. #​5104
Users now see an error notification when cluster deletion fails instead of silently receiving no feedback. Thanks to @​NAME-ASHWANIYADAV. #​5102
Fixed the ResourceTable Name Search Storybook example so the search input is correctly prefilled and table filtering works as expected. Thanks to @​Vikaspal8923. Also thanks to @​sniok for reporting the issue. #​5100
Updated npm dependencies via audit to address known vulnerabilities, with Electron upgraded to the latest version. Thanks to @​sniok. #​5097
Fixed a crash on CronJob list and details pages when spec.suspend is absent from the API response, preventing a TypeError on undefined. Thanks to @​Athang69. Also thanks to @​RobertSkawinski for reporting the issue. #​5085





🐞 Bug fixes (part 7)

Bug fixes
Helm chart now automatically mounts an emptyDir volume at /tmp when readOnlyRootFilesystem is enabled, fixing deployment failures in restricted security contexts. Thanks to @​YotamKorah. Also thanks to @​wkbrd for reporting the issue. #​5079
Removed a leftover console.log debug statement from HTTPRouteDetails, eliminating unnecessary noise in the browser console. Thanks to @​NAME-ASHWANIYADAV. #​5074
Fixed double-write HTTP responses and missing headers in Helm backend handlers, ensuring correct and well-formed API responses. Thanks to @​NAME-ASHWANIYADAV. #​5056
Fixed typos and improved error logging in OauthPopup by correcting 'occured' to 'occurred' and using console.error for proper error severity reporting. Thanks to @​NAME-ASHWANIYADAV. #​5054
Fixed a copy-paste bug where GRPCRoute used the wrong section ID (httproute-parentrefs) and removed leftover debug console.log statements from production code. Thanks to @​NAME-ASHWANIYADAV. #​5052
Cluster action error notifications now surface detailed Kubernetes API error messages instead of generic failure text, making it easier to diagnose rejected operations like ValidatingAdmissionPolicy failures. Thanks to @​itvi-1234. Also thanks to @​jimmyjones2 for reporting the issue. #​5047
Fixed broken app startup after npm install due to an esbuild error by regenerating package-lock.json, updating frontend snapshots, and reverting the merge commit check. Thanks to @​illume. #​5029
Fixed a Map view bug where resources with the same name in different namespaces were incorrectly linked by adding namespace checks to resource relation matching. Thanks to @​itvi-1234. Also thanks to @​rassie for reporting the issue. #​5006
Fixed AppImage crash on Linux caused by chrome-sandbox permission issues by disabling the setuid sandbox in AppImage environments. Thanks to @​kunaldevsahu. Also thanks to @​eftewuer for reporting the issue. #​4996
Fixed truncation of long Kubernetes condition names (e.g. PodReadyToStartContainers) in resource detail Conditions tables so full names are always visible. Thanks to @​itvi-1234. #​4967
Fixed pod metrics matching to use both name and namespace, preventing incorrect CPU/memory stats for pods sharing the same name across different namespaces. Thanks to @​Utkarshpandey0001. #​4933
Fixed GlobalSearch bar visibility on dark or colored navbars by adding explicit backgrounds, ensuring the search field is visible at all zoom levels and themes. Thanks to @​skoeva. #​4930





🔒 Security

Security improvements
Hardened service proxy URI validation to block path traversal and protocol-relative URLs that could redirect requests to arbitrary hosts. Thanks to @​skoeva. #​5299
Bumped multiple app, plugin, and backend dependencies including storybook, i18next-fs-backend, xmldom, and headlamp-plugin to keep packages up to date and fix build issues. Thanks to @​skoeva. #​5122
Bumped backend and headlamp-plugin dependencies including OpenTelemetry, go-jose, and Vite to keep packages up to date and secure. Thanks to @​skoeva. #​5108
Validate host header to protect desktop and headless users. Thanks to @​illume. Also thanks to Koda Reef for reporting the issue. #​5419
Updated SECURITY.md to reference the kubernetes-sigs security policy, making it easier to find for contributors browsing the repo. Thanks to @​illume. Also thanks to @​rassie for reporting the issue. #​5081
Bumped multiple dependencies including tar, flatted, typedoc, body-parser, undici, and others to address security and compatibility updates. Thanks to @​skoeva. #​4948
Bumped tar dependency from 7.5.10 to 7.5.11 in the sidebar plugin example to include a symlink escape fix. . #​4880





Accessibility

Accessibility improvements
Replaced the accessible-name violation caused by role=button on a label element in DropZoneBox with a ref-based file input trigger. Thanks to @​skoeva. #​5272
Unified sorting icons in SimpleTable to match ResourceTable's MUI arrow style and added tooltips to sorting buttons for better accessibility. Thanks to @​Utkarshpandey0001. #​4952
Fixed heading hierarchy in the ReleaseNotesModal story so the h3 fixture is properly nested under h1/h2 ancestors, and updated the storyshot snapshot to match. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5315





📖 Documentation

Documentation improvements
Deduplicated nodes and edges in the resource map graph after merging sources, eliminating duplicate elements that could cause rendering issues. Thanks to @​mahmoudmagdy1-1. #​5400
Added NKP (Nutanix Kubernetes Platform) to the supported platforms documentation, confirming it works with Headlamp out of the box. Thanks to @​jlnhnng. #​5173
Added Linode Kubernetes Engine (LKE) to the list of tested and supported platforms in the documentation. Thanks to @​ruckus-voxi. #​5116
Added a tutorial showing how to build a WhoAmI plugin that displays user identity in the cluster sidebar using the SelfSubjectReview API. Thanks to @​yolossn. #​5080
Fixed multiple documentation issues including a grammatical error, stale Code of Conduct link, duplicate sections, outdated dependency versions, and broken internal links. Thanks to @​Athang69. #​5060
Added documentation for MCP (Model Context Protocol) support to the Headlamp learn section, helping users discover and configure the feature. Thanks to @​vyncent-t. #​4998
Added HolmesGPT documentation to the Learn section, making it easier to find and use HolmesGPT guidance within the docs. Thanks to @​vyncent-t. #​4997





💻 Development (part 1)

Development improvements
Added end-to-end tests verifying the Prometheus plugin is correctly bundled and its settings page is accessible in the UI. Thanks to @​illume. #​5362
Storybook mocks now return HTTP 404 for deprecated v1beta1 CRD endpoints, better reflecting real cluster behavior in component stories. Thanks to @​mystic-06. Also thanks to @​skoeva for reporting the issue. #​5040
Host header validation added on loopback listeners to reduce the risk of DNS rebinding attacks against the local backend server. Thanks to @​illume. #​5419
Bumped Go to 1.25.9 to address stdlib CVEs, improving the security of the backend. Thanks to @​yolossn. #​5410
Kubernetes volume status phases such as "Bound" and "Pending" are now translated, so they respect the user's selected locale instead of always appearing in English. Thanks to @​Joshna907. #​5331
Core API discovery failures (e.g. due to timeouts or RBAC issues) are now logged instead of silently swallowed, making it easier to diagnose missing resources in the UI. Thanks to @​Joshna907. #​5329
Switched plugin cache error checks to use errors.Is() so wrapped cache.ErrNotFound errors are correctly detected and plugin listing behaves reliably. Thanks to @​NAME-ASHWANIYADAV. #​5326
Reverted Storybook stories for AddCluster component that were causing CI failures. Thanks to @​skoeva. #​5301
Silent errors in terminal shell detection functions are now logged via console.debug, making node shell connection failures easier to debug. Thanks to @​NAME-ASHWANIYADAV. #​5282
Replaced direct Helm sentinel error comparisons with errors.Is, ensuring wrapped errors are correctly detected in release-not-found checks. Thanks to @​NAME-ASHWANIYADAV. #​5280
Reverted a namespace filter reset change that caused crashes when navigating to namespace views with an active namespace filter selected. Thanks to @​sniok. #​5271
Added an i18n-check step to CI to automatically catch translation file regressions as dependencies and code are updated. Thanks to @​illume. #​5257
Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states.
frontend(KubeConfigLoader): Add Storybook stories with all component …





💻 Development (part 2)

Development improvements
Refactored Event hooks into standalone exported functions, fixing React hooks-rules violations and making useEventListForClusters and useEventWarningList available to consumers. Thanks to @​Utkarshpandey0001. Also thanks to @​illume for reporting the issue. #​5255
Replaced log.Printf with the structured logger in the telemetry package, aligning warning output with the rest of the backend. Thanks to @​NAME-ASHWANIYADAV. #​5221
Added Copilot PR review instructions to automate common review feedback, helping enforce project standards more consistently. Thanks to @​joaquimrocha. #​4937
Added console.debug logging to previously silent catch blocks across frontend components, making errors visible during debugging. Thanks to @​NAME-ASHWANIYADAV. #​5220
Replaced hardcoded context.TODO() in the service proxy with proper request-scoped context, enabling correct cancellation and deadline propagation. Thanks to @​NAME-ASHWANIYADAV. #​5219
Replaced an incorrectly imported MUI icon with the Iconify equivalent in the Table component, restoring consistent icon rendering. Thanks to @​sniok. #​5178
Replaced console.log with console.debug for IndexedDB operational messages, keeping them available in development while hiding them in production. Thanks to @​NAME-ASHWANIYADAV. #​5177
Removed 54 lines of unreachable dead code from UpdatePopup and hardened window.open usage, simplifying the component and improving safety. Thanks to @​NAME-ASHWANIYADAV. #​5175
Expanded test coverage for the k8cache package, covering previously untested branches to improve backend reliability. Thanks to @​Athang69. #​5172
Upgraded Node.js to v22.x LTS across all CI workflows and package.json engines fields to stay ahead of Node 20 end-of-life. Thanks to @​sniok. #​5170
Removed a legacy Webpack-specific workaround from ErrorPage, cleaning up the component now that Headlamp fully uses Vite for SVG imports. Thanks to @​itvi-1234. #​5143
Enabled eslint-plugin-react-hooks lint rules in the frontend to surface hard-to-debug React hook mistakes earlier in development. Thanks to @​sniok. #​5155
Frontend lint warnings are now enforced as CI-blocking errors, with pre-existing violations suppressed, improving long-term code quality. Thanks to @​illume. #​5196
Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states.
Screenshot 2026-04-27 at 6 58 04 PM





💻 Development (part 3)

Development improvements
Added a README for the Headlamp Releaser CLI tool documenting prerequisites, usage, and how it automates version bumping, tagging, and publishing. Thanks to @​illume. #​4942
Increased pkg/config test coverage from 74.2% to 83.9% by adding unit tests for session TTL validation and default-application logic. Thanks to @​Athang69. #​5139
Removed the Create button from pod lists inside parent resource detail views (e.g. Jobs, Deployments) where adding pods directly is not valid. Thanks to @​kannon92. #​5136
CRD list fetch errors in the sidebar now use console.error instead of console.log, ensuring correct severity in browser developer tools. Thanks to @​NAME-ASHWANIYADAV. #​5128
Added unit tests for the Helm handler, bringing test coverage from 0% to 90.8% and improving backend reliability. Thanks to @​Athang69. #​5124
Replaced context.TODO() with explicit context.Background() in the drainNode goroutine, fixing improper context propagation in the backend. Thanks to @​itvi-1234. #​5095
Removed leftover development console.log statements from the Backstage integration to keep the browser console clean in production. Thanks to @​itvi-1234. #​5094
Replaced loose as any casts with strictly typed Partial<Response> in auth tests, reducing the risk of silent false-positive test results. Thanks to @​itvi-1234. #​5075
Removed an outdated TODO comment in NameValueTable.tsx that no longer applies after the React 18 migration was completed. Thanks to @​itvi-1234. #​5064
Escaped URLs in library typedoc comments to prevent the parser from misinterpreting them. Thanks to @​ashu8912. #​5027
Fixed activity panel text alignment for the cluster indicator and corrected text colors for themes with custom primary colors such as 'Lights Out'. Thanks to @​sniok. #​5020
Added 13 Storybook stories for ResourceTableMultiActions, covering all meaningful selection states to aid frontend development and testing. Thanks to @​mystic-06. Also thanks to @​illume for reporting the issue. #​4971
Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states. Thanks to @​Dharmiksarvaiya24. Also thanks to @​illume for reporting the issue. #​5171
Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states. Thanks to @​vishnukothakapu. Also thanks to @​illume for reporting the issue. #​5166





🧩 Official Plugin releases




Container image: 🐳 ghcr.io/headlamp-k8s/headlamp:v0.42.0
Desktop Apps:

⚠️ Important: Information on warnings from Mac and Windows when running Headlamp unsigned apps.

🐧 Flatpak / Linux (AMD64)
🐧 Linux AppImage AMD64, ARM64, ARMv7l
🐧 Linux Tarball AMD64, ARM64, ARMv7l
🐧 Debian / Linux AMD64
🍏 Mac (AMD64)
🍏 Mac (ARM/M1)
🟦 Windows (AMD64)

headlamp-k8s/headlamp (headlamp-k8s/headlamp)

v0.42.0: 0.42.0

Compare Source

Hitch hikers guide to Headlamp 0.42.0

Deep-link support was added for pod terminals (?view=exec) and log views (?view=logs), letting users bookmark or share direct links to specific UI states. Resources can now be searched by label in all list views, the Log Viewer gains a severity filter dropdown, and a delete button has been added directly to the plugins list. Node Details received two new sections for pod capacity usage and resource allocation, and the Resource Map now renders status badges on plugin-provided nodes and includes previously missing configuration resources. GRPCRoute details reach full parity with HTTPRoute, and a guided form-based resource creation UI (starting with Pods) is now available alongside the YAML editor.

On the reliability side, a silent cache desync that caused permanently stale cluster data was fixed, along with a lock-order inversion deadlock that could freeze WebSocket connections under load, and a wave of React hooks rule violations across more than a dozen frontend components. Several backend panics were fixed in port-forwarding, kubeconfig parsing, cache key generation, and Helm chart type handling, alongside debounced log aggregation to prevent UI freezes in All Pods mode. Security hardening includes path traversal prevention in the service proxy and dependency bumps.

Enhancements (part 1)

Enhancements
Added deep-link support for pod exec via ?view=exec query parameter, letting users bookmark or share direct links to open a terminal into a specific pod. Thanks to @​justinas-wix. #​4941
Added a hidden 'labels' column to all resource list views so users can search resources by label (e.g. app=test) using the existing search bar. Thanks to @​sniok. Also thanks to @​illume for reporting the issue. #​5035
Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources. Thanks to @​mahmoudmagdy1-1. #​5349
Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit. Thanks to @​Vikaspal8923. Also thanks to @​jimmyjones2 for reporting the issue. #​5039
Extended a8r.io annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource. Thanks to @​mastermaxx03. #​5007
Added a severity filter dropdown to the Log Viewer, letting users quickly filter logs by level (ERROR, WARN, INFO, DEBUG) to cut through noisy streams. Thanks to @​Utkarshpandey0001. #​5338
Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first. Thanks to @​rickbrouwer. #​5314
Added ?view=logs deep-link support on Deployment, ReplicaSet, DaemonSet, and StatefulSet detail pages, letting users open the logs view directly from a URL. Thanks to @​bhat-ganesh. #​5312
Added missing configuration resources to the Resource Map graph so they are now fully visible in the Configuration group. Thanks to @​vishnukothakapu. #​5223
Added a hidden 'labels' column to all resource list views so users can search resources by label (e.g. app=test) using the existing search bar.
frontend: ResourceTable: Add new 'labels' column to all list views to allow searching by label
Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first.
frontend: Add delete button to plugin list
Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow.
frontend: CreateResourceForm: Add resource form create feature and CreateResourceForm





Enhancements (part 2)

Enhancements
Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats. Thanks to @​Vikaspal8923. Also thanks to @​jimmyjones2 for reporting the issue. #​5169
Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying. Thanks to @​Vikaspal8923. #​5018
Added a background janitor to evict expired Kubernetes clientsets, fixing an unbounded memory leak that could cause OOM crashes on busy clusters. Thanks to @​Joshna907. #​5286
Wrapped the Reconnect button label in LogViewer with the translation function and added the key to all 12 locale files, enabling full i18n support. Thanks to @​NAME-ASHWANIYADAV. #​5176
GRPCRoute details view now shows rules, hostnames, matches, backendRefs, and filters, bringing it to full parity with HTTPRoute details. Thanks to @​NAME-ASHWANIYADAV. #​5174
Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources.
docs: frontend: resourceMap: Add status support for map nodes
Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats.
Screenshot from 2026-04-20 14-32-54
Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view.
Screenshot from 2026-04-12 19-27-27
Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results.
Screenshot from 2026-03-25 13-18-28





Enhancements (part 3)

Enhancements
Added a toast notification when port-forwarding fails so users are explicitly informed instead of errors being silently logged to the console. Thanks to @​itvi-1234. #​5145
Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view. Thanks to @​Vikaspal8923. #​5126
Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views. Thanks to @​Vikaspal8923. #​5119
Added service.extraServicePorts and matching Ingress backend support to the Helm chart, allowing sidecar containers to be exposed without a separate Service resource. Thanks to @​Soli0222. #​5078
Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics. Thanks to @​itvi-1234. #​5048
Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow. Thanks to @​vyncent-t. #​5044
Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance. Thanks to @​itvi-1234. Also thanks to @​trashhead for reporting the issue. #​4956
Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit.
Screenshot from 2026-04-02 23-21-10
Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying.
frontend: EditorDialog :add yaml diff view in editor to compare original manifest against edited
Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views.
Screenshot from 2026-04-11 13-59-36
Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance.
frontend:Show container port name if available





Enhancements (part 4)

Enhancements
Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior. Thanks to @​ChayanDass. Also thanks to @​joaquimrocha for reporting the issue. #​4931
Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results. Thanks to @​Vikaspal8923. #​4965
Extended a8r.io annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource.
frontend: App: resource: Extend a8r.io annotation support to all Kubernetes resources
Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics.
frontend: nodes: Add resource allocation summary in Node Details
Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior.
frontend: align duration formatting with apimachinery logic





🐞 Bug fixes (part 1)

Bug fixes
Fixed pod status icon remaining stuck on warning in list view after a pod becomes healthy, without requiring a page refresh. Thanks to @​nidhi-9900. Also thanks to @​nullzone for reporting the issue. #​5059
Fixed performance regressions in the resource map by properly memoizing values to avoid redundant graph rebuilds, improving responsiveness on larger clusters. Thanks to @​sniok. Also thanks to @​itpick for reporting the issue. #​4961
Fixed a silent cache desync bug where a dead watcher locked the registry and prevented cache invalidation, causing the UI to show permanently stale cluster data. Thanks to @​KumarADITHYA123. #​5163
Removed the --no-quarantine flag from the macOS Homebrew installation command to reflect the current recommended install process. Thanks to @​saivenkateshi. Also thanks to @​hyorimlee for reporting the issue. #​4943
Debounced log aggregation in All Pods mode to eliminate UI freezes when streaming large volumes of logs. Thanks to @​Utkarshpandey0001. #​5320
Fixed react-hooks/rules-of-hooks violations in secret/Details.tsx by extracting the inline section helper into a proper React component, preventing potential hook-related bugs. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5266
Fixed missing data columns (Status, Replicas, etc.) in CustomResourceDetails for core resources whose apiVersion contains no slash, such as Nodes. Thanks to @​Joshna907. #​5259
Fixed react-hooks/rules-of-hooks violations in GraphView.tsx by moving hook calls unconditionally into function bodies, preventing potential rendering bugs. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5252
Fixed react-hooks/rules-of-hooks violations in configmap/Details.tsx by extracting the inline section helper into a proper React component, also resolving a variable shadowing issue in map callbacks. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5203
Fixed a React hooks violation in VolumeDetails where useTranslation was called after an early return, preventing potential runtime errors. Thanks to @​itvi-1234. Also thanks to @​illume for reporting the issue. #​5201





🐞 Bug fixes (part 2)

Bug fixes
Replaced fmt.Printf calls with structured logging in ListPlugins, improving log consistency and simplifying plugin-related test reliability. Thanks to @​NAME-ASHWANIYADAV. #​5072
Fixed a crash on the Namespace details page when ResourceQuota status is absent immediately after creation, preventing blank or broken quota displays. Thanks to @​Vikaspal8923. #​4990
Fixed heading hierarchy in the ReleaseNotes story so h3 elements are always preceded by proper h1/h2 ancestors, ensuring correct document structure. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5356
Added missing aria-controls attribute to EditorDialog action buttons, improving accessibility for assistive technology users. Thanks to @​Utkarshpandey0001. #​5355
Fixed a nil-pointer panic in port-forwarding that could crash the backend when a port-forward process exited gracefully and its error channel was closed. Thanks to @​Joshna907. #​5342
Resource map breadcrumbs now pass apiGroup alongside kind to icon lookups, so resources like apps/ReplicaSet display their correct icon instead of the generic cube. Thanks to @​mahmoudmagdy1-1. #​5332
Fixed the "Use evict for pod deletion" setting not persisting as disabled across reloads by replacing a logical OR with nullish coalescing so an explicit false is correctly saved. Thanks to @​Utkarshpandey0001. #​5328
Fixed orphaned goroutines and lingering port listeners in the port-forwarding module, preventing memory leaks and stuck local ports after a port-forward is deleted or times out. Thanks to @​Joshna907. #​5316
Fixed a lock-order inversion deadlock in the multiplexer that could freeze WebSocket connections under concurrent load. Thanks to @​KumarADITHYA123. #​5307





🐞 Bug fixes (part 3)

Bug fixes
Fixed corrupted Kubernetes cache keys caused by incorrect parsing of internal URLs, preventing cache pollution and key collisions. Thanks to @​Joshna907. #​5292
Silent errors in advanced search query parsing and filter evaluation are now logged via console.debug, making failures easier to diagnose. Thanks to @​NAME-ASHWANIYADAV. #​5284
Fixed a double-response bug in InstallRelease where execution continued after sending a 500 error, preventing corrupted HTTP responses. Thanks to @​NAME-ASHWANIYADAV. #​5277
Fixed a crash (white screen) caused by malformed JWTs during decoding, improving stability for plugins using the getUserInfo utility. Thanks to @​Joshna907. #​5270
Fixed npm run star so developers can load Headlamp in dev mode on Windows without repeated reloads or long waits. Thanks to @​illume. #​5256
Fixed a React hooks-rules violation in useKubeObject where WebSocket hooks were called conditionally, ensuring reliable WebSocket behaviour regardless of feature flags. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5253
Fixed a React hooks-rules violation in the router by extracting an inline arrow function into a named component, preventing unpredictable hook behaviour during routing. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5251
Fixed a React hooks-rules violation in usePrefersColorScheme by moving useState and useEffect above the early return, ensuring consistent color-scheme detection. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5250
Fixed a React hooks-rules violation in useWatchKubeObjectLists by calling both sub-hooks unconditionally, preventing potential runtime errors from conditional hook calls. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5249
Fixed the AuthChooser AnError Storybook story to always render a non-empty DialogTitle, eliminating an empty h1 accessibility issue. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5239





🐞 Bug fixes (part 4)

Bug fixes
Fixed a fatal UI crash caused by malformed or empty sidebar data in browser localStorage during Redux state initialization. Thanks to @​Joshna907. #​5235
Fixed React hooks rule violations in the PortForward component that could cause unpredictable rendering behavior. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5231
Pinned the gcb-docker-gcloud Cloud Build image by digest to prevent CI failures caused by garbage-collected tags. Thanks to @​skoeva. #​5229
Fixed a server crash that occurred when installing or upgrading unsupported Helm chart types such as library charts. Thanks to @​KumarADITHYA123. #​5217
Fixed a backend panic in cache invalidation that crashed the server when a GenerateKey error was silently ignored on short API paths. Thanks to @​KumarADITHYA123. #​5215
Fixed React hooks rule violations in CustomResourceListTable where useMemo calls after an early return caused unpredictable rendering. Thanks to @​aabhinavvvvvvv. Also thanks to @​illume for reporting the issue. #​5213
Renamed withEnv decorator to PascalCase in AppContainer stories, fixing rules-of-hooks ESLint violations. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5210
Renamed story component functions to PascalCase in PluginSettingsDetails stories, resolving rules-of-hooks ESLint errors. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5209
Moved useCallback before the early return in DialogTitle and added missing focusTitle dependency, fixing rules-of-hooks violations. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5208
Moved all hook calls before the early return in RollbackButton, fixing rules-of-hooks violations and improving TypeScript type narrowing. Thanks to @​jedbillyb. Also thanks to @​illume for reporting the issue. #​5206





🐞 Bug fixes (part 5)

Bug fixes
Fixed and re-enabled a previously skipped multiplexer test, improving test suite reliability. Thanks to @​sniok. #​5179
Removed an unsafe as any TypeScript cast in VersionButton by providing an explicit generic type to useQuery, improving type safety. Thanks to @​itvi-1234. #​5164
Fixed a backend panic crash in GetAPIGroup caused by index out of range errors when Kubernetes discovery paths were shortened or truncated. Thanks to @​KumarADITHYA123. #​5161
Fixed a bug where a stale global namespace filter could hide results in namespace-scoped views when no namespace filter should apply. Thanks to @​Vikaspal8923. Also thanks to @​jimmyjones2 for reporting the issue. #​5157
Fixed Helm repository and chart handler error behavior, including proper 404 responses on missing repos and safer lock error handling. Thanks to @​Athang69. #​5149
Fixed Content-Type: application/json header being silently dropped in 7 Helm release API handlers, ensuring clients receive correct response metadata. Thanks to @​NAME-ASHWANIYADAV. #​5147
Fixed a server panic caused by bare type assertions in kubeconfig parsing when processing malformed kubeconfig files. Thanks to @​KumarADITHYA123. #​5138
Added missing Pi and P memory unit support to normalizeUnit and corrected off-by-one multipliers for Ei and E, ensuring accurate Kubernetes quantity parsing. Thanks to @​KumarADITHYA123. #​5135
Fixed a bug in k8cache where Kubernetes resources older than 60 seconds silently skipped cache invalidation on Update or Delete, preventing stale data from being cleared. Thanks to @​KumarADITHYA123. #​5130
Removed debug console.log statements and fixed a typo in the frontend, keeping the production console clean. Thanks to @​NAME-ASHWANIYADAV. #​5129





🐞 Bug fixes (part 6)

Bug fixes
Removed an unnecessary debug console.log from the clusterRequests remove() function to keep the production console clean. Thanks to @​NAME-ASHWANIYADAV. #​5127
Fixed backend linting on Windows with LF line endings and compatible Makefile targets, replaced deprecated fake clientset, and bumped helm/v3 to 3.20.2. Thanks to @​skoeva. #​5121
Long cluster names in the Home page table now expand dynamically and show the full name on hover, improving readability. Thanks to @​vyncent-t. Also thanks to @​hpschry and @​jimmyjones2 for reporting the issue. #​5109
Fixed resourceFieldRef env vars failing to resolve for admission-injected sidecar containers like istio-proxy, eliminating 'Container not found' errors. Thanks to @​itvi-1234. Also thanks to @​vmozghovyi for reporting the issue. #​5107
Fixed helm route auth token handling to work unconditionally and added regression tests for helm auth and RouteSwitcher key uniqueness. Thanks to @​Athang69. Also thanks to @​v0lkan for reporting the issue. #​5105
Replaced console.log with console.error in catch blocks so exceptions are correctly flagged in browser DevTools and log monitoring tools. Thanks to @​NAME-ASHWANIYADAV. #​5104
Users now see an error notification when cluster deletion fails instead of silently receiving no feedback. Thanks to @​NAME-ASHWANIYADAV. #​5102
Fixed the ResourceTable Name Search Storybook example so the search input is correctly prefilled and table filtering works as expected. Thanks to @​Vikaspal8923. Also thanks to @​sniok for reporting the issue. #​5100
Updated npm dependencies via audit to address known vulnerabilities, with Electron upgraded to the latest version. Thanks to @​sniok. #​5097
Fixed a crash on CronJob list and details pages when spec.suspend is absent from the API response, preventing a TypeError on undefined. Thanks to @​Athang69. Also thanks to @​RobertSkawinski for reporting the issue. #​5085





🐞 Bug fixes (part 7)

Bug fixes
Helm chart now automatically mounts an emptyDir volume at /tmp when readOnlyRootFilesystem is enabled, fixing deployment failures in restricted security contexts. Thanks to @​YotamKorah. Also thanks to @​wkbrd for reporting the issue. #​5079
Removed a leftover console.log debug statement from HTTPRouteDetails, eliminating unnecessary noise in the browser console. Thanks to @​NAME-ASHWANIYADAV. #​5074
Fixed double-write HTTP responses and missing headers in Helm backend handlers, ensuring correct and well-formed API responses. Thanks to @​NAME-ASHWANIYADAV. #​5056
Fixed typos and improved error logging in OauthPopup by correcting 'occured' to 'occurred' and using console.error for proper error severity reporting. Thanks to @​NAME-ASHWANIYADAV. #​5054
Fixed a copy-paste bug where GRPCRoute used the wrong section ID (httproute-parentrefs) and removed leftover debug console.log statements from production code. Thanks to @​NAME-ASHWANIYADAV. #​5052
Cluster action error notifications now surface detailed Kubernetes API error messages instead of generic failure text, making it easier to diagnose rejected operations like ValidatingAdmissionPolicy failures. Thanks to @​itvi-1234. Also thanks to @​jimmyjones2 for reporting the issue. #​5047
Fixed broken app startup after npm install due to an esbuild error by regenerating package-lock.json, updating frontend snapshots, and reverting the merge commit check. Thanks to @​illume. #​5029
Fixed a Map view bug where resources with the same name in different namespaces were incorrectly linked by adding namespace checks to resource relation matching. Thanks to @​itvi-1234. Also thanks to @​rassie for reporting the issue. #​5006
Fixed AppImage crash on Linux caused by chrome-sandbox permission issues by disabling the setuid sandbox in AppImage environments. Thanks to @​kunaldevsahu. Also thanks to @​eftewuer for reporting the issue. #​4996
Fixed truncation of long Kubernetes condition names (e.g. PodReadyToStartContainers) in resource detail Conditions tables so full names are always visible. Thanks to @​itvi-1234. #​4967
Fixed pod metrics matching to use both name and namespace, preventing incorrect CPU/memory stats for pods sharing the same name across different namespaces. Thanks to @​Utkarshpandey0001. #​4933
Fixed GlobalSearch bar visibility on dark or colored navbars by adding explicit backgrounds, ensuring the search field is visible at all zoom levels and themes. Thanks to @​skoeva. #​4930





🔒 Security

Security improvements
Hardened service proxy URI validation to block path traversal and protocol-relative URLs that could redirect requests to arbitrary hosts. Thanks to @​skoeva. #​5299
Bumped multiple app, plugin, and backend dependencies including storybook, i18next-fs-backend, xmldom, and headlamp-plugin to keep packages up to date and fix build issues. Thanks to @​skoeva. #​5122
Bumped backend and headlamp-plugin dependencies including OpenTelemetry, go-jose, and Vite to keep packages up to date and secure. Thanks to @​skoeva. #​5108
Validate host header to protect desktop and headless users. Thanks to @​illume. Also thanks to Koda Reef for reporting the issue. #​5419
Updated SECURITY.md to reference the kubernetes-sigs security policy, making it easier to find for contributors browsing the repo. Thanks to @​illume. Also thanks to @​rassie for reporting the issue. #​5081
Bumped multiple dependencies including tar, flatted, typedoc, body-parser, undici, and others to address security and compatibility updates. Thanks to @​skoeva. #​4948
Bumped tar dependency from 7.5.10 to 7.5.11 in the sidebar plugin example to include a symlink escape fix. . #​4880





Accessibility

Accessibility improvements
Replaced the accessible-name violation caused by role=button on a label element in DropZoneBox with a ref-based file input trigger. Thanks to @​skoeva. #​5272
Unified sorting icons in SimpleTable to match ResourceTable's MUI arrow style and added tooltips to sorting buttons for better accessibility. Thanks to @​Utkarshpandey0001. #​4952
Fixed heading hierarchy in the ReleaseNotesModal story so the h3 fixture is properly nested under h1/h2 ancestors, and updated the storyshot snapshot to match. Thanks to @​iashutoshyadav. Also thanks to @​illume for reporting the issue. #​5315





📖 Documentation

Documentation improvements
Deduplicated nodes and edges in the resource map graph after merging sources, eliminating duplicate elements that could cause rendering issues. Thanks to @​mahmoudmagdy1-1. #​5400
Added NKP (Nutanix Kubernetes Platform) to the supported platforms documentation, confirming it works with Headlamp out of the box. Thanks to @​jlnhnng. #​5173
Added Linode Kubernetes Engine (LKE) to the list of tested and supported platforms in the documentation. Thanks to @​ruckus-voxi. #​5116
Added a tutorial showing how to build a WhoAmI plugin that displays user identity in the cluster sidebar using the SelfSubjectReview API. Thanks to @​yolossn. #​5080
Fixed multiple documentation issues including a grammatical error, stale Code of Conduct link, duplicate sections, outdated dependency versions, and broken internal links. Thanks to @​Athang69. #​5060
Added documentation for MCP (Model Context Protocol) support to the Headlamp learn section, helping users discover and configure the feature. Thanks to @​vyncent-t. #​4998
Added HolmesGPT documentation to the Learn section, making it easier to find and use HolmesGPT guidance within the docs. Thanks to @​vyncent-t. #​4997





💻 Development (part 1)

Development improvements
Added end-to-end tests verifying the Prometheus plugin is correctly bundled and its settings page is accessible in the UI. Thanks to @​illume. #​5362
Storybook mocks now return HTTP 404 for deprecated v1beta1 CRD endpoints, better reflecting real cluster behavior in component stories. Thanks to @​mystic-06. Also thanks to @​skoeva for reporting the issue. #​5040
Host header validation added on loopback listeners to reduce the risk of DNS rebinding attacks against the local backend server. Thanks to @​illume. #​5419
Bumped Go to 1.25.9 to address stdlib CVEs, improving the security of the backend. Thanks to @​yolossn. #​5410
Kubernetes volume status phases such as "Bound" and "Pending" are now translated, so they respect the user's selected locale instead of always appearing in English. Thanks to @​Joshna907. #​5331
Core API discovery failures (e.g. due to timeouts or RBAC issues) are now logged instead of silently swallowed, making it easier to diagnose missing resources in the UI. Thanks to @​Joshna907. #​5329
Switched plugin cache error checks to use errors.Is() so wrapped cache.ErrNotFound errors are correctly detected and plugin listing behaves reliably. Thanks to @​NAME-ASHWANIYADAV. #​5326
Reverted Storybook stories for AddCluster component that were causing CI failures. Thanks to @​skoeva. #​5301
Silent errors in terminal shell detection functions are now logged via console.debug, making node shell connection failures easier to debug. Thanks to @​NAME-ASHWANIYADAV. #​5282
Replaced direct Helm sentinel error comparisons with errors.Is, ensuring wrapped errors are correctly detected in release-not-found checks. Thanks to @​NAME-ASHWANIYADAV. #​5280
Reverted a namespace filter reset change that caused crashes when navigating to namespace views with an active namespace filter selected. Thanks to @​sniok. #​5271
Added an i18n-check step to CI to automatically catch translation file regressions as dependencies and code are updated. Thanks to @​illume. #​5257
Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states.
frontend(KubeConfigLoader): Add Storybook stories with all component …





💻 Development (part 2)

Development improvements
Refactored Event hooks into standalone exported functions, fixing React hooks-rules violations and making useEventListForClusters and useEventWarningList available to consumers. Thanks to @​Utkarshpandey0001. Also thanks to @​illume for reporting the issue. #​5255
Replaced log.Printf with the structured logger in the telemetry package, aligning warning output with the rest of the backend. Thanks to @​NAME-ASHWANIYADAV. #​5221
Added Copilot PR review instructions to automate common review feedback, helping enforce project standards more consistently. Thanks to @​joaquimrocha. #​4937
Added console.debug logging to previously silent catch blocks across frontend components, making errors visible during debugging. Thanks to @​NAME-ASHWANIYADAV. #​5220
Replaced hardcoded context.TODO() in the service proxy with proper request-scoped context, enabling correct cancellation and deadline propagation. Thanks to @​NAME-ASHWANIYADAV. #​5219
Replaced an incorrectly imported MUI icon with the Iconify equivalent in the Table component, restoring consistent icon rendering. Thanks to @​sniok. #​5178
Replaced console.log with console.debug for IndexedDB operational messages, keeping them available in development while hiding them in production. Thanks to @​NAME-ASHWANIYADAV. #​5177
Removed 54 lines of unreachable dead code from UpdatePopup and hardened window.open usage, simplifying the component and improving safety. Thanks to @​NAME-ASHWANIYADAV. #​5175
Expanded test coverage for the k8cache package, covering previously untested branches to improve backend reliability. Thanks to @​Athang69. #​5172
Upgraded Node.js to v22.x LTS across all CI workflows and package.json engines fields to stay ahead of Node 20 end-of-life. Thanks to @​sniok. #​5170
Removed a legacy Webpack-specific workaround from ErrorPage, cleaning up the component now that Headlamp fully uses Vite for SVG imports. Thanks to @​itvi-1234. #​5143
Enabled eslint-plugin-react-hooks lint rules in the frontend to surface hard-to-debug React hook mistakes earlier in development. Thanks to @​sniok. #​5155
Frontend lint warnings are now enforced as CI-blocking errors, with pre-existing violations suppressed, improving long-term code quality. Thanks to @​illume. #​5196
Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states.
Screenshot 2026-04-27 at 6 58 04 PM





💻 Development (part 3)

Development improvements
Added a README for the Headlamp Releaser CLI tool documenting prerequisites, usage, and how it automates version bumping, tagging, and publishing. Thanks to @​illume. #​4942
Increased pkg/config test coverage from 74.2% to 83.9% by adding unit tests for session TTL validation and default-application logic. Thanks to @​Athang69. #​5139
Removed the Create button from pod lists inside parent resource detail views (e.g. Jobs, Deployments) where adding pods directly is not valid. Thanks to @​kannon92. #​5136
CRD list fetch errors in the sidebar now use console.error instead of console.log, ensuring correct severity in browser developer tools. Thanks to @​NAME-ASHWANIYADAV. #​5128
Added unit tests for the Helm handler, bringing test coverage from 0% to 90.8% and improving backend reliability. Thanks to @​Athang69. #​5124
Replaced context.TODO() with explicit context.Background() in the drainNode goroutine, fixing improper context propagation in the backend. Thanks to @​itvi-1234. #​5095
Removed leftover development console.log statements from the Backstage integration to keep the browser console clean in production. Thanks to @​itvi-1234. #​5094
Replaced loose as any casts with strictly typed Partial<Response> in auth tests, reducing the risk of silent false-positive test results. Thanks to @​itvi-1234. #​5075
Removed an outdated TODO comment in NameValueTable.tsx that no longer applies after the React 18 migration was completed. Thanks to @​itvi-1234. #​5064
Escaped URLs in library typedoc comments to prevent the parser from misinterpreting them. Thanks to @​ashu8912. #​5027
Fixed activity panel text alignment for the cluster indicator and corrected text colors for themes with custom primary colors such as 'Lights Out'. Thanks to @​sniok. #​5020
Added 13 Storybook stories for ResourceTableMultiActions, covering all meaningful selection states to aid frontend development and testing. Thanks to @​mystic-06. Also thanks to @​illume for reporting the issue. #​4971
Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states. Thanks to @​Dharmiksarvaiya24. Also thanks to @​illume for reporting the issue. #​5171
Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states. Thanks to @​vishnukothakapu. Also thanks to @​illume for reporting the issue. #​5166





🧩 Official Plugin releases




Container image: 🐳 ghcr.io/headlamp-k8s/headlamp:v0.42.0
Desktop Apps:

⚠️ Important: Information on warnings from Mac and Windows when running Headlamp unsigned apps.

🐧 Flatpak / Linux (AMD64)
🐧 Linux AppImage AMD64, ARM64, ARMv7l
🐧 Linux Tarball AMD64, ARM64, ARMv7l
🐧 Debian / Linux AMD64
🍏 Mac (AMD64)
🍏 Mac (ARM/M1)
🟦 Windows (AMD64)


Configuration

📅 Schedule: (in timezone America/Chicago)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | ghcr.io/headlamp-k8s/headlamp | minor | `v0.41.0` → `v0.42.0` | | [headlamp](https://headlamp.dev/) ([source](https://github.com/kubernetes-sigs/headlamp)) | minor | `0.41.0` → `0.42.0` | | [headlamp-k8s/headlamp](https://github.com/headlamp-k8s/headlamp) | minor | `0.41.0` → `v0.42.0` | --- ### Release Notes <details> <summary>kubernetes-sigs/headlamp (headlamp)</summary> ### [`v0.42.0`](https://github.com/kubernetes-sigs/headlamp/releases/tag/v0.42.0): 0.42.0 [Compare Source](https://github.com/kubernetes-sigs/headlamp/compare/v0.41.0...v0.42.0) ### Hitch hikers guide to Headlamp 0.42.0 Deep-link support was added for pod terminals (?view=exec) and log views (?view=logs), letting users bookmark or share direct links to specific UI states. Resources can now be searched by label in all list views, the Log Viewer gains a severity filter dropdown, and a delete button has been added directly to the plugins list. Node Details received two new sections for pod capacity usage and resource allocation, and the Resource Map now renders status badges on plugin-provided nodes and includes previously missing configuration resources. GRPCRoute details reach full parity with HTTPRoute, and a guided form-based resource creation UI (starting with Pods) is now available alongside the YAML editor. On the reliability side, a silent cache desync that caused permanently stale cluster data was fixed, along with a lock-order inversion deadlock that could freeze WebSocket connections under load, and a wave of React hooks rule violations across more than a dozen frontend components. Several backend panics were fixed in port-forwarding, kubeconfig parsing, cache key generation, and Helm chart type handling, alongside debounced log aggregation to prevent UI freezes in All Pods mode. Security hardening includes path traversal prevention in the service proxy and dependency bumps. #### ✨ Enhancements (part 1) | Enhancements | | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Added deep-link support for pod exec via `?view=exec` query parameter, letting users bookmark or share direct links to open a terminal into a specific pod. | Thanks to [@&#8203;justinas-wix](https://github.com/justinas-wix). [#&#8203;4941](https://github.com/kubernetes-sigs/headlamp/issues/4941) | | Added a hidden 'labels' column to all resource list views so users can search resources by label (e.g. `app=test`) using the existing search bar. | Thanks to [@&#8203;sniok](https://github.com/sniok). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5035](https://github.com/kubernetes-sigs/headlamp/issues/5035) | | Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources. | Thanks to [@&#8203;mahmoudmagdy1-1](https://github.com/mahmoudmagdy1-1). [#&#8203;5349](https://github.com/kubernetes-sigs/headlamp/issues/5349) | | Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5039](https://github.com/kubernetes-sigs/headlamp/issues/5039) | | Extended `a8r.io` annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource. | Thanks to [@&#8203;mastermaxx03](https://github.com/mastermaxx03). [#&#8203;5007](https://github.com/kubernetes-sigs/headlamp/issues/5007) | | Added a severity filter dropdown to the Log Viewer, letting users quickly filter logs by level (ERROR, WARN, INFO, DEBUG) to cut through noisy streams. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5338](https://github.com/kubernetes-sigs/headlamp/issues/5338) | | Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first. | Thanks to [@&#8203;rickbrouwer](https://github.com/rickbrouwer). [#&#8203;5314](https://github.com/kubernetes-sigs/headlamp/issues/5314) | | Added ?view=logs deep-link support on Deployment, ReplicaSet, DaemonSet, and StatefulSet detail pages, letting users open the logs view directly from a URL. | Thanks to [@&#8203;bhat-ganesh](https://github.com/bhat-ganesh). [#&#8203;5312](https://github.com/kubernetes-sigs/headlamp/issues/5312) | | Added missing configuration resources to the Resource Map graph so they are now fully visible in the Configuration group. | Thanks to [@&#8203;vishnukothakapu](https://github.com/vishnukothakapu). [#&#8203;5223](https://github.com/kubernetes-sigs/headlamp/issues/5223) | ##### Added a hidden 'labels' column to all resource list views so users can search resources by label (e.g. `app=test`) using the existing search bar. <img width="1361" height="471" alt="frontend: ResourceTable: Add new 'labels' column to all list views to allow searching by label" src="https://github.com/user-attachments/assets/81e57f3f-5124-41e2-9e81-b68b31bc6bc8" /> ##### Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first. <img width="1556" height="347" alt="frontend: Add delete button to plugin list" src="https://github.com/user-attachments/assets/58dc151b-b211-4a00-bebb-71e3e43f7875" /> ##### Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow. <img width="2104" height="1021" alt="frontend: CreateResourceForm: Add resource form create feature and CreateResourceForm" src="https://github.com/user-attachments/assets/1c871ccd-8d59-4748-89f1-f8934df991d6" /> <br><br> <br><br> #### ✨ Enhancements (part 2) | Enhancements | | | :------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5169](https://github.com/kubernetes-sigs/headlamp/issues/5169) | | Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;5018](https://github.com/kubernetes-sigs/headlamp/issues/5018) | | Added a background janitor to evict expired Kubernetes clientsets, fixing an unbounded memory leak that could cause OOM crashes on busy clusters. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5286](https://github.com/kubernetes-sigs/headlamp/issues/5286) | | Wrapped the `Reconnect` button label in `LogViewer` with the translation function and added the key to all 12 locale files, enabling full i18n support. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5176](https://github.com/kubernetes-sigs/headlamp/issues/5176) | | GRPCRoute details view now shows rules, hostnames, matches, backendRefs, and filters, bringing it to full parity with HTTPRoute details. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5174](https://github.com/kubernetes-sigs/headlamp/issues/5174) | ##### Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources. <img width="1800" height="844" alt="docs: frontend: resourceMap: Add status support for map nodes" src="https://github.com/user-attachments/assets/1465f71a-e020-49f4-96d0-ac57427f398a" /> ##### Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats. <img width="3072" height="1728" alt="Screenshot from 2026-04-20 14-32-54" src="https://github.com/user-attachments/assets/5e5cb349-00e2-45f1-8b88-51d752acd880" /> ##### Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view. <img width="3072" height="1728" alt="Screenshot from 2026-04-12 19-27-27" src="https://github.com/user-attachments/assets/c339986b-cb9d-4c91-a2ad-e90add022e97" /> ##### Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results. <img width="2495" height="1390" alt="Screenshot from 2026-03-25 13-18-28" src="https://github.com/user-attachments/assets/bcac7e08-b364-4f2c-bbb0-ff4092fcbe03" /> <br><br> <br><br> #### ✨ Enhancements (part 3) | Enhancements | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Added a toast notification when port-forwarding fails so users are explicitly informed instead of errors being silently logged to the console. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5145](https://github.com/kubernetes-sigs/headlamp/issues/5145) | | Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;5126](https://github.com/kubernetes-sigs/headlamp/issues/5126) | | Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;5119](https://github.com/kubernetes-sigs/headlamp/issues/5119) | | Added `service.extraServicePorts` and matching Ingress backend support to the Helm chart, allowing sidecar containers to be exposed without a separate Service resource. | Thanks to [@&#8203;Soli0222](https://github.com/Soli0222). [#&#8203;5078](https://github.com/kubernetes-sigs/headlamp/issues/5078) | | Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5048](https://github.com/kubernetes-sigs/headlamp/issues/5048) | | Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). [#&#8203;5044](https://github.com/kubernetes-sigs/headlamp/issues/5044) | | Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;trashhead](https://github.com/trashhead) for reporting the issue. [#&#8203;4956](https://github.com/kubernetes-sigs/headlamp/issues/4956) | ##### Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit. <img width="3066" height="1535" alt="Screenshot from 2026-04-02 23-21-10" src="https://github.com/user-attachments/assets/5ab9d7cc-4621-4b4b-bbc7-c1868bd4b9c2" /> ##### Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying. <img width="3071" height="1555" alt="frontend: EditorDialog :add yaml diff view in editor to compare original manifest against edited" src="https://github.com/user-attachments/assets/0b197298-e8f5-4045-85e4-92113d6397dc" /> ##### Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views. <img width="3072" height="1728" alt="Screenshot from 2026-04-11 13-59-36" src="https://github.com/user-attachments/assets/b652251d-1df3-40c4-8f79-1c1f665fd3a9" /> ##### Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance. <img width="761" height="740" alt="frontend:Show container port name if available" src="https://github.com/user-attachments/assets/a352f8ab-a631-48e4-9cfe-b0fc97e0d02a" /> <br><br> <br><br> #### ✨ Enhancements (part 4) | Enhancements | | | :-------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior. | Thanks to [@&#8203;ChayanDass](https://github.com/ChayanDass). Also thanks to [@&#8203;joaquimrocha](https://github.com/joaquimrocha) for reporting the issue. [#&#8203;4931](https://github.com/kubernetes-sigs/headlamp/issues/4931) | | Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;4965](https://github.com/kubernetes-sigs/headlamp/issues/4965) | ##### Extended `a8r.io` annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource. <img width="2880" height="1130" alt="frontend: App: resource: Extend a8r.io annotation support to all Kubernetes resources" src="https://github.com/user-attachments/assets/9a7b1e3d-36e4-4cb6-a141-8e24d45404fe" /> ##### Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics. <img width="1803" height="964" alt="frontend: nodes: Add resource allocation summary in Node Details" src="https://github.com/user-attachments/assets/feeb4036-3bdd-4dc1-8e84-61ba0d4749f3" /> ##### Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior. <img width="1695" height="847" alt="frontend: align duration formatting with apimachinery logic" src="https://github.com/user-attachments/assets/fec83d4b-b923-47d6-a19c-e10b1cf7ce7a" /> <br><br> <br><br> #### 🐞 Bug fixes (part 1) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Fixed pod status icon remaining stuck on warning in list view after a pod becomes healthy, without requiring a page refresh. | Thanks to [@&#8203;nidhi-9900](https://github.com/nidhi-9900). Also thanks to [@&#8203;nullzone](https://github.com/nullzone) for reporting the issue. [#&#8203;5059](https://github.com/kubernetes-sigs/headlamp/issues/5059) | | Fixed performance regressions in the resource map by properly memoizing values to avoid redundant graph rebuilds, improving responsiveness on larger clusters. | Thanks to [@&#8203;sniok](https://github.com/sniok). Also thanks to [@&#8203;itpick](https://github.com/itpick) for reporting the issue. [#&#8203;4961](https://github.com/kubernetes-sigs/headlamp/issues/4961) | | Fixed a silent cache desync bug where a dead watcher locked the registry and prevented cache invalidation, causing the UI to show permanently stale cluster data. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5163](https://github.com/kubernetes-sigs/headlamp/issues/5163) | | Removed the `--no-quarantine` flag from the macOS Homebrew installation command to reflect the current recommended install process. | Thanks to [@&#8203;saivenkateshi](https://github.com/saivenkateshi). Also thanks to [@&#8203;hyorimlee](https://github.com/hyorimlee) for reporting the issue. [#&#8203;4943](https://github.com/kubernetes-sigs/headlamp/issues/4943) | | Debounced log aggregation in All Pods mode to eliminate UI freezes when streaming large volumes of logs. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5320](https://github.com/kubernetes-sigs/headlamp/issues/5320) | | Fixed react-hooks/rules-of-hooks violations in secret/Details.tsx by extracting the inline section helper into a proper React component, preventing potential hook-related bugs. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5266](https://github.com/kubernetes-sigs/headlamp/issues/5266) | | Fixed missing data columns (Status, Replicas, etc.) in CustomResourceDetails for core resources whose apiVersion contains no slash, such as Nodes. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5259](https://github.com/kubernetes-sigs/headlamp/issues/5259) | | Fixed react-hooks/rules-of-hooks violations in GraphView\.tsx by moving hook calls unconditionally into function bodies, preventing potential rendering bugs. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5252](https://github.com/kubernetes-sigs/headlamp/issues/5252) | | Fixed react-hooks/rules-of-hooks violations in configmap/Details.tsx by extracting the inline section helper into a proper React component, also resolving a variable shadowing issue in map callbacks. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5203](https://github.com/kubernetes-sigs/headlamp/issues/5203) | | Fixed a React hooks violation in VolumeDetails where useTranslation was called after an early return, preventing potential runtime errors. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5201](https://github.com/kubernetes-sigs/headlamp/issues/5201) | <br><br> <br><br> #### 🐞 Bug fixes (part 2) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Replaced fmt.Printf calls with structured logging in ListPlugins, improving log consistency and simplifying plugin-related test reliability. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5072](https://github.com/kubernetes-sigs/headlamp/issues/5072) | | Fixed a crash on the Namespace details page when ResourceQuota status is absent immediately after creation, preventing blank or broken quota displays. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;4990](https://github.com/kubernetes-sigs/headlamp/issues/4990) | | Fixed heading hierarchy in the ReleaseNotes story so h3 elements are always preceded by proper h1/h2 ancestors, ensuring correct document structure. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5356](https://github.com/kubernetes-sigs/headlamp/issues/5356) | | Added missing `aria-controls` attribute to EditorDialog action buttons, improving accessibility for assistive technology users. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5355](https://github.com/kubernetes-sigs/headlamp/issues/5355) | | Fixed a nil-pointer panic in port-forwarding that could crash the backend when a port-forward process exited gracefully and its error channel was closed. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5342](https://github.com/kubernetes-sigs/headlamp/issues/5342) | | Resource map breadcrumbs now pass `apiGroup` alongside `kind` to icon lookups, so resources like `apps/ReplicaSet` display their correct icon instead of the generic cube. | Thanks to [@&#8203;mahmoudmagdy1-1](https://github.com/mahmoudmagdy1-1). [#&#8203;5332](https://github.com/kubernetes-sigs/headlamp/issues/5332) | | Fixed the "Use evict for pod deletion" setting not persisting as disabled across reloads by replacing a logical OR with nullish coalescing so an explicit `false` is correctly saved. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5328](https://github.com/kubernetes-sigs/headlamp/issues/5328) | | Fixed orphaned goroutines and lingering port listeners in the port-forwarding module, preventing memory leaks and stuck local ports after a port-forward is deleted or times out. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5316](https://github.com/kubernetes-sigs/headlamp/issues/5316) | | Fixed a lock-order inversion deadlock in the multiplexer that could freeze WebSocket connections under concurrent load. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5307](https://github.com/kubernetes-sigs/headlamp/issues/5307) | <br><br> <br><br> #### 🐞 Bug fixes (part 3) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Fixed corrupted Kubernetes cache keys caused by incorrect parsing of internal URLs, preventing cache pollution and key collisions. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5292](https://github.com/kubernetes-sigs/headlamp/issues/5292) | | Silent errors in advanced search query parsing and filter evaluation are now logged via console.debug, making failures easier to diagnose. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5284](https://github.com/kubernetes-sigs/headlamp/issues/5284) | | Fixed a double-response bug in InstallRelease where execution continued after sending a 500 error, preventing corrupted HTTP responses. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5277](https://github.com/kubernetes-sigs/headlamp/issues/5277) | | Fixed a crash (white screen) caused by malformed JWTs during decoding, improving stability for plugins using the getUserInfo utility. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5270](https://github.com/kubernetes-sigs/headlamp/issues/5270) | | Fixed `npm run star` so developers can load Headlamp in dev mode on Windows without repeated reloads or long waits. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5256](https://github.com/kubernetes-sigs/headlamp/issues/5256) | | Fixed a React hooks-rules violation in useKubeObject where WebSocket hooks were called conditionally, ensuring reliable WebSocket behaviour regardless of feature flags. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5253](https://github.com/kubernetes-sigs/headlamp/issues/5253) | | Fixed a React hooks-rules violation in the router by extracting an inline arrow function into a named component, preventing unpredictable hook behaviour during routing. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5251](https://github.com/kubernetes-sigs/headlamp/issues/5251) | | Fixed a React hooks-rules violation in usePrefersColorScheme by moving useState and useEffect above the early return, ensuring consistent color-scheme detection. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5250](https://github.com/kubernetes-sigs/headlamp/issues/5250) | | Fixed a React hooks-rules violation in useWatchKubeObjectLists by calling both sub-hooks unconditionally, preventing potential runtime errors from conditional hook calls. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5249](https://github.com/kubernetes-sigs/headlamp/issues/5249) | | Fixed the AuthChooser AnError Storybook story to always render a non-empty DialogTitle, eliminating an empty h1 accessibility issue. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5239](https://github.com/kubernetes-sigs/headlamp/issues/5239) | <br><br> <br><br> #### 🐞 Bug fixes (part 4) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Fixed a fatal UI crash caused by malformed or empty sidebar data in browser localStorage during Redux state initialization. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5235](https://github.com/kubernetes-sigs/headlamp/issues/5235) | | Fixed React hooks rule violations in the PortForward component that could cause unpredictable rendering behavior. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5231](https://github.com/kubernetes-sigs/headlamp/issues/5231) | | Pinned the `gcb-docker-gcloud` Cloud Build image by digest to prevent CI failures caused by garbage-collected tags. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5229](https://github.com/kubernetes-sigs/headlamp/issues/5229) | | Fixed a server crash that occurred when installing or upgrading unsupported Helm chart types such as library charts. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5217](https://github.com/kubernetes-sigs/headlamp/issues/5217) | | Fixed a backend panic in cache invalidation that crashed the server when a `GenerateKey` error was silently ignored on short API paths. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5215](https://github.com/kubernetes-sigs/headlamp/issues/5215) | | Fixed React hooks rule violations in `CustomResourceListTable` where `useMemo` calls after an early return caused unpredictable rendering. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5213](https://github.com/kubernetes-sigs/headlamp/issues/5213) | | Renamed `withEnv` decorator to PascalCase in AppContainer stories, fixing rules-of-hooks ESLint violations. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5210](https://github.com/kubernetes-sigs/headlamp/issues/5210) | | Renamed story component functions to PascalCase in PluginSettingsDetails stories, resolving rules-of-hooks ESLint errors. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5209](https://github.com/kubernetes-sigs/headlamp/issues/5209) | | Moved `useCallback` before the early return in `DialogTitle` and added missing `focusTitle` dependency, fixing rules-of-hooks violations. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5208](https://github.com/kubernetes-sigs/headlamp/issues/5208) | | Moved all hook calls before the early return in `RollbackButton`, fixing rules-of-hooks violations and improving TypeScript type narrowing. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5206](https://github.com/kubernetes-sigs/headlamp/issues/5206) | <br><br> <br><br> #### 🐞 Bug fixes (part 5) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Fixed and re-enabled a previously skipped multiplexer test, improving test suite reliability. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5179](https://github.com/kubernetes-sigs/headlamp/issues/5179) | | Removed an unsafe `as any` TypeScript cast in VersionButton by providing an explicit generic type to `useQuery`, improving type safety. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5164](https://github.com/kubernetes-sigs/headlamp/issues/5164) | | Fixed a backend panic crash in GetAPIGroup caused by index out of range errors when Kubernetes discovery paths were shortened or truncated. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5161](https://github.com/kubernetes-sigs/headlamp/issues/5161) | | Fixed a bug where a stale global namespace filter could hide results in namespace-scoped views when no namespace filter should apply. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5157](https://github.com/kubernetes-sigs/headlamp/issues/5157) | | Fixed Helm repository and chart handler error behavior, including proper 404 responses on missing repos and safer lock error handling. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5149](https://github.com/kubernetes-sigs/headlamp/issues/5149) | | Fixed Content-Type: application/json header being silently dropped in 7 Helm release API handlers, ensuring clients receive correct response metadata. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5147](https://github.com/kubernetes-sigs/headlamp/issues/5147) | | Fixed a server panic caused by bare type assertions in kubeconfig parsing when processing malformed kubeconfig files. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5138](https://github.com/kubernetes-sigs/headlamp/issues/5138) | | Added missing Pi and P memory unit support to normalizeUnit and corrected off-by-one multipliers for Ei and E, ensuring accurate Kubernetes quantity parsing. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5135](https://github.com/kubernetes-sigs/headlamp/issues/5135) | | Fixed a bug in k8cache where Kubernetes resources older than 60 seconds silently skipped cache invalidation on Update or Delete, preventing stale data from being cleared. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5130](https://github.com/kubernetes-sigs/headlamp/issues/5130) | | Removed debug console.log statements and fixed a typo in the frontend, keeping the production console clean. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5129](https://github.com/kubernetes-sigs/headlamp/issues/5129) | <br><br> <br><br> #### 🐞 Bug fixes (part 6) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Removed an unnecessary debug console.log from the clusterRequests remove() function to keep the production console clean. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5127](https://github.com/kubernetes-sigs/headlamp/issues/5127) | | Fixed backend linting on Windows with LF line endings and compatible Makefile targets, replaced deprecated fake clientset, and bumped helm/v3 to 3.20.2. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5121](https://github.com/kubernetes-sigs/headlamp/issues/5121) | | Long cluster names in the Home page table now expand dynamically and show the full name on hover, improving readability. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). Also thanks to [@&#8203;hpschry](https://github.com/hpschry) and [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5109](https://github.com/kubernetes-sigs/headlamp/issues/5109) | | Fixed resourceFieldRef env vars failing to resolve for admission-injected sidecar containers like istio-proxy, eliminating 'Container not found' errors. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;vmozghovyi](https://github.com/vmozghovyi) for reporting the issue. [#&#8203;5107](https://github.com/kubernetes-sigs/headlamp/issues/5107) | | Fixed helm route auth token handling to work unconditionally and added regression tests for helm auth and RouteSwitcher key uniqueness. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). Also thanks to [@&#8203;v0lkan](https://github.com/v0lkan) for reporting the issue. [#&#8203;5105](https://github.com/kubernetes-sigs/headlamp/issues/5105) | | Replaced console.log with console.error in catch blocks so exceptions are correctly flagged in browser DevTools and log monitoring tools. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5104](https://github.com/kubernetes-sigs/headlamp/issues/5104) | | Users now see an error notification when cluster deletion fails instead of silently receiving no feedback. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5102](https://github.com/kubernetes-sigs/headlamp/issues/5102) | | Fixed the ResourceTable Name Search Storybook example so the search input is correctly prefilled and table filtering works as expected. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;sniok](https://github.com/sniok) for reporting the issue. [#&#8203;5100](https://github.com/kubernetes-sigs/headlamp/issues/5100) | | Updated npm dependencies via audit to address known vulnerabilities, with Electron upgraded to the latest version. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5097](https://github.com/kubernetes-sigs/headlamp/issues/5097) | | Fixed a crash on CronJob list and details pages when `spec.suspend` is absent from the API response, preventing a TypeError on undefined. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). Also thanks to [@&#8203;RobertSkawinski](https://github.com/RobertSkawinski) for reporting the issue. [#&#8203;5085](https://github.com/kubernetes-sigs/headlamp/issues/5085) | <br><br> <br><br> #### 🐞 Bug fixes (part 7) | Bug fixes | | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Helm chart now automatically mounts an `emptyDir` volume at `/tmp` when `readOnlyRootFilesystem` is enabled, fixing deployment failures in restricted security contexts. | Thanks to [@&#8203;YotamKorah](https://github.com/YotamKorah). Also thanks to [@&#8203;wkbrd](https://github.com/wkbrd) for reporting the issue. [#&#8203;5079](https://github.com/kubernetes-sigs/headlamp/issues/5079) | | Removed a leftover `console.log` debug statement from `HTTPRouteDetails`, eliminating unnecessary noise in the browser console. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5074](https://github.com/kubernetes-sigs/headlamp/issues/5074) | | Fixed double-write HTTP responses and missing headers in Helm backend handlers, ensuring correct and well-formed API responses. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5056](https://github.com/kubernetes-sigs/headlamp/issues/5056) | | Fixed typos and improved error logging in OauthPopup by correcting 'occured' to 'occurred' and using console.error for proper error severity reporting. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5054](https://github.com/kubernetes-sigs/headlamp/issues/5054) | | Fixed a copy-paste bug where GRPCRoute used the wrong section ID (httproute-parentrefs) and removed leftover debug console.log statements from production code. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5052](https://github.com/kubernetes-sigs/headlamp/issues/5052) | | Cluster action error notifications now surface detailed Kubernetes API error messages instead of generic failure text, making it easier to diagnose rejected operations like ValidatingAdmissionPolicy failures. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5047](https://github.com/kubernetes-sigs/headlamp/issues/5047) | | Fixed broken app startup after npm install due to an esbuild error by regenerating package-lock.json, updating frontend snapshots, and reverting the merge commit check. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5029](https://github.com/kubernetes-sigs/headlamp/issues/5029) | | Fixed a Map view bug where resources with the same name in different namespaces were incorrectly linked by adding namespace checks to resource relation matching. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;rassie](https://github.com/rassie) for reporting the issue. [#&#8203;5006](https://github.com/kubernetes-sigs/headlamp/issues/5006) | | Fixed AppImage crash on Linux caused by chrome-sandbox permission issues by disabling the setuid sandbox in AppImage environments. | Thanks to [@&#8203;kunaldevsahu](https://github.com/kunaldevsahu). Also thanks to [@&#8203;eftewuer](https://github.com/eftewuer) for reporting the issue. [#&#8203;4996](https://github.com/kubernetes-sigs/headlamp/issues/4996) | | Fixed truncation of long Kubernetes condition names (e.g. PodReadyToStartContainers) in resource detail Conditions tables so full names are always visible. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;4967](https://github.com/kubernetes-sigs/headlamp/issues/4967) | | Fixed pod metrics matching to use both name and namespace, preventing incorrect CPU/memory stats for pods sharing the same name across different namespaces. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;4933](https://github.com/kubernetes-sigs/headlamp/issues/4933) | | Fixed GlobalSearch bar visibility on dark or colored navbars by adding explicit backgrounds, ensuring the search field is visible at all zoom levels and themes. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;4930](https://github.com/kubernetes-sigs/headlamp/issues/4930) | <br><br> <br><br> #### 🔒 Security | Security improvements | | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Hardened service proxy URI validation to block path traversal and protocol-relative URLs that could redirect requests to arbitrary hosts. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5299](https://github.com/kubernetes-sigs/headlamp/issues/5299) | | Bumped multiple app, plugin, and backend dependencies including storybook, i18next-fs-backend, xmldom, and headlamp-plugin to keep packages up to date and fix build issues. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5122](https://github.com/kubernetes-sigs/headlamp/issues/5122) | | Bumped backend and headlamp-plugin dependencies including OpenTelemetry, go-jose, and Vite to keep packages up to date and secure. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5108](https://github.com/kubernetes-sigs/headlamp/issues/5108) | | Validate host header to protect desktop and headless users. | Thanks to [@&#8203;illume](https://github.com/illume). Also thanks to Koda Reef for reporting the issue. [#&#8203;5419](https://github.com/kubernetes-sigs/headlamp/issues/5419) | | Updated SECURITY.md to reference the kubernetes-sigs security policy, making it easier to find for contributors browsing the repo. | Thanks to [@&#8203;illume](https://github.com/illume). Also thanks to [@&#8203;rassie](https://github.com/rassie) for reporting the issue. [#&#8203;5081](https://github.com/kubernetes-sigs/headlamp/issues/5081) | | Bumped multiple dependencies including tar, flatted, typedoc, body-parser, undici, and others to address security and compatibility updates. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;4948](https://github.com/kubernetes-sigs/headlamp/issues/4948) | | Bumped tar dependency from 7.5.10 to 7.5.11 in the sidebar plugin example to include a symlink escape fix. | . [#&#8203;4880](https://github.com/kubernetes-sigs/headlamp/issues/4880) | <br><br> <br><br> #### ♿ Accessibility | Accessibility improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Replaced the accessible-name violation caused by role=button on a label element in DropZoneBox with a ref-based file input trigger. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5272](https://github.com/kubernetes-sigs/headlamp/issues/5272) | | Unified sorting icons in SimpleTable to match ResourceTable's MUI arrow style and added tooltips to sorting buttons for better accessibility. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;4952](https://github.com/kubernetes-sigs/headlamp/issues/4952) | | Fixed heading hierarchy in the ReleaseNotesModal story so the h3 fixture is properly nested under h1/h2 ancestors, and updated the storyshot snapshot to match. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5315](https://github.com/kubernetes-sigs/headlamp/issues/5315) | <br><br> <br><br> #### 📖 Documentation | Documentation improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | | Deduplicated nodes and edges in the resource map graph after merging sources, eliminating duplicate elements that could cause rendering issues. | Thanks to [@&#8203;mahmoudmagdy1-1](https://github.com/mahmoudmagdy1-1). [#&#8203;5400](https://github.com/kubernetes-sigs/headlamp/issues/5400) | | Added NKP (Nutanix Kubernetes Platform) to the supported platforms documentation, confirming it works with Headlamp out of the box. | Thanks to [@&#8203;jlnhnng](https://github.com/jlnhnng). [#&#8203;5173](https://github.com/kubernetes-sigs/headlamp/issues/5173) | | Added Linode Kubernetes Engine (LKE) to the list of tested and supported platforms in the documentation. | Thanks to [@&#8203;ruckus-voxi](https://github.com/ruckus-voxi). [#&#8203;5116](https://github.com/kubernetes-sigs/headlamp/issues/5116) | | Added a tutorial showing how to build a WhoAmI plugin that displays user identity in the cluster sidebar using the SelfSubjectReview API. | Thanks to [@&#8203;yolossn](https://github.com/yolossn). [#&#8203;5080](https://github.com/kubernetes-sigs/headlamp/issues/5080) | | Fixed multiple documentation issues including a grammatical error, stale Code of Conduct link, duplicate sections, outdated dependency versions, and broken internal links. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5060](https://github.com/kubernetes-sigs/headlamp/issues/5060) | | Added documentation for MCP (Model Context Protocol) support to the Headlamp learn section, helping users discover and configure the feature. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). [#&#8203;4998](https://github.com/kubernetes-sigs/headlamp/issues/4998) | | Added HolmesGPT documentation to the Learn section, making it easier to find and use HolmesGPT guidance within the docs. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). [#&#8203;4997](https://github.com/kubernetes-sigs/headlamp/issues/4997) | <br><br> <br><br> #### 💻 Development (part 1) | Development improvements | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Added end-to-end tests verifying the Prometheus plugin is correctly bundled and its settings page is accessible in the UI. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5362](https://github.com/kubernetes-sigs/headlamp/issues/5362) | | Storybook mocks now return HTTP 404 for deprecated v1beta1 CRD endpoints, better reflecting real cluster behavior in component stories. | Thanks to [@&#8203;mystic-06](https://github.com/mystic-06). Also thanks to [@&#8203;skoeva](https://github.com/skoeva) for reporting the issue. [#&#8203;5040](https://github.com/kubernetes-sigs/headlamp/issues/5040) | | Host header validation added on loopback listeners to reduce the risk of DNS rebinding attacks against the local backend server. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5419](https://github.com/kubernetes-sigs/headlamp/issues/5419) | | Bumped Go to 1.25.9 to address stdlib CVEs, improving the security of the backend. | Thanks to [@&#8203;yolossn](https://github.com/yolossn). [#&#8203;5410](https://github.com/kubernetes-sigs/headlamp/issues/5410) | | Kubernetes volume status phases such as "Bound" and "Pending" are now translated, so they respect the user's selected locale instead of always appearing in English. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5331](https://github.com/kubernetes-sigs/headlamp/issues/5331) | | Core API discovery failures (e.g. due to timeouts or RBAC issues) are now logged instead of silently swallowed, making it easier to diagnose missing resources in the UI. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5329](https://github.com/kubernetes-sigs/headlamp/issues/5329) | | Switched plugin cache error checks to use `errors.Is()` so wrapped `cache.ErrNotFound` errors are correctly detected and plugin listing behaves reliably. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5326](https://github.com/kubernetes-sigs/headlamp/issues/5326) | | Reverted Storybook stories for AddCluster component that were causing CI failures. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5301](https://github.com/kubernetes-sigs/headlamp/issues/5301) | | Silent errors in terminal shell detection functions are now logged via console.debug, making node shell connection failures easier to debug. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5282](https://github.com/kubernetes-sigs/headlamp/issues/5282) | | Replaced direct Helm sentinel error comparisons with errors.Is, ensuring wrapped errors are correctly detected in release-not-found checks. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5280](https://github.com/kubernetes-sigs/headlamp/issues/5280) | | Reverted a namespace filter reset change that caused crashes when navigating to namespace views with an active namespace filter selected. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5271](https://github.com/kubernetes-sigs/headlamp/issues/5271) | | Added an i18n-check step to CI to automatically catch translation file regressions as dependencies and code are updated. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5257](https://github.com/kubernetes-sigs/headlamp/issues/5257) | ##### Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states. <img width="1907" height="947" alt="frontend(KubeConfigLoader): Add Storybook stories with all component …" src="https://github.com/user-attachments/assets/3d07f544-66d5-44c0-8e4a-8f7d3c7e8684" /> <br><br> <br><br> #### 💻 Development (part 2) | Development improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Refactored Event hooks into standalone exported functions, fixing React hooks-rules violations and making useEventListForClusters and useEventWarningList available to consumers. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5255](https://github.com/kubernetes-sigs/headlamp/issues/5255) | | Replaced `log.Printf` with the structured logger in the telemetry package, aligning warning output with the rest of the backend. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5221](https://github.com/kubernetes-sigs/headlamp/issues/5221) | | Added Copilot PR review instructions to automate common review feedback, helping enforce project standards more consistently. | Thanks to [@&#8203;joaquimrocha](https://github.com/joaquimrocha). [#&#8203;4937](https://github.com/kubernetes-sigs/headlamp/issues/4937) | | Added `console.debug` logging to previously silent catch blocks across frontend components, making errors visible during debugging. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5220](https://github.com/kubernetes-sigs/headlamp/issues/5220) | | Replaced hardcoded `context.TODO()` in the service proxy with proper request-scoped context, enabling correct cancellation and deadline propagation. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5219](https://github.com/kubernetes-sigs/headlamp/issues/5219) | | Replaced an incorrectly imported MUI icon with the Iconify equivalent in the Table component, restoring consistent icon rendering. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5178](https://github.com/kubernetes-sigs/headlamp/issues/5178) | | Replaced `console.log` with `console.debug` for IndexedDB operational messages, keeping them available in development while hiding them in production. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5177](https://github.com/kubernetes-sigs/headlamp/issues/5177) | | Removed 54 lines of unreachable dead code from `UpdatePopup` and hardened `window.open` usage, simplifying the component and improving safety. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5175](https://github.com/kubernetes-sigs/headlamp/issues/5175) | | Expanded test coverage for the k8cache package, covering previously untested branches to improve backend reliability. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5172](https://github.com/kubernetes-sigs/headlamp/issues/5172) | | Upgraded Node.js to v22.x LTS across all CI workflows and package.json engines fields to stay ahead of Node 20 end-of-life. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5170](https://github.com/kubernetes-sigs/headlamp/issues/5170) | | Removed a legacy Webpack-specific workaround from ErrorPage, cleaning up the component now that Headlamp fully uses Vite for SVG imports. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5143](https://github.com/kubernetes-sigs/headlamp/issues/5143) | | Enabled eslint-plugin-react-hooks lint rules in the frontend to surface hard-to-debug React hook mistakes earlier in development. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5155](https://github.com/kubernetes-sigs/headlamp/issues/5155) | | Frontend lint warnings are now enforced as CI-blocking errors, with pre-existing violations suppressed, improving long-term code quality. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5196](https://github.com/kubernetes-sigs/headlamp/issues/5196) | ##### Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states. <img width="1469" height="809" alt="Screenshot 2026-04-27 at 6 58 04 PM" src="https://github.com/user-attachments/assets/20ef2bcb-1a63-4a2c-b059-1fdf085db9c5" /> <br><br> <br><br> #### 💻 Development (part 3) | Development improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Added a README for the Headlamp Releaser CLI tool documenting prerequisites, usage, and how it automates version bumping, tagging, and publishing. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;4942](https://github.com/kubernetes-sigs/headlamp/issues/4942) | | Increased pkg/config test coverage from 74.2% to 83.9% by adding unit tests for session TTL validation and default-application logic. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5139](https://github.com/kubernetes-sigs/headlamp/issues/5139) | | Removed the Create button from pod lists inside parent resource detail views (e.g. Jobs, Deployments) where adding pods directly is not valid. | Thanks to [@&#8203;kannon92](https://github.com/kannon92). [#&#8203;5136](https://github.com/kubernetes-sigs/headlamp/issues/5136) | | CRD list fetch errors in the sidebar now use console.error instead of console.log, ensuring correct severity in browser developer tools. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5128](https://github.com/kubernetes-sigs/headlamp/issues/5128) | | Added unit tests for the Helm handler, bringing test coverage from 0% to 90.8% and improving backend reliability. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5124](https://github.com/kubernetes-sigs/headlamp/issues/5124) | | Replaced context.TODO() with explicit context.Background() in the drainNode goroutine, fixing improper context propagation in the backend. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5095](https://github.com/kubernetes-sigs/headlamp/issues/5095) | | Removed leftover development console.log statements from the Backstage integration to keep the browser console clean in production. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5094](https://github.com/kubernetes-sigs/headlamp/issues/5094) | | Replaced loose `as any` casts with strictly typed `Partial<Response>` in auth tests, reducing the risk of silent false-positive test results. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5075](https://github.com/kubernetes-sigs/headlamp/issues/5075) | | Removed an outdated TODO comment in `NameValueTable.tsx` that no longer applies after the React 18 migration was completed. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5064](https://github.com/kubernetes-sigs/headlamp/issues/5064) | | Escaped URLs in library typedoc comments to prevent the parser from misinterpreting them. | Thanks to [@&#8203;ashu8912](https://github.com/ashu8912). [#&#8203;5027](https://github.com/kubernetes-sigs/headlamp/issues/5027) | | Fixed activity panel text alignment for the cluster indicator and corrected text colors for themes with custom primary colors such as 'Lights Out'. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5020](https://github.com/kubernetes-sigs/headlamp/issues/5020) | | Added 13 Storybook stories for ResourceTableMultiActions, covering all meaningful selection states to aid frontend development and testing. | Thanks to [@&#8203;mystic-06](https://github.com/mystic-06). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;4971](https://github.com/kubernetes-sigs/headlamp/issues/4971) | | Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states. | Thanks to [@&#8203;Dharmiksarvaiya24](https://github.com/Dharmiksarvaiya24). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5171](https://github.com/kubernetes-sigs/headlamp/issues/5171) | | Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states. | Thanks to [@&#8203;vishnukothakapu](https://github.com/vishnukothakapu). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5166](https://github.com/kubernetes-sigs/headlamp/issues/5166) | <br><br> <br><br> #### 🧩 Official Plugin releases - [Volcano 0.2.0-beta](https://github.com/headlamp-k8s/plugins/releases/tag/volcano-0.2.0-beta) - [minikube 0.3.0](https://github.com/headlamp-k8s/plugins/releases/tag/minikube-0.3.0) - [Kubeflow 0.1.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/kubeflow-0.1.0-alpha) - [Strimzi 0.4.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/strimzi-0.4.0-alpha) - [Cluster API 0.1.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/cluster-api-0.1.0-alpha) - [Volcano 0.1.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/volcano-0.1.0-alpha) - [Knative 0.2.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/knative-0.2.0-alpha) - [ai-assistant v0.2.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/ai-assistant-0.2.0-alpha) <!-- end-release-notes --> <br><br> **Container image:** :whale: [ghcr.io/headlamp-k8s/headlamp:v0.42.0](https://github.com/kubernetes-sigs/headlamp/pkgs/container/headlamp) **Desktop Apps:** ⚠️ <strong>Important:</strong> Information on warnings from Mac and Windows <a href="https://headlamp.dev/docs/latest/installation/desktop/" target="_blank" rel="noopener noreferrer">when running Headlamp unsigned apps.</a> :penguin: [Flatpak / Linux (AMD64)](https://flathub.org/apps/details/io.kinvolk.Headlamp) :penguin: Linux AppImage [AMD64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-x64.AppImage), [ARM64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-arm64.AppImage), [ARMv7l](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-armv7l.AppImage) :penguin: Linux Tarball [AMD64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-x64.tar.gz), [ARM64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-arm64.tar.gz), [ARMv7l](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-armv7l.tar.gz) :penguin: Debian / Linux [AMD64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/headlamp_0.42.0-1_amd64.deb) :green\_apple: [Mac (AMD64)](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-mac-x64.dmg) :green\_apple: [Mac (ARM/M1)](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-mac-arm64.dmg) :blue\_square: [Windows (AMD64)](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-win-x64.exe) </details> <details> <summary>headlamp-k8s/headlamp (headlamp-k8s/headlamp)</summary> ### [`v0.42.0`](https://github.com/kubernetes-sigs/headlamp/releases/tag/v0.42.0): 0.42.0 [Compare Source](https://github.com/headlamp-k8s/headlamp/compare/headlamp-helm-0.41.0...v0.42.0) ### Hitch hikers guide to Headlamp 0.42.0 Deep-link support was added for pod terminals (?view=exec) and log views (?view=logs), letting users bookmark or share direct links to specific UI states. Resources can now be searched by label in all list views, the Log Viewer gains a severity filter dropdown, and a delete button has been added directly to the plugins list. Node Details received two new sections for pod capacity usage and resource allocation, and the Resource Map now renders status badges on plugin-provided nodes and includes previously missing configuration resources. GRPCRoute details reach full parity with HTTPRoute, and a guided form-based resource creation UI (starting with Pods) is now available alongside the YAML editor. On the reliability side, a silent cache desync that caused permanently stale cluster data was fixed, along with a lock-order inversion deadlock that could freeze WebSocket connections under load, and a wave of React hooks rule violations across more than a dozen frontend components. Several backend panics were fixed in port-forwarding, kubeconfig parsing, cache key generation, and Helm chart type handling, alongside debounced log aggregation to prevent UI freezes in All Pods mode. Security hardening includes path traversal prevention in the service proxy and dependency bumps. #### ✨ Enhancements (part 1) | Enhancements | | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Added deep-link support for pod exec via `?view=exec` query parameter, letting users bookmark or share direct links to open a terminal into a specific pod. | Thanks to [@&#8203;justinas-wix](https://github.com/justinas-wix). [#&#8203;4941](https://github.com/headlamp-k8s/headlamp/issues/4941) | | Added a hidden 'labels' column to all resource list views so users can search resources by label (e.g. `app=test`) using the existing search bar. | Thanks to [@&#8203;sniok](https://github.com/sniok). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5035](https://github.com/headlamp-k8s/headlamp/issues/5035) | | Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources. | Thanks to [@&#8203;mahmoudmagdy1-1](https://github.com/mahmoudmagdy1-1). [#&#8203;5349](https://github.com/headlamp-k8s/headlamp/issues/5349) | | Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5039](https://github.com/headlamp-k8s/headlamp/issues/5039) | | Extended `a8r.io` annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource. | Thanks to [@&#8203;mastermaxx03](https://github.com/mastermaxx03). [#&#8203;5007](https://github.com/headlamp-k8s/headlamp/issues/5007) | | Added a severity filter dropdown to the Log Viewer, letting users quickly filter logs by level (ERROR, WARN, INFO, DEBUG) to cut through noisy streams. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5338](https://github.com/headlamp-k8s/headlamp/issues/5338) | | Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first. | Thanks to [@&#8203;rickbrouwer](https://github.com/rickbrouwer). [#&#8203;5314](https://github.com/headlamp-k8s/headlamp/issues/5314) | | Added ?view=logs deep-link support on Deployment, ReplicaSet, DaemonSet, and StatefulSet detail pages, letting users open the logs view directly from a URL. | Thanks to [@&#8203;bhat-ganesh](https://github.com/bhat-ganesh). [#&#8203;5312](https://github.com/headlamp-k8s/headlamp/issues/5312) | | Added missing configuration resources to the Resource Map graph so they are now fully visible in the Configuration group. | Thanks to [@&#8203;vishnukothakapu](https://github.com/vishnukothakapu). [#&#8203;5223](https://github.com/headlamp-k8s/headlamp/issues/5223) | ##### Added a hidden 'labels' column to all resource list views so users can search resources by label (e.g. `app=test`) using the existing search bar. <img width="1361" height="471" alt="frontend: ResourceTable: Add new 'labels' column to all list views to allow searching by label" src="https://github.com/user-attachments/assets/81e57f3f-5124-41e2-9e81-b68b31bc6bc8" /> ##### Added a delete button directly to the plugins list page, so users can remove plugins without navigating to the detail page first. <img width="1556" height="347" alt="frontend: Add delete button to plugin list" src="https://github.com/user-attachments/assets/58dc151b-b211-4a00-bebb-71e3e43f7875" /> ##### Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow. <img width="2104" height="1021" alt="frontend: CreateResourceForm: Add resource form create feature and CreateResourceForm" src="https://github.com/user-attachments/assets/1c871ccd-8d59-4748-89f1-f8934df991d6" /> <br><br> <br><br> #### ✨ Enhancements (part 2) | Enhancements | | | :------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5169](https://github.com/headlamp-k8s/headlamp/issues/5169) | | Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;5018](https://github.com/headlamp-k8s/headlamp/issues/5018) | | Added a background janitor to evict expired Kubernetes clientsets, fixing an unbounded memory leak that could cause OOM crashes on busy clusters. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5286](https://github.com/headlamp-k8s/headlamp/issues/5286) | | Wrapped the `Reconnect` button label in `LogViewer` with the translation function and added the key to all 12 locale files, enabling full i18n support. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5176](https://github.com/headlamp-k8s/headlamp/issues/5176) | | GRPCRoute details view now shows rules, hostnames, matches, backendRefs, and filters, bringing it to full parity with HTTPRoute details. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5174](https://github.com/headlamp-k8s/headlamp/issues/5174) | ##### Resource map graph nodes now support optional status metadata, allowing plugin-provided nodes to display warning and error badges like built-in resources. <img width="1800" height="844" alt="docs: frontend: resourceMap: Add status support for map nodes" src="https://github.com/user-attachments/assets/1465f71a-e020-49f4-96d0-ac57427f398a" /> ##### Added ephemeral storage usage chart to the Node Details view, giving users visibility into ephemeral storage consumption alongside other node stats. <img width="3072" height="1728" alt="Screenshot from 2026-04-20 14-32-54" src="https://github.com/user-attachments/assets/5e5cb349-00e2-45f1-8b88-51d752acd880" /> ##### Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view. <img width="3072" height="1728" alt="Screenshot from 2026-04-12 19-27-27" src="https://github.com/user-attachments/assets/c339986b-cb9d-4c91-a2ad-e90add022e97" /> ##### Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results. <img width="2495" height="1390" alt="Screenshot from 2026-03-25 13-18-28" src="https://github.com/user-attachments/assets/bcac7e08-b364-4f2c-bbb0-ff4092fcbe03" /> <br><br> <br><br> #### ✨ Enhancements (part 3) | Enhancements | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Added a toast notification when port-forwarding fails so users are explicitly informed instead of errors being silently logged to the console. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5145](https://github.com/headlamp-k8s/headlamp/issues/5145) | | Added a download YAML button to the resource table, letting users export any resource manifest directly from the table view. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;5126](https://github.com/headlamp-k8s/headlamp/issues/5126) | | Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;5119](https://github.com/headlamp-k8s/headlamp/issues/5119) | | Added `service.extraServicePorts` and matching Ingress backend support to the Helm chart, allowing sidecar containers to be exposed without a separate Service resource. | Thanks to [@&#8203;Soli0222](https://github.com/Soli0222). [#&#8203;5078](https://github.com/headlamp-k8s/headlamp/issues/5078) | | Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5048](https://github.com/headlamp-k8s/headlamp/issues/5048) | | Added a guided form-based UI for creating Kubernetes resources (starting with Pods), accessible from the sidebar and Pod list page alongside the existing YAML editor workflow. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). [#&#8203;5044](https://github.com/headlamp-k8s/headlamp/issues/5044) | | Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;trashhead](https://github.com/trashhead) for reporting the issue. [#&#8203;4956](https://github.com/headlamp-k8s/headlamp/issues/4956) | ##### Added a pod capacity usage tile to the node details view so users can see how many pods are scheduled versus the node's allocatable pod limit. <img width="3066" height="1535" alt="Screenshot from 2026-04-02 23-21-10" src="https://github.com/user-attachments/assets/5ab9d7cc-4621-4b4b-bbc7-c1868bd4b9c2" /> ##### Added a 'Review changes' tab to the resource editor dialog so users can diff the original manifest against their edits before applying. <img width="3071" height="1555" alt="frontend: EditorDialog :add yaml diff view in editor to compare original manifest against edited" src="https://github.com/user-attachments/assets/0b197298-e8f5-4045-85e4-92113d6397dc" /> ##### Added UI support for the Kubernetes VolumeAttributesClass resource in the Storage section, including list and detail views. <img width="3072" height="1728" alt="Screenshot from 2026-04-11 13-59-36" src="https://github.com/user-attachments/assets/b652251d-1df3-40c4-8f79-1c1f665fd3a9" /> ##### Container port names are now displayed alongside protocol and port number in the containers list, providing more complete port information at a glance. <img width="761" height="740" alt="frontend:Show container port name if available" src="https://github.com/user-attachments/assets/a352f8ab-a631-48e4-9cfe-b0fc97e0d02a" /> <br><br> <br><br> #### ✨ Enhancements (part 4) | Enhancements | | | :-------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior. | Thanks to [@&#8203;ChayanDass](https://github.com/ChayanDass). Also thanks to [@&#8203;joaquimrocha](https://github.com/joaquimrocha) for reporting the issue. [#&#8203;4931](https://github.com/headlamp-k8s/headlamp/issues/4931) | | Improved global search UX by adding a clear button to the search input and showing a pointer cursor on hover over search results. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;4965](https://github.com/headlamp-k8s/headlamp/issues/4965) | ##### Extended `a8r.io` annotation support from Services to all Kubernetes resources, letting users see human-readable service discovery metadata on any annotated resource. <img width="2880" height="1130" alt="frontend: App: resource: Extend a8r.io annotation support to all Kubernetes resources" src="https://github.com/user-attachments/assets/9a7b1e3d-36e4-4cb6-a141-8e24d45404fe" /> ##### Added a Resource Allocation section to Node Details showing total CPU/Memory requests, limits, and their percentage of node capacity alongside existing usage metrics. <img width="1803" height="964" alt="frontend: nodes: Add resource allocation summary in Node Details" src="https://github.com/user-attachments/assets/feeb4036-3bdd-4dc1-8e84-61ba0d4749f3" /> ##### Aligned frontend duration/age formatting with Kubernetes apimachinery logic, ensuring consistent age display matching kubectl behavior. <img width="1695" height="847" alt="frontend: align duration formatting with apimachinery logic" src="https://github.com/user-attachments/assets/fec83d4b-b923-47d6-a19c-e10b1cf7ce7a" /> <br><br> <br><br> #### 🐞 Bug fixes (part 1) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Fixed pod status icon remaining stuck on warning in list view after a pod becomes healthy, without requiring a page refresh. | Thanks to [@&#8203;nidhi-9900](https://github.com/nidhi-9900). Also thanks to [@&#8203;nullzone](https://github.com/nullzone) for reporting the issue. [#&#8203;5059](https://github.com/headlamp-k8s/headlamp/issues/5059) | | Fixed performance regressions in the resource map by properly memoizing values to avoid redundant graph rebuilds, improving responsiveness on larger clusters. | Thanks to [@&#8203;sniok](https://github.com/sniok). Also thanks to [@&#8203;itpick](https://github.com/itpick) for reporting the issue. [#&#8203;4961](https://github.com/headlamp-k8s/headlamp/issues/4961) | | Fixed a silent cache desync bug where a dead watcher locked the registry and prevented cache invalidation, causing the UI to show permanently stale cluster data. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5163](https://github.com/headlamp-k8s/headlamp/issues/5163) | | Removed the `--no-quarantine` flag from the macOS Homebrew installation command to reflect the current recommended install process. | Thanks to [@&#8203;saivenkateshi](https://github.com/saivenkateshi). Also thanks to [@&#8203;hyorimlee](https://github.com/hyorimlee) for reporting the issue. [#&#8203;4943](https://github.com/headlamp-k8s/headlamp/issues/4943) | | Debounced log aggregation in All Pods mode to eliminate UI freezes when streaming large volumes of logs. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5320](https://github.com/headlamp-k8s/headlamp/issues/5320) | | Fixed react-hooks/rules-of-hooks violations in secret/Details.tsx by extracting the inline section helper into a proper React component, preventing potential hook-related bugs. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5266](https://github.com/headlamp-k8s/headlamp/issues/5266) | | Fixed missing data columns (Status, Replicas, etc.) in CustomResourceDetails for core resources whose apiVersion contains no slash, such as Nodes. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5259](https://github.com/headlamp-k8s/headlamp/issues/5259) | | Fixed react-hooks/rules-of-hooks violations in GraphView\.tsx by moving hook calls unconditionally into function bodies, preventing potential rendering bugs. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5252](https://github.com/headlamp-k8s/headlamp/issues/5252) | | Fixed react-hooks/rules-of-hooks violations in configmap/Details.tsx by extracting the inline section helper into a proper React component, also resolving a variable shadowing issue in map callbacks. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5203](https://github.com/headlamp-k8s/headlamp/issues/5203) | | Fixed a React hooks violation in VolumeDetails where useTranslation was called after an early return, preventing potential runtime errors. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5201](https://github.com/headlamp-k8s/headlamp/issues/5201) | <br><br> <br><br> #### 🐞 Bug fixes (part 2) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Replaced fmt.Printf calls with structured logging in ListPlugins, improving log consistency and simplifying plugin-related test reliability. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5072](https://github.com/headlamp-k8s/headlamp/issues/5072) | | Fixed a crash on the Namespace details page when ResourceQuota status is absent immediately after creation, preventing blank or broken quota displays. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). [#&#8203;4990](https://github.com/headlamp-k8s/headlamp/issues/4990) | | Fixed heading hierarchy in the ReleaseNotes story so h3 elements are always preceded by proper h1/h2 ancestors, ensuring correct document structure. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5356](https://github.com/headlamp-k8s/headlamp/issues/5356) | | Added missing `aria-controls` attribute to EditorDialog action buttons, improving accessibility for assistive technology users. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5355](https://github.com/headlamp-k8s/headlamp/issues/5355) | | Fixed a nil-pointer panic in port-forwarding that could crash the backend when a port-forward process exited gracefully and its error channel was closed. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5342](https://github.com/headlamp-k8s/headlamp/issues/5342) | | Resource map breadcrumbs now pass `apiGroup` alongside `kind` to icon lookups, so resources like `apps/ReplicaSet` display their correct icon instead of the generic cube. | Thanks to [@&#8203;mahmoudmagdy1-1](https://github.com/mahmoudmagdy1-1). [#&#8203;5332](https://github.com/headlamp-k8s/headlamp/issues/5332) | | Fixed the "Use evict for pod deletion" setting not persisting as disabled across reloads by replacing a logical OR with nullish coalescing so an explicit `false` is correctly saved. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;5328](https://github.com/headlamp-k8s/headlamp/issues/5328) | | Fixed orphaned goroutines and lingering port listeners in the port-forwarding module, preventing memory leaks and stuck local ports after a port-forward is deleted or times out. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5316](https://github.com/headlamp-k8s/headlamp/issues/5316) | | Fixed a lock-order inversion deadlock in the multiplexer that could freeze WebSocket connections under concurrent load. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5307](https://github.com/headlamp-k8s/headlamp/issues/5307) | <br><br> <br><br> #### 🐞 Bug fixes (part 3) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Fixed corrupted Kubernetes cache keys caused by incorrect parsing of internal URLs, preventing cache pollution and key collisions. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5292](https://github.com/headlamp-k8s/headlamp/issues/5292) | | Silent errors in advanced search query parsing and filter evaluation are now logged via console.debug, making failures easier to diagnose. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5284](https://github.com/headlamp-k8s/headlamp/issues/5284) | | Fixed a double-response bug in InstallRelease where execution continued after sending a 500 error, preventing corrupted HTTP responses. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5277](https://github.com/headlamp-k8s/headlamp/issues/5277) | | Fixed a crash (white screen) caused by malformed JWTs during decoding, improving stability for plugins using the getUserInfo utility. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5270](https://github.com/headlamp-k8s/headlamp/issues/5270) | | Fixed `npm run star` so developers can load Headlamp in dev mode on Windows without repeated reloads or long waits. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5256](https://github.com/headlamp-k8s/headlamp/issues/5256) | | Fixed a React hooks-rules violation in useKubeObject where WebSocket hooks were called conditionally, ensuring reliable WebSocket behaviour regardless of feature flags. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5253](https://github.com/headlamp-k8s/headlamp/issues/5253) | | Fixed a React hooks-rules violation in the router by extracting an inline arrow function into a named component, preventing unpredictable hook behaviour during routing. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5251](https://github.com/headlamp-k8s/headlamp/issues/5251) | | Fixed a React hooks-rules violation in usePrefersColorScheme by moving useState and useEffect above the early return, ensuring consistent color-scheme detection. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5250](https://github.com/headlamp-k8s/headlamp/issues/5250) | | Fixed a React hooks-rules violation in useWatchKubeObjectLists by calling both sub-hooks unconditionally, preventing potential runtime errors from conditional hook calls. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5249](https://github.com/headlamp-k8s/headlamp/issues/5249) | | Fixed the AuthChooser AnError Storybook story to always render a non-empty DialogTitle, eliminating an empty h1 accessibility issue. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5239](https://github.com/headlamp-k8s/headlamp/issues/5239) | <br><br> <br><br> #### 🐞 Bug fixes (part 4) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Fixed a fatal UI crash caused by malformed or empty sidebar data in browser localStorage during Redux state initialization. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5235](https://github.com/headlamp-k8s/headlamp/issues/5235) | | Fixed React hooks rule violations in the PortForward component that could cause unpredictable rendering behavior. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5231](https://github.com/headlamp-k8s/headlamp/issues/5231) | | Pinned the `gcb-docker-gcloud` Cloud Build image by digest to prevent CI failures caused by garbage-collected tags. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5229](https://github.com/headlamp-k8s/headlamp/issues/5229) | | Fixed a server crash that occurred when installing or upgrading unsupported Helm chart types such as library charts. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5217](https://github.com/headlamp-k8s/headlamp/issues/5217) | | Fixed a backend panic in cache invalidation that crashed the server when a `GenerateKey` error was silently ignored on short API paths. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5215](https://github.com/headlamp-k8s/headlamp/issues/5215) | | Fixed React hooks rule violations in `CustomResourceListTable` where `useMemo` calls after an early return caused unpredictable rendering. | Thanks to [@&#8203;aabhinavvvvvvv](https://github.com/aabhinavvvvvvv). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5213](https://github.com/headlamp-k8s/headlamp/issues/5213) | | Renamed `withEnv` decorator to PascalCase in AppContainer stories, fixing rules-of-hooks ESLint violations. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5210](https://github.com/headlamp-k8s/headlamp/issues/5210) | | Renamed story component functions to PascalCase in PluginSettingsDetails stories, resolving rules-of-hooks ESLint errors. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5209](https://github.com/headlamp-k8s/headlamp/issues/5209) | | Moved `useCallback` before the early return in `DialogTitle` and added missing `focusTitle` dependency, fixing rules-of-hooks violations. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5208](https://github.com/headlamp-k8s/headlamp/issues/5208) | | Moved all hook calls before the early return in `RollbackButton`, fixing rules-of-hooks violations and improving TypeScript type narrowing. | Thanks to [@&#8203;jedbillyb](https://github.com/jedbillyb). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5206](https://github.com/headlamp-k8s/headlamp/issues/5206) | <br><br> <br><br> #### 🐞 Bug fixes (part 5) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Fixed and re-enabled a previously skipped multiplexer test, improving test suite reliability. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5179](https://github.com/headlamp-k8s/headlamp/issues/5179) | | Removed an unsafe `as any` TypeScript cast in VersionButton by providing an explicit generic type to `useQuery`, improving type safety. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5164](https://github.com/headlamp-k8s/headlamp/issues/5164) | | Fixed a backend panic crash in GetAPIGroup caused by index out of range errors when Kubernetes discovery paths were shortened or truncated. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5161](https://github.com/headlamp-k8s/headlamp/issues/5161) | | Fixed a bug where a stale global namespace filter could hide results in namespace-scoped views when no namespace filter should apply. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5157](https://github.com/headlamp-k8s/headlamp/issues/5157) | | Fixed Helm repository and chart handler error behavior, including proper 404 responses on missing repos and safer lock error handling. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5149](https://github.com/headlamp-k8s/headlamp/issues/5149) | | Fixed Content-Type: application/json header being silently dropped in 7 Helm release API handlers, ensuring clients receive correct response metadata. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5147](https://github.com/headlamp-k8s/headlamp/issues/5147) | | Fixed a server panic caused by bare type assertions in kubeconfig parsing when processing malformed kubeconfig files. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5138](https://github.com/headlamp-k8s/headlamp/issues/5138) | | Added missing Pi and P memory unit support to normalizeUnit and corrected off-by-one multipliers for Ei and E, ensuring accurate Kubernetes quantity parsing. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5135](https://github.com/headlamp-k8s/headlamp/issues/5135) | | Fixed a bug in k8cache where Kubernetes resources older than 60 seconds silently skipped cache invalidation on Update or Delete, preventing stale data from being cleared. | Thanks to [@&#8203;KumarADITHYA123](https://github.com/KumarADITHYA123). [#&#8203;5130](https://github.com/headlamp-k8s/headlamp/issues/5130) | | Removed debug console.log statements and fixed a typo in the frontend, keeping the production console clean. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5129](https://github.com/headlamp-k8s/headlamp/issues/5129) | <br><br> <br><br> #### 🐞 Bug fixes (part 6) | Bug fixes | | | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Removed an unnecessary debug console.log from the clusterRequests remove() function to keep the production console clean. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5127](https://github.com/headlamp-k8s/headlamp/issues/5127) | | Fixed backend linting on Windows with LF line endings and compatible Makefile targets, replaced deprecated fake clientset, and bumped helm/v3 to 3.20.2. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5121](https://github.com/headlamp-k8s/headlamp/issues/5121) | | Long cluster names in the Home page table now expand dynamically and show the full name on hover, improving readability. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). Also thanks to [@&#8203;hpschry](https://github.com/hpschry) and [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5109](https://github.com/headlamp-k8s/headlamp/issues/5109) | | Fixed resourceFieldRef env vars failing to resolve for admission-injected sidecar containers like istio-proxy, eliminating 'Container not found' errors. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;vmozghovyi](https://github.com/vmozghovyi) for reporting the issue. [#&#8203;5107](https://github.com/headlamp-k8s/headlamp/issues/5107) | | Fixed helm route auth token handling to work unconditionally and added regression tests for helm auth and RouteSwitcher key uniqueness. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). Also thanks to [@&#8203;v0lkan](https://github.com/v0lkan) for reporting the issue. [#&#8203;5105](https://github.com/headlamp-k8s/headlamp/issues/5105) | | Replaced console.log with console.error in catch blocks so exceptions are correctly flagged in browser DevTools and log monitoring tools. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5104](https://github.com/headlamp-k8s/headlamp/issues/5104) | | Users now see an error notification when cluster deletion fails instead of silently receiving no feedback. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5102](https://github.com/headlamp-k8s/headlamp/issues/5102) | | Fixed the ResourceTable Name Search Storybook example so the search input is correctly prefilled and table filtering works as expected. | Thanks to [@&#8203;Vikaspal8923](https://github.com/Vikaspal8923). Also thanks to [@&#8203;sniok](https://github.com/sniok) for reporting the issue. [#&#8203;5100](https://github.com/headlamp-k8s/headlamp/issues/5100) | | Updated npm dependencies via audit to address known vulnerabilities, with Electron upgraded to the latest version. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5097](https://github.com/headlamp-k8s/headlamp/issues/5097) | | Fixed a crash on CronJob list and details pages when `spec.suspend` is absent from the API response, preventing a TypeError on undefined. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). Also thanks to [@&#8203;RobertSkawinski](https://github.com/RobertSkawinski) for reporting the issue. [#&#8203;5085](https://github.com/headlamp-k8s/headlamp/issues/5085) | <br><br> <br><br> #### 🐞 Bug fixes (part 7) | Bug fixes | | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Helm chart now automatically mounts an `emptyDir` volume at `/tmp` when `readOnlyRootFilesystem` is enabled, fixing deployment failures in restricted security contexts. | Thanks to [@&#8203;YotamKorah](https://github.com/YotamKorah). Also thanks to [@&#8203;wkbrd](https://github.com/wkbrd) for reporting the issue. [#&#8203;5079](https://github.com/headlamp-k8s/headlamp/issues/5079) | | Removed a leftover `console.log` debug statement from `HTTPRouteDetails`, eliminating unnecessary noise in the browser console. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5074](https://github.com/headlamp-k8s/headlamp/issues/5074) | | Fixed double-write HTTP responses and missing headers in Helm backend handlers, ensuring correct and well-formed API responses. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5056](https://github.com/headlamp-k8s/headlamp/issues/5056) | | Fixed typos and improved error logging in OauthPopup by correcting 'occured' to 'occurred' and using console.error for proper error severity reporting. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5054](https://github.com/headlamp-k8s/headlamp/issues/5054) | | Fixed a copy-paste bug where GRPCRoute used the wrong section ID (httproute-parentrefs) and removed leftover debug console.log statements from production code. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5052](https://github.com/headlamp-k8s/headlamp/issues/5052) | | Cluster action error notifications now surface detailed Kubernetes API error messages instead of generic failure text, making it easier to diagnose rejected operations like ValidatingAdmissionPolicy failures. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;jimmyjones2](https://github.com/jimmyjones2) for reporting the issue. [#&#8203;5047](https://github.com/headlamp-k8s/headlamp/issues/5047) | | Fixed broken app startup after npm install due to an esbuild error by regenerating package-lock.json, updating frontend snapshots, and reverting the merge commit check. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5029](https://github.com/headlamp-k8s/headlamp/issues/5029) | | Fixed a Map view bug where resources with the same name in different namespaces were incorrectly linked by adding namespace checks to resource relation matching. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). Also thanks to [@&#8203;rassie](https://github.com/rassie) for reporting the issue. [#&#8203;5006](https://github.com/headlamp-k8s/headlamp/issues/5006) | | Fixed AppImage crash on Linux caused by chrome-sandbox permission issues by disabling the setuid sandbox in AppImage environments. | Thanks to [@&#8203;kunaldevsahu](https://github.com/kunaldevsahu). Also thanks to [@&#8203;eftewuer](https://github.com/eftewuer) for reporting the issue. [#&#8203;4996](https://github.com/headlamp-k8s/headlamp/issues/4996) | | Fixed truncation of long Kubernetes condition names (e.g. PodReadyToStartContainers) in resource detail Conditions tables so full names are always visible. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;4967](https://github.com/headlamp-k8s/headlamp/issues/4967) | | Fixed pod metrics matching to use both name and namespace, preventing incorrect CPU/memory stats for pods sharing the same name across different namespaces. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;4933](https://github.com/headlamp-k8s/headlamp/issues/4933) | | Fixed GlobalSearch bar visibility on dark or colored navbars by adding explicit backgrounds, ensuring the search field is visible at all zoom levels and themes. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;4930](https://github.com/headlamp-k8s/headlamp/issues/4930) | <br><br> <br><br> #### 🔒 Security | Security improvements | | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Hardened service proxy URI validation to block path traversal and protocol-relative URLs that could redirect requests to arbitrary hosts. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5299](https://github.com/headlamp-k8s/headlamp/issues/5299) | | Bumped multiple app, plugin, and backend dependencies including storybook, i18next-fs-backend, xmldom, and headlamp-plugin to keep packages up to date and fix build issues. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5122](https://github.com/headlamp-k8s/headlamp/issues/5122) | | Bumped backend and headlamp-plugin dependencies including OpenTelemetry, go-jose, and Vite to keep packages up to date and secure. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5108](https://github.com/headlamp-k8s/headlamp/issues/5108) | | Validate host header to protect desktop and headless users. | Thanks to [@&#8203;illume](https://github.com/illume). Also thanks to Koda Reef for reporting the issue. [#&#8203;5419](https://github.com/headlamp-k8s/headlamp/issues/5419) | | Updated SECURITY.md to reference the kubernetes-sigs security policy, making it easier to find for contributors browsing the repo. | Thanks to [@&#8203;illume](https://github.com/illume). Also thanks to [@&#8203;rassie](https://github.com/rassie) for reporting the issue. [#&#8203;5081](https://github.com/headlamp-k8s/headlamp/issues/5081) | | Bumped multiple dependencies including tar, flatted, typedoc, body-parser, undici, and others to address security and compatibility updates. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;4948](https://github.com/headlamp-k8s/headlamp/issues/4948) | | Bumped tar dependency from 7.5.10 to 7.5.11 in the sidebar plugin example to include a symlink escape fix. | . [#&#8203;4880](https://github.com/headlamp-k8s/headlamp/issues/4880) | <br><br> <br><br> #### ♿ Accessibility | Accessibility improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Replaced the accessible-name violation caused by role=button on a label element in DropZoneBox with a ref-based file input trigger. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5272](https://github.com/headlamp-k8s/headlamp/issues/5272) | | Unified sorting icons in SimpleTable to match ResourceTable's MUI arrow style and added tooltips to sorting buttons for better accessibility. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). [#&#8203;4952](https://github.com/headlamp-k8s/headlamp/issues/4952) | | Fixed heading hierarchy in the ReleaseNotesModal story so the h3 fixture is properly nested under h1/h2 ancestors, and updated the storyshot snapshot to match. | Thanks to [@&#8203;iashutoshyadav](https://github.com/iashutoshyadav). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5315](https://github.com/headlamp-k8s/headlamp/issues/5315) | <br><br> <br><br> #### 📖 Documentation | Documentation improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | | Deduplicated nodes and edges in the resource map graph after merging sources, eliminating duplicate elements that could cause rendering issues. | Thanks to [@&#8203;mahmoudmagdy1-1](https://github.com/mahmoudmagdy1-1). [#&#8203;5400](https://github.com/headlamp-k8s/headlamp/issues/5400) | | Added NKP (Nutanix Kubernetes Platform) to the supported platforms documentation, confirming it works with Headlamp out of the box. | Thanks to [@&#8203;jlnhnng](https://github.com/jlnhnng). [#&#8203;5173](https://github.com/headlamp-k8s/headlamp/issues/5173) | | Added Linode Kubernetes Engine (LKE) to the list of tested and supported platforms in the documentation. | Thanks to [@&#8203;ruckus-voxi](https://github.com/ruckus-voxi). [#&#8203;5116](https://github.com/headlamp-k8s/headlamp/issues/5116) | | Added a tutorial showing how to build a WhoAmI plugin that displays user identity in the cluster sidebar using the SelfSubjectReview API. | Thanks to [@&#8203;yolossn](https://github.com/yolossn). [#&#8203;5080](https://github.com/headlamp-k8s/headlamp/issues/5080) | | Fixed multiple documentation issues including a grammatical error, stale Code of Conduct link, duplicate sections, outdated dependency versions, and broken internal links. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5060](https://github.com/headlamp-k8s/headlamp/issues/5060) | | Added documentation for MCP (Model Context Protocol) support to the Headlamp learn section, helping users discover and configure the feature. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). [#&#8203;4998](https://github.com/headlamp-k8s/headlamp/issues/4998) | | Added HolmesGPT documentation to the Learn section, making it easier to find and use HolmesGPT guidance within the docs. | Thanks to [@&#8203;vyncent-t](https://github.com/vyncent-t). [#&#8203;4997](https://github.com/headlamp-k8s/headlamp/issues/4997) | <br><br> <br><br> #### 💻 Development (part 1) | Development improvements | | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Added end-to-end tests verifying the Prometheus plugin is correctly bundled and its settings page is accessible in the UI. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5362](https://github.com/headlamp-k8s/headlamp/issues/5362) | | Storybook mocks now return HTTP 404 for deprecated v1beta1 CRD endpoints, better reflecting real cluster behavior in component stories. | Thanks to [@&#8203;mystic-06](https://github.com/mystic-06). Also thanks to [@&#8203;skoeva](https://github.com/skoeva) for reporting the issue. [#&#8203;5040](https://github.com/headlamp-k8s/headlamp/issues/5040) | | Host header validation added on loopback listeners to reduce the risk of DNS rebinding attacks against the local backend server. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5419](https://github.com/headlamp-k8s/headlamp/issues/5419) | | Bumped Go to 1.25.9 to address stdlib CVEs, improving the security of the backend. | Thanks to [@&#8203;yolossn](https://github.com/yolossn). [#&#8203;5410](https://github.com/headlamp-k8s/headlamp/issues/5410) | | Kubernetes volume status phases such as "Bound" and "Pending" are now translated, so they respect the user's selected locale instead of always appearing in English. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5331](https://github.com/headlamp-k8s/headlamp/issues/5331) | | Core API discovery failures (e.g. due to timeouts or RBAC issues) are now logged instead of silently swallowed, making it easier to diagnose missing resources in the UI. | Thanks to [@&#8203;Joshna907](https://github.com/Joshna907). [#&#8203;5329](https://github.com/headlamp-k8s/headlamp/issues/5329) | | Switched plugin cache error checks to use `errors.Is()` so wrapped `cache.ErrNotFound` errors are correctly detected and plugin listing behaves reliably. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5326](https://github.com/headlamp-k8s/headlamp/issues/5326) | | Reverted Storybook stories for AddCluster component that were causing CI failures. | Thanks to [@&#8203;skoeva](https://github.com/skoeva). [#&#8203;5301](https://github.com/headlamp-k8s/headlamp/issues/5301) | | Silent errors in terminal shell detection functions are now logged via console.debug, making node shell connection failures easier to debug. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5282](https://github.com/headlamp-k8s/headlamp/issues/5282) | | Replaced direct Helm sentinel error comparisons with errors.Is, ensuring wrapped errors are correctly detected in release-not-found checks. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5280](https://github.com/headlamp-k8s/headlamp/issues/5280) | | Reverted a namespace filter reset change that caused crashes when navigating to namespace views with an active namespace filter selected. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5271](https://github.com/headlamp-k8s/headlamp/issues/5271) | | Added an i18n-check step to CI to automatically catch translation file regressions as dependencies and code are updated. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5257](https://github.com/headlamp-k8s/headlamp/issues/5257) | ##### Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states. <img width="1907" height="947" alt="frontend(KubeConfigLoader): Add Storybook stories with all component …" src="https://github.com/user-attachments/assets/3d07f544-66d5-44c0-8e4a-8f7d3c7e8684" /> <br><br> <br><br> #### 💻 Development (part 2) | Development improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Refactored Event hooks into standalone exported functions, fixing React hooks-rules violations and making useEventListForClusters and useEventWarningList available to consumers. | Thanks to [@&#8203;Utkarshpandey0001](https://github.com/Utkarshpandey0001). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5255](https://github.com/headlamp-k8s/headlamp/issues/5255) | | Replaced `log.Printf` with the structured logger in the telemetry package, aligning warning output with the rest of the backend. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5221](https://github.com/headlamp-k8s/headlamp/issues/5221) | | Added Copilot PR review instructions to automate common review feedback, helping enforce project standards more consistently. | Thanks to [@&#8203;joaquimrocha](https://github.com/joaquimrocha). [#&#8203;4937](https://github.com/headlamp-k8s/headlamp/issues/4937) | | Added `console.debug` logging to previously silent catch blocks across frontend components, making errors visible during debugging. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5220](https://github.com/headlamp-k8s/headlamp/issues/5220) | | Replaced hardcoded `context.TODO()` in the service proxy with proper request-scoped context, enabling correct cancellation and deadline propagation. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5219](https://github.com/headlamp-k8s/headlamp/issues/5219) | | Replaced an incorrectly imported MUI icon with the Iconify equivalent in the Table component, restoring consistent icon rendering. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5178](https://github.com/headlamp-k8s/headlamp/issues/5178) | | Replaced `console.log` with `console.debug` for IndexedDB operational messages, keeping them available in development while hiding them in production. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5177](https://github.com/headlamp-k8s/headlamp/issues/5177) | | Removed 54 lines of unreachable dead code from `UpdatePopup` and hardened `window.open` usage, simplifying the component and improving safety. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5175](https://github.com/headlamp-k8s/headlamp/issues/5175) | | Expanded test coverage for the k8cache package, covering previously untested branches to improve backend reliability. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5172](https://github.com/headlamp-k8s/headlamp/issues/5172) | | Upgraded Node.js to v22.x LTS across all CI workflows and package.json engines fields to stay ahead of Node 20 end-of-life. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5170](https://github.com/headlamp-k8s/headlamp/issues/5170) | | Removed a legacy Webpack-specific workaround from ErrorPage, cleaning up the component now that Headlamp fully uses Vite for SVG imports. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5143](https://github.com/headlamp-k8s/headlamp/issues/5143) | | Enabled eslint-plugin-react-hooks lint rules in the frontend to surface hard-to-debug React hook mistakes earlier in development. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5155](https://github.com/headlamp-k8s/headlamp/issues/5155) | | Frontend lint warnings are now enforced as CI-blocking errors, with pre-existing violations suppressed, improving long-term code quality. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;5196](https://github.com/headlamp-k8s/headlamp/issues/5196) | ##### Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states. <img width="1469" height="809" alt="Screenshot 2026-04-27 at 6 58 04 PM" src="https://github.com/user-attachments/assets/20ef2bcb-1a63-4a2c-b059-1fdf085db9c5" /> <br><br> <br><br> #### 💻 Development (part 3) | Development improvements | | | :-------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Added a README for the Headlamp Releaser CLI tool documenting prerequisites, usage, and how it automates version bumping, tagging, and publishing. | Thanks to [@&#8203;illume](https://github.com/illume). [#&#8203;4942](https://github.com/headlamp-k8s/headlamp/issues/4942) | | Increased pkg/config test coverage from 74.2% to 83.9% by adding unit tests for session TTL validation and default-application logic. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5139](https://github.com/headlamp-k8s/headlamp/issues/5139) | | Removed the Create button from pod lists inside parent resource detail views (e.g. Jobs, Deployments) where adding pods directly is not valid. | Thanks to [@&#8203;kannon92](https://github.com/kannon92). [#&#8203;5136](https://github.com/headlamp-k8s/headlamp/issues/5136) | | CRD list fetch errors in the sidebar now use console.error instead of console.log, ensuring correct severity in browser developer tools. | Thanks to [@&#8203;NAME-ASHWANIYADAV](https://github.com/NAME-ASHWANIYADAV). [#&#8203;5128](https://github.com/headlamp-k8s/headlamp/issues/5128) | | Added unit tests for the Helm handler, bringing test coverage from 0% to 90.8% and improving backend reliability. | Thanks to [@&#8203;Athang69](https://github.com/Athang69). [#&#8203;5124](https://github.com/headlamp-k8s/headlamp/issues/5124) | | Replaced context.TODO() with explicit context.Background() in the drainNode goroutine, fixing improper context propagation in the backend. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5095](https://github.com/headlamp-k8s/headlamp/issues/5095) | | Removed leftover development console.log statements from the Backstage integration to keep the browser console clean in production. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5094](https://github.com/headlamp-k8s/headlamp/issues/5094) | | Replaced loose `as any` casts with strictly typed `Partial<Response>` in auth tests, reducing the risk of silent false-positive test results. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5075](https://github.com/headlamp-k8s/headlamp/issues/5075) | | Removed an outdated TODO comment in `NameValueTable.tsx` that no longer applies after the React 18 migration was completed. | Thanks to [@&#8203;itvi-1234](https://github.com/itvi-1234). [#&#8203;5064](https://github.com/headlamp-k8s/headlamp/issues/5064) | | Escaped URLs in library typedoc comments to prevent the parser from misinterpreting them. | Thanks to [@&#8203;ashu8912](https://github.com/ashu8912). [#&#8203;5027](https://github.com/headlamp-k8s/headlamp/issues/5027) | | Fixed activity panel text alignment for the cluster indicator and corrected text colors for themes with custom primary colors such as 'Lights Out'. | Thanks to [@&#8203;sniok](https://github.com/sniok). [#&#8203;5020](https://github.com/headlamp-k8s/headlamp/issues/5020) | | Added 13 Storybook stories for ResourceTableMultiActions, covering all meaningful selection states to aid frontend development and testing. | Thanks to [@&#8203;mystic-06](https://github.com/mystic-06). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;4971](https://github.com/headlamp-k8s/headlamp/issues/4971) | | Added Storybook stories for the AddCluster component, making it easier to visually develop and test its key UI states. | Thanks to [@&#8203;Dharmiksarvaiya24](https://github.com/Dharmiksarvaiya24). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5171](https://github.com/headlamp-k8s/headlamp/issues/5171) | | Added Storybook stories for the KubeConfigLoader component, enabling visual testing of all kubeconfig upload and cluster import UI states. | Thanks to [@&#8203;vishnukothakapu](https://github.com/vishnukothakapu). Also thanks to [@&#8203;illume](https://github.com/illume) for reporting the issue. [#&#8203;5166](https://github.com/headlamp-k8s/headlamp/issues/5166) | <br><br> <br><br> #### 🧩 Official Plugin releases - [Volcano 0.2.0-beta](https://github.com/headlamp-k8s/plugins/releases/tag/volcano-0.2.0-beta) - [minikube 0.3.0](https://github.com/headlamp-k8s/plugins/releases/tag/minikube-0.3.0) - [Kubeflow 0.1.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/kubeflow-0.1.0-alpha) - [Strimzi 0.4.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/strimzi-0.4.0-alpha) - [Cluster API 0.1.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/cluster-api-0.1.0-alpha) - [Volcano 0.1.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/volcano-0.1.0-alpha) - [Knative 0.2.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/knative-0.2.0-alpha) - [ai-assistant v0.2.0-alpha](https://github.com/headlamp-k8s/plugins/releases/tag/ai-assistant-0.2.0-alpha) <!-- end-release-notes --> <br><br> **Container image:** :whale: [ghcr.io/headlamp-k8s/headlamp:v0.42.0](https://github.com/kubernetes-sigs/headlamp/pkgs/container/headlamp) **Desktop Apps:** ⚠️ <strong>Important:</strong> Information on warnings from Mac and Windows <a href="https://headlamp.dev/docs/latest/installation/desktop/" target="_blank" rel="noopener noreferrer">when running Headlamp unsigned apps.</a> :penguin: [Flatpak / Linux (AMD64)](https://flathub.org/apps/details/io.kinvolk.Headlamp) :penguin: Linux AppImage [AMD64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-x64.AppImage), [ARM64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-arm64.AppImage), [ARMv7l](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-armv7l.AppImage) :penguin: Linux Tarball [AMD64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-x64.tar.gz), [ARM64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-arm64.tar.gz), [ARMv7l](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-linux-armv7l.tar.gz) :penguin: Debian / Linux [AMD64](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/headlamp_0.42.0-1_amd64.deb) :green\_apple: [Mac (AMD64)](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-mac-x64.dmg) :green\_apple: [Mac (ARM/M1)](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-mac-arm64.dmg) :blue\_square: [Windows (AMD64)](https://github.com/kubernetes-sigs/headlamp/releases/download/v0.42.0/Headlamp-0.42.0-win-x64.exe) </details> --- ### Configuration 📅 **Schedule**: (in timezone America/Chicago) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNjguNSIsInVwZGF0ZWRJblZlciI6IjQzLjE2OS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkb2NrZXIiLCJoZWxtIl19-->
renovate-bot added the docker label 2026-05-07 12:04:20 +00:00
renovate-bot added the helm label 2026-05-07 14:05:05 +00:00
renovate-bot added 1 commit 2026-05-07 20:38:29 +00:00
chore(deps): update headlamp to v0.42.0
Some checks failed
lint-test-helm / lint-helm (pull_request) Failing after 1s
lint-test-helm / validate-kubeconform (pull_request) Has been skipped
render-manifests / render-manifests (pull_request) Successful in 1m52s
8d39d67143
renovate-bot force-pushed renovate/unified-headlamp from a024a05605 to 8d39d67143 2026-05-07 20:38:29 +00:00 Compare
alexlebens merged commit 77029c38bd into main 2026-05-07 20:40:18 +00:00
alexlebens deleted branch renovate/unified-headlamp 2026-05-07 20:40:22 +00:00
Sign in to join this conversation.