v0.45.0
CompareGitHub
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
| <img src="https://raw.githubusercontent.com/kubernetes-sigs/headlamp/main/docs/images/icon.png" width="800" height="0" alt=""> | <img src="https://raw.githubusercontent.com/kubernetes-sigs/headlamp/main/docs/images/icon.png" width="200" height="0" alt=""> |
|---|---|
| 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:<br>@YousufFFFF<br>@r0hansaxena.<br>Thanks to @mjeanrichard for reporting.<br>#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.<br>#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:<br>@shreyas-acharya<br>@illume.<br>#6707 |
✨ Enhancements (part 1)
| <img src="https://raw.githubusercontent.com/kubernetes-sigs/headlamp/main/docs/images/icon.png" width="800" height="0" alt=""> | <img src="https://raw.githubusercontent.com/kubernetes-sigs/headlamp/main/docs/images/icon.png" width="200" height="0" alt=""> |
|---|---|
| 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:<br>@Suyog241005<br>@yush-1018.<br>Thanks to @eightfourseventwo for reporting.<br>#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:<br>@Suyog241005<br>@mudit06mah.<br>Thanks to @syorito-hatsuki for reporting.<br>#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.<br>Thanks to @jimmyjones2 for reporting.<br>#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.<br>#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:<br>@illume<br>@joaquimrocha.<br>#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:<br>@illume<br>@sniok.<br>#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:<br>@illume<br>@joaquimrocha.<br>#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:<br>@illume<br>@sniok.<br>#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.<br>#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.
<img width="1470" height="724" alt="Dialog for selecting the target container when debugging a pod" src="https://github.com/user-attachments/assets/e50d44b1-0be2-4e3d-85fb-5ea20181cbec" />
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.
<img width="70%" height="auto" alt="frontend: Show Cordoned and Drained status indicators" src="https://github.com/user-attachments/assets/9e38932c-7b6a-491d-8809-f5296e3f2d4a" />
TCPRoute and UDPRoute resource views
Browse and inspect Gateway API TCPRoute and UDPRoute resources directly alongside Headlamp's other Kubernetes resources.
<img width="1280" height="720" alt="frontend: Add TCPRoute and UDPRoute views" src="https://github.com/user-attachments/assets/6ad723f7-0c1c-4ec3-9903-3749476998bf" />
Delete or evict pods
Choose eviction when maintenance should respect disruption safeguards, while retaining direct deletion when it is explicitly needed.
<img width="1470" height="831" alt="Pod action menu offering both Delete and Evict" src="https://github.com/user-attachments/assets/a182ee53-0394-4476-be89-4709185c699e" />
PodGroup and Workload scheduling views
Inspect scheduling resources and their status in dedicated views, making batch workload placement easier to understand.
<img width="1917" height="797" alt="PodGroup and Workload scheduling views" src="https://github.com/user-attachments/assets/e04ecede-f73d-4b21-a667-6f60cf64e4aa" />
<br><br> <br><br>
✨ Enhancements (part 2)
| <img src="https://raw.githubusercontent.com/kubernetes-sigs/headlamp/main/docs/images/icon.png" width="800" height="0" alt=""> | <img src="https://raw.githubusercontent.com/kubernetes-sigs/headlamp/main/docs/images/icon.png" width="200" height="0" alt=""> |
|---|---|
| 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.<br>Thanks to @sarg3nt for reporting.<br>#7100 |
Plugins can replace or wrap the no-clusters Home page through registerClusterEmptyState, enabling custom onboarding while retaining Headlamp's default actions. | Thanks to:<br>@illume<br>@sniok.<br>#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:<br>@illume<br>@gambtho.<br>#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:<br>@illume<br>@yolossn.<br>#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.<br>#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.<br>#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.<br>Thanks to @danbruno101 for reporting.<br>#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.<br>Thanks to @jimmyjones2 for reporting.<br>#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:<br>@rootp1<br>@pallava-joshi.<br>Thanks to @joaquimrocha for reporting.<br>#7097 |
Terminal context menu
Copy and paste from a pod terminal using a familiar right-click menu instead of relying only on keyboard shortcuts.
<img width="1900" height="950" alt="Right-clicking in the terminal opens a Copy and Paste context menu" src="https://raw.githubusercontent.com/rootp1/headlamp/rootp1/pr-7146-screenshots/pr-7121-after.png" />
Custom cluster empty states
Plugins can replace or extend the no-clusters screen, allowing distributions to provide onboarding that fits their environment.
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.
<img width="54" height="35" alt="app: Add retina system tray icon" src="https://github.com/user-attachments/assets/4a6f614c-60c8-4dd2-8260-4016ea64ad89" />
StatefulSet creation form
Create StatefulSets through a structured form with guided fields instead of writing the complete manifest by hand.
<img width="1900" height="994" alt="frontend: CreateStatefulSetForm: Add create form
…(truncated)