github kubernetes-sigs/headlamp v0.45.0
0.45.0

latest release: headlamp-helm-0.45.0
one hour ago

Headlamp 0.45.0 reduces desktop startup memory and unnecessary background requests, while adding new scheduling and Gateway API views, guided resource creation forms, and more flexible plugin and product customization. Security updates protect desktop APIs, verify external plugin archives, and close command-consent and dependency vulnerabilities. Accessibility improvements make high-zoom layouts, keyboard controls, and custom theme contrast more usable, alongside 31 bug fixes across authentication, port forwarding, Resource Map, tables, and the desktop app.

⚡ Performance

Plugin i18n now fetches only the active locale's translation file instead of all declared locales, preventing a flood of 404 requests when a plugin declares multiple languages. Thanks to:
@YousufFFFF
@r0hansaxena.
Thanks to @mjeanrichard for reporting.
#7363
Desktop startup now defers optional work, retains smaller Kubernetes objects, and tunes garbage collection, reducing memory by about 60 MiB RSS across combined isolated measurements. Thanks to @illume.
#7358
Replaced the manual setInterval in useClustersVersion with React Query's useQueries, so polling pauses when the browser tab is hidden and unnecessary network requests to connected clusters are avoided. Thanks to:
@shreyas-acharya
@illume.
#6707

✨ Enhancements (part 1)

Added target container selection for ephemeral debug containers, allowing users to share the process namespace and filesystem of a specific container in multi-container pods during debugging. Thanks to:
@Suyog241005
@yush-1018.
Thanks to @eightfourseventwo for reporting.
#7245
Added a 'Keep Large Graph Groups Expanded' setting that persists namespace group expansion state across sessions, eliminating repetitive manual expansion clicks on large cluster resource maps. Thanks to:
@Suyog241005
@mudit06mah.
Thanks to @syorito-hatsuki for reporting.
#7156
A right-click context menu with copy and paste options has been added to the pod terminal, so users can copy and paste text without workarounds. Thanks to @rootp1.
Thanks to @jimmyjones2 for reporting.
#7121
Added a form-based UI for creating PersistentVolumeClaims, including multi-select access mode support, so users can provision storage directly from the Storage section without writing raw YAML. Thanks to @anoopw3bdev.
#5333
Validated legal documents from the build manifest now appear in About and Legal tabs, letting desktop products present licenses and third-party notices in the app. Thanks to:
@illume
@joaquimrocha.
#7299
Exposed the host operating-system platform through the context-isolated desktop preload API, allowing frontend plugin authors to write platform-aware behavior in Electron builds. Thanks to:
@illume
@sniok.
#7291
Products can now configure custom titles and graphics for error and not-found pages at build time, allowing branded distributions to replace Headlamp's default error content without modifying source code. Thanks to:
@illume
@joaquimrocha.
#7288
The backend app name is configurable through --app-name or HEADLAMP_CONFIG_APP_NAME, letting branded distributions customize version output and User-Agent headers without maintaining a fork. Thanks to:
@illume
@sniok.
#7248
The Azure AKS plugin now receives its required script permissions from app configuration, allowing it to run without manual permission setup. Thanks to @sniok.
#7144

Target a specific container when debugging a pod

Choose which application container an ephemeral debug container targets, making its processes and filesystem available for more effective troubleshooting.

Dialog for selecting the target container when debugging a pod

Cordoned and Drained node status indicators

See at a glance when a node is unavailable for scheduling instead of mistaking every Ready node for an active one.

TCPRoute and UDPRoute resource views

Browse and inspect Gateway API TCPRoute and UDPRoute resources directly alongside Headlamp's other Kubernetes resources.

Delete or evict pods

Choose eviction when maintenance should respect disruption safeguards, while retaining direct deletion when it is explicitly needed.

Pod action menu offering both Delete and Evict

PodGroup and Workload scheduling views

Inspect scheduling resources and their status in dedicated views, making batch workload placement easier to understand.

PodGroup and Workload scheduling views






