✨ Enhancements:
- Add Projects feature (namespace-based, a collection of Kubernetes resources for organizing deployed applications or workloads)
- Gateway API resources can be seen on the map view. Thanks to @userAdityaa
- Add copy to clipboard button on secrets view
- Add Kube config upload options by @Exar04
- Can see more than 20 labels on Nodes and Pods now without clicking edit. Thanks to @shezaan-hashgraph
- Improvements to local cluster support on Mac, and with display of status on Home Overview
- Helm Chart is available on GHCR now. Thanks to @onedr0p and @joryirving
- In the helm chart, ability to specify automountServiceAccountToken in the spec of the pod. Thanks to @vnea
- Now it is possible to add annotations to services in the helm chart. Thanks to @lszczepaniak-XM
- Add oidc-callback-url flag to backend and chart
- Add link to minikube in plugin-catalog on the Add cluster view
- Add support for custom CA and skipping TLS verification to backend and chart, improving flexibility for users working with self-signed OIDC providers
- Improvements to filter, to allow filtering for broken pods and multi select. Thanks to @farodin91
- Handle new k8s feature, native sidecars
- Add support for i18n in plugins
- Add support for changing theme font in plugins. Thanks to @kirederik
- Add experimental cache for k8s API calls to reduce API server load. Thanks to @upsaurav12
- Expand CRs on sidebar, making installations with lots of CRs much more usable. Thanks to @farodin91
New Projects feature

Custom Resources are now grouped in the sidebar
For clusters with many Custom resources installed this makes it much easier to see them grouped in the sidebar.

Gateway API resources can be seen on the map view.


Copy to clipboard button on secrets view

New Kube config upload options
Now people can upload kube config files by URL

🐞 Bug fixes
- Mac app no longer needs reloading to show plugins on some laptops in cases like when Headlamp was first run
- Fix for realtime updates because of web socket error when telemetry was enabled. Thanks to @wingerx
- App no longer needs to wait several seconds longer than necessary for clusters to display
- Sidebar a11y issue with focus on collapsed items was fixed. Thanks to @andoriyaprashant
- Make monaco-editor work again in an offline/air-gapped environment and fix localisation. This improves security and i18n functionality. Thanks to @DanielLeone
- Status Labels are wrapped incorrect (was "Pendin" on one line, "g" on the next)
- Fix for activity bar close button styling. Thanks to @Exar04
- Contrast fix for actions notifier (cancel button was not visible)
- Cookies are used for token rather than local storage improving security
- The plugin settings works again to allow disabling/enabling plugins
- Fix on the cluster context menu on the Home Overview page to not show multiple delete actions when a plugin defines a delete action
- Fix for the network icon in map
- A number of now unused dependencies were trimmed from the frontend and from headlamp-plugin
- Fixes for shell escaping in script used for signing some binaries. Thanks to @odaysec
- Fix display of accessModes on VolumeList detail view
- Fix fetchConfig to return a proper value removing error in web dev console. Thanks to @wingerx
- Fix for overflow on logs view Thanks to @greedy-wudpeckr
- A11y fix for Alert contrast in dark-mode
- Refactor CRs to use existing components. Thanks @farodin91
- Fix so plugins can be deleted again in Plugin settings
- Fix warnings, and bump node to 22 in Dockerfile. Thanks to @LinPr
💻 Development
- From 5x to 60x faster app load in development with
cd app && npm run star
- Fix for running app on Windows with cd app && npm start
- Improved "releaser check" tool to so we can see which external release artefacts released correctly
- Remove unnecessary loop assignments which is possible in newer versions of golang. Thanks to @LinPr
- Clean up some parse tests. Thanks to @andoriyaprashant
- Fix bug in app for running long running javascripts use by minikube plugin
- Plugin manager can now download non tar.gz extra files
- Add gitignore for mac .DS_Store files
- Update golang version to 1.24.6. Thanks to @mkm29
- Stories for the Overview component were added. Thanks to @1012Charan
- Some unused functionality for plugins was removed "loadDevPlugins"
- Update storybook to 9.1.2
- Add registerClusterStatus for adding cluster status to the Overview cluster list
- Extract some auth related methods to new auth package with tests
- Add projects plugin example, for extending new Namespace Projects feature on Home
Plugins gain the ability to customise the font-family from a AppTheme. Thanks to @kirederik
Theme registration:
import './index.css'; // where the @font-face is defined
registerAppTheme({
name: "My Custom Theme",
base: "light",
primary: "#ff0000",
secondary: "#333",
fontFamily: ["Asimovian"],
})

📖 Documentation
- Document some functions in lib/k8s
- Add note about hack to get around issue installing with brew on Mac whilst binaries are not signed. Thanks to @kierr
- Add GKE to user tested platform table. Thanks to @eranchetz
Container image: 🐳 ghcr.io/headlamp-k8s/headlamp:v0.35.0
Desktop Apps:
🐧 Flatpak / Linux (AMD64)
🐧 Linux AppImage AMD64, ARM64, ARMv7l
🐧 Linux Tarball AMD64, ARM64, ARMv7l
🐧 Debian / Linux AMD64
🍏 Mac (AMD64)
🍏 Mac (ARM/M1)
🟦 Windows (AMD64)