✨ Enhancements (part 2)

Node list and detail views now display Cordoned and Drained status indicators, making it immediately clear when nodes are unschedulable without requiring users to inspect node conditions manually. Thanks to @tejhan.
Thanks to @sarg3nt for reporting.
#7100
Plugins can replace or wrap the no-clusters Home page through registerClusterEmptyState, enabling custom onboarding while retaining Headlamp's default actions. Thanks to:
@illume
@sniok.
#7075
Pods without a scheduled node are now grouped under an Unscheduled node in the Resource Map when grouping by node, so pending pods remain visible instead of disappearing from the view. Thanks to:
@illume
@gambtho.
#7069
Desktop plugin and kubeconfig directories are now isolated by product name using a new --kubeconfig-dir option, preventing data collisions between different branded distributions sharing the same machine. Thanks to:
@illume
@yolossn.
#7068
JobSetList now probes the cluster for the JobSet API before rendering, showing a clear unavailable state with install docs when JobSet is not present instead of a confusing generic error. Thanks to @Pritz395.
#7016
TCPRoute and UDPRoute resources now have dedicated list and detail views in the Gateway API section, giving users full L4 route visibility alongside the existing HTTPRoute and GRPCRoute support. Thanks to @areycruzer.
#7002
GraphView and KubeIcon are now exported through pluginLib, allowing plugin authors to embed the resource map's graph renderer and icon set directly in their own pages. Thanks to @rootp1.
Thanks to @danbruno101 for reporting.
#6992
The Service details view now lists the pods matched by the service selector, making it immediately obvious when a selector is misconfigured or targets no pods without manually cross-referencing endpoints. Thanks to @krsatyamthakur-droid.
Thanks to @jimmyjones2 for reporting.
#6972
Hover-to-copy buttons have been added to IP and address table cells, allowing users to grab Pod IP, Cluster IP, External IP, and Endpoint addresses without manually selecting text. Thanks to:
@rootp1
@pallava-joshi.
Thanks to @joaquimrocha for reporting.
#7097

Terminal context menu

Copy and paste from a pod terminal using a familiar right-click menu instead of relying only on keyboard shortcuts.

Right-clicking in the terminal opens a Copy and Paste context menu

Custom cluster empty states

Plugins can replace or extend the no-clusters screen, allowing distributions to provide onboarding that fits their environment.

Custom cluster empty state

Resource Map plugin APIs

Plugins can reuse Headlamp's graph view and Kubernetes icons to build visualizations that remain consistent with the rest of the interface.

GraphView rendered standalone in Storybook with Resource Map controls

High-resolution system tray icon

The desktop tray icon now stays sharp on high-density displays instead of appearing soft or pixelated.

StatefulSet creation form

Create StatefulSets through a structured form with guided fields instead of writing the complete manifest by hand.






✨ Enhancements (part 3)

Project header actions can switch detail tabs programmatically, enabling plugin-defined workflows without relying on DOM event workarounds. Thanks to:
@illume
@gambtho.
#6936
Added Czech, Hungarian, Indonesian, Dutch, Polish, Swedish, and Turkish locales and expanded Brazilian Portuguese, letting more users work in their preferred language. Thanks to:
@illume
@skoeva.
#6893
macOS builds can embed product-specific license agreements in DMG installers, so users can review terms during installation. Thanks to:
@illume
@joaquimrocha.
#6887
Exported the WorkloadLogs component and its props through the plugin API, allowing plugin authors to embed the multi-pod workload log viewer inline in their own UI surfaces. Thanks to:
@illume
@sniok.
#6886
Plugin overview sections can decide whether they apply to the current project, hiding irrelevant content and reducing page clutter. Thanks to:
@illume
@sniok.
#6860
Headlamp fetches configured namespaces individually when cluster-wide listing is forbidden, so restricted users can see allowed namespaces without unauthorized requests. Thanks to:
@illume
@sniok.
#6834
Build manifests can set validated product identity and protocol metadata, letting distributors brand packages without overwriting unrelated Headlamp defaults. Thanks to:
@illume
@sniok
@joaquimrocha.
#6831
The system tray tooltip and Open/About menu labels now use the configured app name instead of the hardcoded string 'Headlamp', so custom-branded builds display their product name consistently throughout the tray UI. Thanks to @skoeva.
#6931
The Linux executable name is now derived automatically from package and product metadata rather than being hardcoded, so renaming the product correctly propagates to the Linux binary without manual updates. Thanks to:
@illume
@joaquimrocha.
#6909
Changed Electron Builder artifact filenames to use the package name instead of the display product name, allowing downstream distributions to customize package identity without altering the user-facing product name. Thanks to:
@illume
@joaquimrocha.
#6859

Persistent volume claim creation form

Request persistent storage through a guided form, reducing the need to remember volume claim YAML fields and syntax.

Form for creating a persistent volume claim

Unscheduled pods grouped in Resource Map

Pending pods remain visible when grouping by node, collected under an Unscheduled group until the scheduler places them.

Resource Map grouped by node with pending pods under Node Unscheduled

Pods selected by a Service

View the pods matched by a Service directly from its details, making selector and routing problems faster to diagnose.

Namespace label selectors in cluster settings

Define allowed namespaces by label so access follows matching workloads automatically without maintaining a static namespace list.

Plugin-provided resource relationships

Plugins can teach Resource Map about domain-specific relationships, revealing connections that Headlamp cannot infer on its own.






✨ Enhancements (part 4)

Build manifests can customize validated Linux, macOS, and Windows packaging metadata, letting distributors tailor artifacts while catching invalid configuration before packaging. Thanks to:
@illume
@ashu8912.
#6830
Bundled plugins can declare enabledByDefault in the build manifest, letting distributors ship plugins disabled without post-build edits. Thanks to:
@illume
@joaquimrocha.
#6828
Workload detail pages now display the Service Account with a link to its RoleBindings, making it easy to audit a workload's permissions without having to drill into individual pods. Thanks to @krsatyamthakur-droid.
Thanks to @jimmyjones2 for reporting.
#6819
Pod action menus now expose both Delete and Evict as a split button so users can choose the appropriate action — such as evict to respect PodDisruptionBudgets — without changing the global setting in Settings. Thanks to @krsatyamthakur-droid.
Thanks to @segevfiner for reporting.
#6792
Added a 2× retina system tray icon so the Headlamp icon renders sharply on macOS high-density displays instead of appearing blurry. Thanks to @skoeva.
#6775
Cluster settings now accept a namespace label selector, so shared-cluster teams can automatically scope Headlamp without maintaining a static namespace list. Thanks to @guillaumebernard84.
#6759
ClusterProfile discovery is scoped to each consumer namespace by default, reducing broad access while still supporting explicitly configured shared inventories. Thanks to @kahirokunn.
#6669
Made the resource detail page header (back button, title, and action buttons) sticky while scrolling, so users no longer need to scroll back to the top to navigate or perform actions. Thanks to @NAME-ASHWANIYADAV.
#6616

Product legal documents

Distributions can surface their licenses and other legal documents inside the app, keeping required information easy to find.

Legal tab showing manifest-declared product documents

Seven additional language packs

More users can navigate Headlamp in their preferred language, with new Czech, Hungarian, Indonesian, Dutch, Polish, Swedish, and Turkish translations.

General Settings language selector showing the added Czech, Hungarian, Indonesian, Dutch, Polish, Swedish, and Turkish locales alongside existing languages

Namespace-scoped ClusterProfile discovery

Limit ClusterProfile discovery to the configured namespace, reducing unnecessary access and supporting more restrictive cluster permissions.

ClusterProfile discovery scoped to a namespace






✨ Enhancements (part 5)

Added dedicated views for the Kubernetes v1.36 PodGroup and Workload scheduling APIs, making gang-scheduling resources visible in Headlamp without requiring CRDs or Advanced Search workarounds. Thanks to @Anjali-Chauhan1.
Thanks to @kannon92 for reporting.
#6562
Added a guided create form for StatefulSets with metadata, spec, and pod template sections, bringing StatefulSet creation to feature parity with Deployments, DaemonSets, and other workload types. Thanks to @vyncent-t.
#6554
Re-added the workload diagnostics section to workload detail pages with a redesigned layout matching other Headlamp detail sections, giving users a consolidated view of workload health issues. Thanks to @xonas1101.
#5964
The editor now preserves unsaved changes and shows an inline warning when a Kubernetes resource is modified externally, preventing silent data loss and giving users a clear path to resolve conflicts. Thanks to:
@sudhidutta7694
@illume.
Thanks to @jimmyjones2 for reporting.
#5894
Plugins can define custom Resource Map relationships, so implicit dependencies such as Crossplane composite resources appear beyond OwnerReferences. Thanks to @Joshna907.
#5453

Product-specific error pages

Branded distributions can provide their own error titles and illustrations while preserving Headlamp's defaults when no customization is supplied.

Product-specific not-found title and illustration

Service accounts in workload details

See which service account a workload uses without inspecting its YAML, making identity and permission troubleshooting more direct.

Workload details showing its service account

Sticky resource detail headers

Resource names and actions remain available while scrolling through long detail pages, preserving context and reducing navigation.

🐞 Bug fixes (part 1)

Fixed a broken context lookup key in the port-forward handler so that port forwarding no longer fails with "Unreachable" on clusters affected by the regression introduced in 0.43. Thanks to:
@r0hansaxena
@illume.
Thanks to @rforced for reporting.
#6109
Zoom level is now saved immediately and re-applied after pane switches, window focus changes, and route navigation, so the chosen zoom setting persists reliably across the Electron app session. Thanks to @Aamod007.
Thanks to @andrewbaxter for reporting.
#6502
Restored translations that were accidentally removed in a prior PR, so previously localized strings are visible again across the UI. Thanks to @sniok.
#7237
Script paths are now resolved to file URLs before importing, so running scripts with HEADLAMP_RUN_SCRIPT=true no longer fails on Windows paths starting with a drive letter like C:/. Thanks to @sniok.
#7143
Fixed a sticky header overlapping page content and a hidden back-link in the resource details side panel, so users can see all content and navigation without layout interference. Thanks to @tejhan.
#7103
Headlamp-plugin CLI commands now route .cmd shims through cmd.exe on Windows, fixing failures caused by Node's CVE-2024-27980 mitigation that blocks direct .cmd/.bat execution. Thanks to @skoeva.
#5861






🐞 Bug fixes (part 2)

Relative PKI paths in kubeconfig files are now resolved against the kubeconfig file's directory, so kubeconfigs that work with kubectl also connect successfully in Headlamp Desktop. Thanks to @Pritz395.
Thanks to @AGou-ops for reporting.
#6657
When an in-cluster OIDC provider is rejected by the Kubernetes API server, Headlamp now surfaces a clear error message instead of silently redirecting users to the login screen in an endless loop. Thanks to:
@tejhan
@illume.
#6431
Improved useLocalStorageState to restore missing features and fix a real sync bug, so global search and other components relying on local storage state behave correctly across tabs and rerenders. Thanks to @vishnukothakapu.
#5936
Fixed WebSocket cluster API requests failing to derive user-specific auth tokens correctly, so WebSocket connections now authenticate properly instead of falling back incorrectly. Thanks to:
@gambtho
@rishh09.
Thanks to @ecthelion77 for reporting.
#7319
Shell discovery on Windows now skips Unix-specific lookups, preventing errors during desktop environment resolution on Windows systems. Thanks to:
@illume
@joaquimrocha.
#7065
SimpleTable body cells can now display overflowing content instead of clipping it, so users see complete cell values without truncation while header layout stays constrained. Thanks to:
@illume
@sniok.
#7052






🐞 Bug fixes (part 3)

Local and shipped plugin assets are now served with no-cache headers, ensuring operators and developers always receive the latest plugin files without stale cached versions. Thanks to:
@illume
@sniok.
#7061
The resource Map view no longer hangs indefinitely on a loading spinner when a data source fails to resolve, so users can continue using the map even when some sources are unavailable. Thanks to @rootp1.
Thanks to @danbruno101 for reporting.
#6988
Inline plugin source-map line offsets are now shifted to account for the two lines added by the Function constructor, so stack traces in browser developer tools point to the correct source locations in large plugins. Thanks to:
@illume
@sniok.
#6903
Fixed AddRepo silently wiping credentials and TLS certificate fields when re-adding an existing Helm repository, preventing subsequent failures against private or mTLS-secured repos. Thanks to @CygnusMaximillian.
Thanks to @Abhi190702 for reporting.
#6885
Fixed cache-suppression headers being registered with defer in the service proxy so they are now sent before any response writes, making no-cache directives actually reach clients. Thanks to @CygnusMaximillian.
Thanks to @Abhi190702 for reporting.
#6880
Reloaded the page after successful cluster deletion so stale cluster-scoped browser state is cleared, while preserving the current page and error context when deletion fails. Thanks to:
@illume
@sniok.
#6864
Node shell pod creation errors are now surfaced in the terminal UI instead of only logging to the console, so users can see why a shell failed to open instead of waiting on a blank screen. Thanks to @YousufFFFF.
#6844
Deferred translation of default keyboard shortcuts until i18next is ready, eliminating the console warnings about uninitialized i18next and missing keys that appeared on every app startup. Thanks to @KeerthiKumarR.
#6814






🐞 Bug fixes (part 4)

Added scroll-position preservation to auto-refreshing resource tables so the view no longer jumps back to the top when data is polled, allowing users to stay in place while browsing long lists. Thanks to @WasThatRudy.
Thanks to @prisha-sh for reporting.
#6787
Added underscore-based folder name variants for the AI assistant plugin so marketplace-installed users whose plugin folder is named headlamp_ai_assistant correctly receive run-command consent and injection. Thanks to @PixelRobots.
#6737
Suppressed misleading kubeconfig error messages on startup for in-cluster deployments, so operators are no longer alarmed by errors that are expected and harmless in that mode. Thanks to:
@tejhan
@illume.
#6688
Fixed streamResultsForCluster to retain the newest resources instead of the oldest when the result set is capped, so the streaming API limit behaves as intended. Thanks to @xevrion.
#6675
Removed Kubernetes 1.22-deleted v1beta1 API versions for Ingress and CRD resources, preventing 404 errors and console noise on every modern cluster. Thanks to @qiangli.
#6655
Fixed normalizeUnit() returning the literal string "undefined" or "NaN undefined" for memory values below 1 byte, so sub-byte Kubernetes quantities like 500m display correctly. Thanks to @anushkagupta200615-jpg.
#6629






🐞 Bug fixes (part 5)

Fixed decimal CPU quantities like '2.0' displaying with a trailing zero in the UI, so values now render as '2 cores' for a cleaner and less confusing presentation. Thanks to @AarishMansur.
#6444
Fixed an off-by-one logic error that caused tab components to always open at index 0 regardless of the configured default, allowing tabs to correctly honor their initial selection. Thanks to @skools-here.
#6410
Fixed a conflict between the global shortcut handler and Chrome's paste behavior that blocked pasting authentication tokens into the ID token field, allowing users to paste credentials normally. Thanks to @bhuvan-somisetty.
#6282
Fixed memory quantity parsing to correctly handle the milli-bytes (m) suffix, preventing wildly incorrect memory usage percentages from appearing in the Node detail view. Thanks to @yu-heejin.
#5809
Added null guards for partial CRD specs in makeCRClass and related methods, preventing crashes that could take down the dashboard during transient watch updates or in-flight refetches. Thanks to @WasThatRudy.
Thanks to @isgj for reporting.
#5717

🔒 Security

Desktop backend APIs are now protected by the per-launch app token, preventing other processes on the same machine from accessing Kubernetes APIs through the local backend. Thanks to @illume.
#7353
Empty namespace selectors remain restricted instead of falling back to cluster-wide access, preventing unintended resource requests. Thanks to @illume.
#7361
Fixed the runCommand consent flow in the desktop app so that denying a plugin's command request immediately stops execution, preventing the command from running even on the first invocation. Thanks to @utkarshalpha.
Thanks to @bhuvan-somisetty for reporting.
#7295
Updated dependencies across backend, frontend, app, headlamp-plugin, and container images to resolve known security vulnerabilities, including five Go stdlib CVEs affecting net/url, html/template, and TLS handling. Thanks to @illume.
#7373
Updated oras-go and x/sync dependencies to satisfy security scans and remove known dependency risk without changing Headlamp APIs or behavior. Thanks to @skoeva.
#6953
External plugin manifests can now be selected via HEADLAMP_BUILD_MANIFEST and are verified with SHA-256 digests, preventing tampered or unexpected plugin archives from being loaded in product builds. Thanks to:
@illume
@sniok.
#6827
Added a releaser security-check command that scans the Go backend with govulncheck and Dockerfiles with hadolint, allowing maintainers to catch known vulnerabilities before cutting a release. Thanks to @rootp1.
#6730
Replaced execSync with execFileSync in scripts that interpolate dynamic values into shell commands, preventing potential command injection from paths containing spaces or shell metacharacters. Thanks to @skoeva.
#4099

♿ Accessibility

Activity panel overview tiles and activity-bar entries now wrap text instead of shrinking on small screens, keeping the panel readable on narrow displays. Thanks to:
@rootp1
@greedy-wudpeckr.
#7146
Warning alerts in dark theme now use explicit background, text, and icon colors, making them meet contrast requirements and easier to read in low-light environments. Thanks to:
@illume
@tejhan.
#7247
The View YAML panel now opens responsively — full-screen on small viewports and in a right-side pane on large screens — so users can read manifests without losing resource-list context. Thanks to:
@illume
@sniok.
#7063
AppTheme now supports a configurable contrast text color for custom secondary colors, allowing plugin authors and theme creators to ensure readable button labels on any secondary palette. Thanks to:
@illume
@tejhan.
#7054
Fixed EditorDialog being clipped at high browser zoom levels by giving its content a stable minimum height and vertical scrolling, so the dialog remains fully usable at any zoom setting. Thanks to:
@illume
@sniok.
#6890
The Debug Image field now has an accessible label and strips whitespace from image references, improving screen-reader narration and preventing invalid references. Thanks to:
@illume
@vyncent-t.
#6858
Appearance controls now include Accent color and Cluster icon section labels in their accessible names, helping screen-reader users distinguish these settings. Thanks to:
@illume
@vyncent-t.
#6836
Project Details tabs are now horizontally scrollable at high text zoom and resource categories stack above the resource table at narrow breakpoints, preventing content from being cut off or unusable when zoomed to 200%. Thanks to:
@illume
@sniok.
#6835
The column selector is rebuilt with semantic menuitemcheckbox items and full keyboard navigation support, allowing keyboard-only users to show and hide table columns without requiring a mouse. Thanks to:
@illume
@sniok.
#6833
Wrapped disabled ActionButton icon buttons in a neutral span so tooltips remain visible on hover and keyboard focus, making disabled actions discoverable without breaking activation guards. Thanks to @rootp1.
#6584

Responsive YAML viewer

The YAML editor uses the available space at every viewport size, keeping long manifests readable without losing surrounding context on larger screens.

Fullscreen YAML viewer on a phone

Accessible text contrast for custom themes

Theme authors can set a readable text color for secondary controls, preventing low-contrast buttons on custom backgrounds.

Cluster settings color picker showing the secondary Cancel button

📖 Documentation

Added a user-facing OpenTelemetry documentation guide covering tracing, metrics, configuration flags, and in-cluster manifests, so operators can now find and enable Headlamp's backend observability support. Thanks to @Harsh63870.
#6407
Replaced the direct Dex OIDC tutorial with a reproducible OAuth2-Proxy pattern and added automated e2e tests, giving operators a verified, recommended reference for deploying Headlamp with OIDC authentication. Thanks to @illume.
#5408

💻 Development

Plugin CI tests are now split into parallel jobs, cutting wall-clock time from roughly 16 minutes to 8 minutes and speeding up feedback for contributors. Thanks to @skoeva.
#5895
OIDC login handlers now have characterization tests, protecting existing authentication behavior while the flow is consolidated and improved. Thanks to @gambtho.
#5420
Added empty cluster-wide PodList mock responses to Storybook so Pod-dependent stories render without errors while still allowing story-specific Pod fixtures to take precedence. Thanks to:
@illume
@skoeva.
#7297
Helm end-to-end tests for plugin manager installations are now part of CI, so regressions in Helm-based plugin workflows are caught automatically before release. Thanks to:
@rootp1
@Vaishnav-Dhaval.
Thanks to @illume for reporting.
#7216
The Electron e2e suite now has its own dedicated Playwright config, removing runtime skip logic and making it easier for developers to run desktop tests reliably without environment variable workarounds. Thanks to @unlikelyzero.
#7003
Package verification now derives Linux, macOS, and Windows names from Electron Builder metadata, so rebranded products validate correctly without hardcoded names. Thanks to:
@illume
@sniok.
#6911
Unit and end-to-end tests now cover shell-free plugin listing across success, failure, and default outputs, catching plugin discovery regressions earlier. Thanks to @illume.
#6908
Prevented the GraphView BasicExample story from starting unnecessary CRD watches by making source and relation discovery lazy, so explicit story definitions skip Kubernetes discovery hooks. Thanks to:
@illume
@skoeva.
#6892
Shared Storybook mocks now cover current CRD discovery and the v1beta1 fallback, so built-in and plugin-template stories render consistently and catch contract regressions. Thanks to:
@illume
@skoeva
@gambtho.
#6832
Added dedicated Storybook stories for ClusterTable covering all connection statuses, origin labels, warnings, versions, the empty state, and the loading state, so regressions in any table variant are caught visually. Thanks to @xonas1101.
#6862
Helm chart version, appVersion, and expected templates are now automatically updated during releaser start, ensuring every release git tag contains the correct chart configuration. Thanks to @Suyog241005.
Thanks to @erwinkramer for reporting.
#6227
Fixed an incorrect useMemo dependency in the port-forward component by depending on t directly instead of i18n.language, so the hook correctly re-runs when translations change without suppressing lint warnings. Thanks to @iashutoshyadav.
#6824
Fixed the release testing checklist generator to use the correct -html-static-dir flag, preventing invalid commands from being generated during release validation. Thanks to @Pragati5-DEBUG.
#6738
Fixed a bug where namespace placeholders were never replaced in generated test resource lists, so mock data now correctly reflects the intended namespace values and regressions are caught by new unit tests. Thanks to @ahmad-kashkoush.
#6475
Accessibility Storybook testing has been restored and updated for the current Storybook version with improved violation reporting, allowing developers to catch a11y regressions in CI. Thanks to:
@unichronic
@illume.
#6559
Pod tooltips are now excluded only from landmark placement checks while remaining covered by all other accessibility rules, preventing false axe region violations without reducing overall accessibility coverage. Thanks to:
@illume
@skoeva.
#7255
Accessibility end-to-end tests now run axe-core in legacy mode, preventing a fatal protocol error caused by axe's default flow attempting to open a new browser page in the Playwright test environment. Thanks to @unlikelyzero.
#6967

Container image: 🐳 ghcr.io/headlamp-k8s/headlamp:v0.45.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)
🟦 Windows (ARM64)

Don't miss a new headlamp release

NewReleases is sending notifications on new releases.