Helm 4 Full Changelog
Scope: 443 PRs from (v4.2.0) compared to v3.19.0
v4-only: 407 PRs (36 backported to v3 excluded)
See the Overview for an actionable summary of these changes.
New Features
New features in Helm 4 that were not backported to v3
| PR | Date | Author | Title |
|---|---|---|---|
| #31709 | 2026-02-13 | banjoh | feat(release): add internal/release/v2 package for chart v3 support |
| #31592 | 2026-02-06 | banjoh | feat(create): add --chart-api-version flag (when HELM_EXPERIMENTAL_CHART_V3 env var is set) |
| #31726 | 2026-01-14 | banjoh | chore: clarify --wait flag help text |
| #31706 | 2026-01-12 | matheuscscp | pkg/kube: introduce support for custom kstatus readers |
| #31296 | 2025-12-23 | gjenkins8 | build: set kube version via debug.BuildInfo |
| #31448 | 2025-12-17 | laervn | feat(repo): add --no-headers option to 'helm repo list' |
| #31491 | 2025-11-25 | benoittgt | feat: improve plugin name validation error messages and field name detection (v1) |
| #31530 | 2025-11-20 | shuv0id | feat: add missing context to debug logs |
| #31421 | 2025-11-15 | benoittgt | Unify --wait strategy inputs, clarify defaults and docs; avoid SDK timeout footgun |
| #30984 | 2025-11-13 | fm1ck3y | feat(concurrency): allow concurrent dependency build with atomic file write |
| #31435 | 2025-11-03 | matheuscscp | Introduce a context for canceling wait operations |
| #31389 | 2025-10-30 | TerryHowe | chore: fix pkg/registry warnings to reduce noise |
| #31338 | 2025-10-21 | yzewei | Add loongarch64 support |
| #31351 | 2025-10-21 | gjenkins8 | feat: helm version print Kubernetes (client-go) version |
| #31376 | 2025-10-21 | benoittgt | Do not ignore *.yml file on linting while accepting *.yaml |
| #31362 | 2025-10-21 | fabiocarneiro | Clarify the intent of the resource instructions |
| #31392 | 2025-10-16 | TerryHowe | feature: create copilot structured context |
| #31295 | 2025-10-13 | TerryHowe | Fix make helm list show all by default |
| #31372 | 2025-10-10 | mattfarina | Enable Releases To Have Multiple Versions |
| #31254 | 2025-09-23 | benoittgt | Warn when we fallback to a different version on helm pull |
| #31275 | 2025-09-10 | benoittgt | Extend --skip-schema-validation for lint command |
| #31116 | 2025-09-02 | banjoh | chore: check if go modules are tidy before build |
| #31217 | 2025-09-01 | scottrigby | BREAKING CHANGE: [HIP-0026] Move Postrenderer to a plugin type |
| #31196 | 2025-08-31 | scottrigby | BREAKING CHANGE: [HIP-0026] Remove unnecessary file i/o operations from signing and verifying |
| #31176 | 2025-08-30 | scottrigby | BREAKING CHANGE: [HIP-0026] Plugin packaging, signing, and verification |
| #31194 | 2025-08-28 | gjenkins8 | BREAKING CHANGE: [HIP-0026] Plugin extism/v1 runtime |
| #30812 | 2025-08-27 | gjenkins8 | BREAKING CHANGE: HIP-0023: Helm support server-side apply |
| #31174 | 2025-08-26 | scottrigby | BREAKING CHANGE: [HIP-0026] Plugin tarball support for HTTP and local installers |
| #31172 | 2025-08-26 | scottrigby | BREAKING CHANGE: [HIP-0026] Plugin OCI installer |
| #31146 | 2025-08-23 | scottrigby | BREAKING CHANGE: [HIP-0026] Plugin types and plugin apiVersion v1 |
| #31145 | 2025-08-22 | scottrigby | BREAKING CHANGE: [HIP-0026] Plugin runtime interface |
| #31142 | 2025-08-21 | gjenkins8 | BREAKING CHANGE: [HIP-0026] Move pkg/plugin -> internal/plugin |
| #31030 | 2025-08-14 | gjenkins8 | BREAKING CHANGE: HIP-0023: Kube client support server-side apply |
| #12624 | 2025-08-13 | papdaniel | show crds command output separated by document separator |
| #13111 | 2025-08-13 | rawtaz | style(pkg/chartutil): add missing dots and indentation to defaultValues |
| #31076 | 2025-08-11 | matheuscscp | pkg/registry: Login option for passing TLS config in memory |
| #31034 | 2025-08-05 | Mazafard | Feat: Add color output functionality and tests for release statuses |
| #31057 | 2025-07-18 | danilobuerger | Pass credentials when either chart repo or repo dont specify a port but it matches the default port of that scheme |
| #31019 | 2025-07-17 | zachburg | Return early when linting if the templates/ directory does not exist |
| #31011 | 2025-07-17 | yalosev | feature: add labels to metadata |
| #31015 | 2025-07-17 | zachburg | Add linter support for the crds/ directory |
| #13154 | 2025-07-10 | carloslima | Allow post-renderer to process hooks |
| #13586 | 2025-06-04 | jessesimpson36 | feat: add formatting for errors to make multiline stacktraces in helm templates |
| #30553 | 2025-05-07 | Zhanweelee | feat: Add mustToYaml and mustToJson template functions |
| #30734 | 2025-04-21 | ipaqsa | feat(pkg/engine): add support for custom template funcs |
| #13283 | 2025-04-14 | win-t | adding support for JSON Schema 2020 |
| #30751 | 2025-04-13 | benoittgt | Add detailed debug logging for resource readiness states |
| #30708 | 2025-04-11 | benoittgt | Migrate pkg to slog |
| #13604 | 2025-04-05 | AustinAbro321 | Introduce kstatus watcher |
| #13617 | 2025-02-27 | AustinAbro321 | BREAKING CHANGE: Refactor cmd/helm to allow library usage |
| #30571 | 2025-02-24 | yardenshoham | feat: error out when post-renderer produces no output |
| #13655 | 2025-02-20 | LuBingtan | feat: support multi-document values files |
| #13471 | 2025-02-19 | wangjingcun | Use a more direct and less error-prone return value |
| #30294 | 2025-02-19 | Zhanweelee | Supports json arguments |
| #13538 | 2025-01-17 | godhanipayal | Add Contextual Error Messages to RunWithContext |
| #12588 | 2024-11-22 | rynowak | Make the authorizer and registry authorizer configurable |
Bug Fixes
Fixes in Helm 4 that were not backported to v3
| PR | Date | Author | Title |
|---|---|---|---|
| #31755 | 2026-04-26 | scottrigby | fix(template): deprecate unused --hide-notes and --render-subchart-notes flags |
| #31868 | 2026-03-09 | matheuscscp | fix: insert newline after doc separators glued to content by template trimming |
| #31897 | 2026-03-09 | TerryHowe | fix: bump fluxcd/cli-utils to v0.37.2-flux.1 |
| #31901 | 2026-03-04 | tleed5 | fix: restore (deprecated) --atomic flag on install command for backwards compatibility |
| #31852 | 2026-02-25 | rohansood10 | fix(sdk): correct import comment in statuswait.go from v3 to v4 |
| #31563 | 2026-02-24 | Mujib-Ahasan | fix: --dry-run=server now respect generateName |
| #31601 | 2026-02-20 | banjoh | fix: handle OCI digest algorithm prefix in chart downloader |
| #31566 | 2026-02-19 | TerryHowe | fix: test concurrency download index |
| #31578 | 2026-02-11 | manute | fix(action): crd resources can be empty |
| #31128 | 2026-02-11 | orgads | fix(downloader): prevent concurrent file access errors on Windows |
| #31772 | 2026-01-29 | matheuscscp | Revert "Consider GroupVersionKind when matching resources" |
| #31751 | 2026-01-28 | tamcore | fix(copystructure): handle nil elements in slice copying |
| #31717 | 2026-01-23 | AustinAbro321 | fix: use kube logger with status waiter |
| #31735 | 2026-01-21 | matheuscscp | fix(kstatus): fine-grained context options for waiting |
| #31730 | 2026-01-19 | matheuscscp | bugfix(kstatus): do not wait forever on failed resources |
| #31732 | 2026-01-17 | matheuscscp | fix(defaults): server-side apply SDK defaults should always match the CLI defaults |
| #31412 | 2026-01-13 | fmuyassarov | Fix rollback for missing resources |
| #31710 | 2026-01-09 | banjoh | fix(release): fix test compilation error |
| #31427 | 2026-01-09 | tisonkun | Check plugin name is not used |
| #31579 | 2026-01-09 | benoittgt | fix: Delay test hook deletion until after logs are retrieved with helm test release --logs |
| #31613 | 2026-01-07 | aslafy-z | fix(getter): pass settings environment variables |
| #31104 | 2025-12-25 | LinPr | fix: assign KUBECONFIG environment variable value to env.Kubeconfig |
| #31610 | 2025-12-22 | mohsenmottaghi | fix: use namespace-scoped watching to avoid cluster-wide LIST permiss… |
| #31635 | 2025-12-14 | banjoh | fix(upgrade): pass --server-side flag to install when using upgrade --install |
| #12564 | 2025-12-13 | hiddeco | fix(uninstall): supersede deployed releases |
| #31586 | 2025-12-13 | calvinbui | fix: use length check for MetaDependencies instead of nil comparison |
| #31636 | 2025-12-11 | mattfarina | Use latest patch release of Go in releases |
| #31560 | 2025-11-23 | mattfarina | Fix kube client logging |
| #31518 | 2025-11-21 | gjenkins8 | fix: Use server-side apply for object create during update |
| #31515 | 2025-11-21 | gjenkins8 | fix: Copy adopted resource info |
| #31514 | 2025-11-19 | yxxhero | Refactor environment variable expansion in PrepareCommands and update tests |
| #31512 | 2025-11-15 | benoittgt | fix: correct LDFLAGS path for default Kubernetes version |
| #11739 | 2025-11-14 | Fish-pro | docs: fix syntax errors in the document |
| #31418 | 2025-11-10 | tisonkun | chore: fix typo of public field |
| #31323 | 2025-10-29 | mattfarina | Reproducible chart archive builds |
| #31411 | 2025-10-29 | banjoh | fix: reinstate logger parameter to actions package |
| #31204 | 2025-10-22 | benoittgt | Avoid panic in helm.sh/helm/v3/pkg/chartutil.ValidateAgainstSchema |
| #31337 | 2025-10-22 | rachelvweber | Fixing rollback and uninstall client WaitStrategy |
| #31393 | 2025-10-21 | benoittgt | Return errors during upgrade when the deletion of resources fails |
| #31406 | 2025-10-21 | jessesimpson36 | fix: kube client should return empty results objects instead of nil |
| #31375 | 2025-10-13 | TerryHowe | fix: release info time parsing |
| #31349 | 2025-10-07 | TerryHowe | fix: flakey lint test on shuffle |
| #31327 | 2025-10-07 | TerryHowe | fix: broken --html flag to coverage script |
| #31354 | 2025-10-07 | TerryHowe | fix: flake upgrade test |
| #31227 | 2025-10-03 | evankanderson | Use filepath.Path when handling directory names |
| #31307 | 2025-10-02 | TerryHowe | fix: Ignore absolute path when RepoUrl is provided |
| #31334 | 2025-09-30 | fleaz | Fix typo in bug-report issue template |
| #31330 | 2025-09-25 | mattfarina | Restore lint rule for excluding meaningless name |
| #31320 | 2025-09-25 | kosiew | provenance: allow RSA signing when ed25519 keys are present (switch to ProtonMail/go-crypto) |
| #31285 | 2025-09-12 | bennsimon | fix: remove leftover debugging line that outputs invalid YAML for helm template command |
| #31277 | 2025-09-11 | benoittgt | Fix deprecation warning for spf13/pflag from 1.0.7 to 1.0.10 |
| #31272 | 2025-09-09 | TerryHowe | fix: idea gitignore entry |
| #31252 | 2025-09-05 | kamilswiec | fix:chartfile tests - semver2 error message |
| #31199 | 2025-09-05 | TerryHowe | fix: flaky registry data race on mockdns close |
| #31200 | 2025-09-05 | TerryHowe | fix: installer action goroutine count |
| #31222 | 2025-09-03 | benoittgt | Prevent failing helm push on ghcr.io using standard GET auth token flow |
| #31191 | 2025-08-26 | TerryHowe | fix: send logging to stderr |
| #31138 | 2025-08-19 | islewis | fix(helm-lint): Add HTTP/HTTPS URL support for json schema references |
| #31152 | 2025-08-18 | TerryHowe | fix: enable shuffle in Makefile for unit tests |
| #12968 | 2025-08-13 | sjeandeaux | helm uninstall dry run support --ignore-not-found |
| #31126 | 2025-08-12 | paologallinaharbur | fix(transport): leverage same tls config |
| #31109 | 2025-08-06 | carlossg | fix: prevent panic when ChartDownloader.getOciURI |
| #31074 | 2025-07-18 | joejulian | add missing template directory to badcrdfile testdata |
| #31042 | 2025-07-10 | TerryHowe | fix: test teardown dns data race |
| #30898 | 2025-07-06 | AshmitBhardwaj | Fix issue 13198 |
| #31021 | 2025-07-05 | zachburg | Update tests in create_test.go and package_test.go to work in a temp directory |
| #31024 | 2025-07-03 | gjenkins8 | fix: 'TestRunLinterRule' stateful test |
| #30900 | 2025-06-23 | unguiculus | Add timeout flag to repo add and update commands |
| #30981 | 2025-06-15 | TerryHowe | fix: lint test SetEnv errors |
| #30973 | 2025-06-12 | manslaughter03 | fix: wrap run release test error in case GetPodLogs failed. |
| #30972 | 2025-06-10 | TerryHowe | fix: kube client create mutex |
| #30958 | 2025-06-06 | TerryHowe | fix: repo update cmd mutex |
| #30955 | 2025-06-04 | carloslima | Fix tests deleting XDG_DATA_HOME |
| #30939 | 2025-06-03 | TerryHowe | fix: action hooks delete policy mutex |
| #12581 | 2025-06-03 | MichaelMorrisEst | Consider full GroupVersionKind when matching resources |
| #30930 | 2025-05-28 | benoittgt | Fix flaky TestFindChartURL due to non-deterministic map iteration |
| #30884 | 2025-05-21 | mattfarina | Reverting fix "renders int as float" |
| #30862 | 2025-05-20 | OmriSteiner | fix: correctly concat absolute URIs in repo cache |
| #30864 | 2025-05-16 | jessesimpson36 | fix: remove duplicate error message |
| #30842 | 2025-05-15 | ayushontop | Fix : No repository is not an error,use the helm repo list command ,if there is no repository,it should not be an error #30606 |
| #30800 | 2025-04-25 | mmorel-35 | fix: dep fs errors |
| #30803 | 2025-04-25 | mattfarina | Fixing windows build |
| #30783 | 2025-04-23 | rpolishchuk | fix: chart icon presence test |
| #30777 | 2025-04-23 | ryanhockstad | fix: null merge |
| #9175 | 2025-04-23 | dastrobu | fix: copy dependencies on aliasing to avoid sharing chart references on multiply aliased dependencies |
| #12382 | 2025-04-20 | edbmiller | fix(pkg/lint): unmarshals Chart.yaml strictly |
| #30766 | 2025-04-17 | benoittgt | Fix main branch by defining wait strategy parameter on hooks |
| #30718 | 2025-04-16 | klihub | Allow signing multiple charts with a single passphrase from stdin. |
| #30752 | 2025-04-16 | benoittgt | Bump golangci lint to last major version and fix static-check errors |
| #30737 | 2025-04-11 | rpolishchuk | fix: order dependent test |
| #9318 | 2025-04-07 | wahabmk | Fix issue with helm pull failing if pulling from a repository that redirects to another domain |
| #13119 | 2025-04-05 | idsulik | fix(concurrency): Use channel for repoFailList errors in updateCharts |
| #30618 | 2025-03-04 | AustinAbro321 | Fix namespace flag not registering |
| #30590 | 2025-03-01 | SantalScript | fix:add proxy support when mTLS configured |
| #30572 | 2025-02-25 | yardenshoham | fix: error when more than one post-renderer is specified |
| #30576 | 2025-02-23 | felipecrs | Fix flaky TestDedupeRepos |
| #30562 | 2025-02-20 | robertsirc | fixing error handling from a previous PR |
| #13656 | 2025-02-03 | gjenkins8 | fix: Bind repotest server to localhost |
| #13633 | 2025-01-17 | mattfarina | Ensuring the file paths are clean prior to passing to securejoin |
| #13425 | 2024-11-15 | MathieuCesbron | Fix typo "re-use" to "reuse" |
Refactor/Cleanup
Code quality improvements and modernization
| PR | Date | Author | Title |
|---|---|---|---|
| #31878 | 2026-03-02 | mmorel-35 | chore(pkg): fix perfsprint linter issues part 3 |
| #31875 | 2026-03-02 | mmorel-35 | chore(pkg): fix perfsprint linter issues part 2 |
| #31853 | 2026-03-02 | atombrella | refactor: Replace non-format use of t.Fatalf with t.Fatal |
| #31879 | 2026-02-28 | mmorel-35 | chore(pkg): fix perfsprint linter issues part 7 |
| #31877 | 2026-02-28 | mmorel-35 | chore(internal): fix perfsprint linter issues part 3 |
| #31876 | 2026-02-28 | mmorel-35 | chore(pkg): fix perfsprint linter issues part 1 |
| #31871 | 2026-02-27 | mmorel-35 | chore(internal): fix perfsprint linter issues part 1 |
| #31870 | 2026-02-26 | mmorel-35 | chore(internal): fix perfsprint linter issues part 2 |
| #31807 | 2026-02-25 | mmorel-35 | refactor(internal): errorlint linter |
| #31806 | 2026-02-25 | mmorel-35 | refactor(pkg): errorlint linter |
| #31796 | 2026-02-24 | mmorel-35 | chore(pkg): fix modernize linter |
| #31858 | 2026-02-24 | gjenkins8 | chore: go fix fixes |
| #31816 | 2026-02-18 | mmorel-35 | refactor(pkg): errorlint linter |
| #31801 | 2026-02-11 | mmorel-35 | chore(pkg): fix modernize linter |
| #31802 | 2026-02-11 | mmorel-35 | chore(pkg): fix modernize linter |
| #31808 | 2026-02-10 | mmorel-35 | refactor(internal): errorlint linter |
| #31810 | 2026-02-10 | mmorel-35 | refactor(pkg): errorlint linter |
| #31811 | 2026-02-10 | mmorel-35 | refactor(pkg): errorlint linter |
| #31805 | 2026-02-10 | mmorel-35 | refactor(cmd): errorlint linter |
| #31809 | 2026-02-10 | mmorel-35 | refactor(pkg): errorlint linter |
| #31698 | 2026-01-08 | sarfraj89 | Lint sync-repo.sh with ShellCheck |
| #31239 | 2026-01-03 | StephanieHhnbrg | Add tests to action package to improve coverage |
| #31684 | 2026-01-01 | Skarlso | fix: typo in the function names |
| #31677 | 2025-12-27 | gjenkins8 | chore: Replace deprecated NewSimpleClientset |
| #31669 | 2025-12-22 | brendenehlers | fix: #31665 add default cases to switch statements |
| #31415 | 2025-12-17 | banjoh | chore: increase logging test coverage |
| #31650 | 2025-12-15 | gjenkins8 | Fix TestConcurrencyDownloadIndex typo |
| #31649 | 2025-12-15 | atombrella | Use errors.Is to check for io.EOF and gzip.ErrHeader |
| #31207 | 2025-12-13 | zyfy29 | chore: delete unused var in installer.go |
| #31624 | 2025-12-12 | atombrella | Enable the sloglint linter |
| #11991 | 2025-12-12 | twz123 | Make test scripts run without /bin/bash |
| #31342 | 2025-11-14 | TerryHowe | chore: replace github.com/mitchellh/copystructure |
| #31469 | 2025-11-13 | saimanojk1 | Convert pkg/cmd/load_plugins.go to slog |
| #31440 | 2025-10-29 | mattfarina | Updating Go and golangci-lint versions |
| #31408 | 2025-10-21 | AndiDog | Improve error message when plugin source cannot be determined or a non-directory is passed |
| #31390 | 2025-10-21 | TerryHowe | fix: improve pkg/cmd/list test coverage |
| #31365 | 2025-10-21 | reddaisyy | refactor: use reflect.TypeFor |
| #31395 | 2025-10-21 | wyrapeseed | chore: fix some comment format |
| #31401 | 2025-10-17 | TerryHowe | refactor: remove unused err from pkg/registry/client.go |
| #31391 | 2025-10-15 | TerryHowe | chore: rename test registry |
| #31302 | 2025-10-13 | TerryHowe | fix: helm verify Run signature |
| #31270 | 2025-10-13 | TerryHowe | chore: registry utils clean up |
| #31383 | 2025-10-13 | dirkmueller | Avoid accessing .Items on nil object |
| #31379 | 2025-10-13 | TerryHowe | fix: clean up coverage script temp file |
| #30980 | 2025-10-10 | gjenkins8 | cleanup: Remove/consolidate redundant kube client Interfaces |
| #30712 | 2025-10-10 | gjenkins8 | cleanup: Remove extra lint/rules.Template functions |
| #30833 | 2025-10-09 | gjenkins8 | refactor/cleanup: Replace action 'DryRun' string with DryRunStrategy type + deprecations |
| #31326 | 2025-10-07 | TerryHowe | Update sign tests to use testify |
| #31312 | 2025-10-01 | gjenkins8 | Remove unused 'Settings' from plugin schema |
| #31143 | 2025-09-25 | TerryHowe | fix: remove redundant error check |
| #31249 | 2025-09-25 | banjoh | chore: add additional logging to plugin installer |
| #31321 | 2025-09-24 | juejinyuxitu | chore: fix some typos in comment |
| #31297 | 2025-09-22 | TerryHowe | fix: hide notes in helm test command |
| #31315 | 2025-09-22 | benoittgt | Remove unused golangci-lint rules that produce warning |
| #31294 | 2025-09-19 | TerryHowe | Remove implicit support for helm lint current directory |
| #31301 | 2025-09-19 | TerryHowe | chore: remove helm version --client option |
| #31303 | 2025-09-18 | mattfarina | Update the action interfaces for chart apiversions |
| #31198 | 2025-09-16 | TerryHowe | refactor: replace pkg/engine regular expressions with parser |
| #31293 | 2025-09-16 | TerryHowe | chore: remove pkg/time which is no longer needed |
| #31287 | 2025-09-16 | miledxz | improve fileutil test coverage |
| #31292 | 2025-09-16 | reddaisyy | refactor: use strings.builder |
| #31286 | 2025-09-12 | yajianggroup | refactor: use strings.CutPrefix |
| #31258 | 2025-09-08 | StephanieHhnbrg | Refactor unreachableKubeClient for testing into failingKubeClient |
| #31259 | 2025-09-07 | StephanieHhnbrg | Adapt test-coverage command to be able to run for a certain package |
| #31225 | 2025-09-02 | mattfarina | BREAKING CHANGE: Move lint pkg to be part of each chart version |
| #31220 | 2025-09-02 | gjenkins8 | BREAKING CHANGE: refactor: utilize pluginTypesIndex for config unmarshalling |
| #31219 | 2025-09-02 | gjenkins8 | BREAKING CHANGE: Remove 'SetupPluginEnv' |
| #31216 | 2025-09-02 | mattfarina | BREAKING CHANGE: Move to versioned packages |
| #31224 | 2025-09-01 | gjenkins8 | fix: Adjust PostRenderer plugin output to value |
| #31218 | 2025-09-01 | gjenkins8 | BREAKING CHANGE: Remove legacy Command/Hooks from v1 Subprocess (#23) |
| #31151 | 2025-08-30 | TerryHowe | fix: make file whitespace |
| #31178 | 2025-08-28 | mattfarina | Add content cache to helm env |
| #31165 | 2025-08-22 | mattfarina | BREAKING CHANGE: Initial addition of content based cache |
| #13629 | 2025-08-22 | gjenkins8 | BREAKING CHANGE: Rename 'atomic' -> 'rollback-on-failure' |
| #31175 | 2025-08-21 | cuiweixie | pkg/register: refactor to use atomic.Uint64 |
| #31132 | 2025-08-19 | joemicky | refactor: replace []byte(fmt.Sprintf) with fmt.Appendf |
| #31133 | 2025-08-14 | joemicky | refactor: replace HasPrefix+TrimPrefix with CutPrefix |
| #31134 | 2025-08-14 | joemicky | refactor: omit unnecessary reassignment |
| #11700 | 2025-08-13 | suzaku | Refactor, use sort.Slice to reduce boilerplate code |
| #31058 | 2025-08-07 | farazkhawaja | Add test coverage for get_values/metadata.go |
| #31107 | 2025-08-06 | Pavanipogula | test(pkg/kube): Add unit tests to wait and roundtripper files. |
| #31106 | 2025-08-05 | irikeish | test(pkg/kube): add test for Client.isReachable |
| #30982 | 2025-08-05 | gjenkins8 | BREAKING CHANGE: Rename 'force' to 'force-replace' |
| #31094 | 2025-08-04 | mikelolasagasti | chore(deps): remove phayes/freeport module |
| #31101 | 2025-07-30 | banjoh | feat: switch yaml library to go.yaml.in/yaml/v3 |
| #31081 | 2025-07-25 | mattfarina | BREAKING CHANGE: Initial addition of v3 charts |
| #31079 | 2025-07-22 | gjenkins8 | cleanup: Remove plugin deprecated 'UseTunnelDeprecated' |
| #31060 | 2025-07-18 | yumeiyin | refactor: replace Split in loops with more efficient SplitSeq |
| #31065 | 2025-07-15 | TerryHowe | chore: improve OCI debug logging |
| #31033 | 2025-07-14 | navinag1989 | test: increase test coverage for pkg/cli/options.go file |
| #31029 | 2025-07-07 | gjenkins8 | chore(refactor): Privatize 'k8sYamlStruct' |
| #31023 | 2025-07-03 | gjenkins8 | BREAKING CHANGE: Remove deprecated '--create-pods' flag |
| #31009 | 2025-07-02 | tpresa | test: increase test coverage for pkg/pusher |
| #31018 | 2025-07-01 | mattfarina | Move logging setup to be configurable |
| #30909 | 2025-06-03 | jinjiadu | refactor: replace HasPrefix+TrimPrefix with CutPrefix |
| #30809 | 2025-06-03 | mmorel-35 | chore: enable usetesting linter |
| #30865 | 2025-05-22 | mmorel-35 | refactor: update json-patch import path and add gomodguard settings |
| #30871 | 2025-05-20 | gjenkins8 | Run test OCI registry localhost |
| #30866 | 2025-05-20 | mmorel-35 | chore: enable thelper linter |
| #30863 | 2025-05-16 | mattfarina | Adding test for list command |
| #30850 | 2025-05-12 | yetyear | refactor: use maps.Copy for cleaner map handling |
| #30829 | 2025-05-09 | TerryHowe | Increase pkg/time test coverage |
| #30810 | 2025-05-08 | mmorel-35 | chore: enable usestdlibvars linter |
| #30844 | 2025-05-08 | TerryHowe | fix: rename slave replica |
| #30827 | 2025-05-06 | findnature | refactor: use slices.Contains to simplify code |
| #13460 | 2025-04-23 | justenstall | fix: replace "github.com/pkg/errors" with stdlib "errors" package |
| #30788 | 2025-04-23 | stephenpmurray | ref(helm): Export Chart Not Found error |
| #30781 | 2025-04-22 | mmorel-35 | chore: remove github.com/hashicorp/go-multierror dependency |
| #13578 | 2025-04-18 | gjenkins8 | refactor: Remove ChartRepository []ChartPaths |
| #30760 | 2025-04-16 | robertsirc | adding slog debug to a few points |
| #30713 | 2025-04-11 | gjenkins8 | cleanup: Remove Helm v2 template lint rules |
| #30749 | 2025-04-11 | mattfarina | BREAKING CHANGE: Removing the alpine test chart |
| #30686 | 2025-04-11 | mattfarina | BREAKING CHANGE: Remove deprecated code |
| #30736 | 2025-04-09 | robertsirc | manually updating go.mod file |
| #13458 | 2025-04-05 | thudi | BREAKING CHANGE: #13449 Resolves: Replacing NewSimpleClientSet to NewClientSet due to deprecation |
| #30684 | 2025-03-21 | twz123 | Remove ClientOptResolver from OCI Client |
| #30603 | 2025-03-21 | robertsirc | converting inline log to slog |
| #30699 | 2025-03-21 | mattfarina | Error when failed repo update. |
| #30592 | 2025-02-28 | robertsirc | changing from log to slog |
| #30589 | 2025-02-26 | mattfarina | BREAKING CHANGE: Move pkg/release to pkg/release/v1 to support v3 charts |
| #30586 | 2025-02-25 | mattfarina | BREAKING CHANGE: Move pkg/chart to pkg/chart/v2 to prepare for v3 charts |
| #30585 | 2025-02-25 | robertsirc | removing old apis |
| #30580 | 2025-02-24 | mattfarina | BREAKING CHANGE: Move pkg/releaseutil to pkg/release/util |
| #11112 | 2025-02-22 | felipecrs | perf(dep-up): do not update the same repo multiple times |
| #30567 | 2025-02-21 | mattfarina | BREAKING CHANGE: Moving chartutil to chart/util |
| #30566 | 2025-02-21 | robertsirc | remove unused config.go |
| #30470 | 2025-02-19 | gjenkins8 | Cleanup repotest.Server constructors |
| #30550 | 2025-02-19 | mattfarina | Moving to SetOut and SetErr for Cobra |
| #30546 | 2025-02-19 | hugehope | refactor: using slices.Contains to simplify the code |
| #13535 | 2025-02-05 | gjenkins8 | refactor: tlsutil use options pattern |
| #13665 | 2025-02-05 | gjenkins8 | chore: Remove unused WaitAndGetCompletedPodPhase |
| #13579 | 2025-02-05 | gjenkins8 | refactor: Remove duplicate FindChartIn*RepoURL functions |
| #13516 | 2025-01-24 | TerryHowe | chore: fix problems with latest lint |
| #13494 | 2025-01-18 | gjenkins8 | BREAKING CHANGE: Remove deprecated repo add --no-update flag |
| #13602 | 2025-01-17 | crystalstall | refactor: using slices.Contains to simplify the code |
| #13600 | 2025-01-14 | gjenkins8 | cleanup: NewShowWithConfig -> NewShow |
| #13601 | 2025-01-09 | gjenkins8 | cleanup: Remove superseded 'lint/rules.Values' function |
| #13611 | 2025-01-07 | mattfarina | BREAKING CHANGE: Updating the internal version to v4 |
| #13576 | 2025-01-07 | gjenkins8 | refactor: Consolidate lint package Run() functions |
| #13577 | 2025-01-07 | gjenkins8 | refactor: Remove redundant NewPullWithOpts |
| #13599 | 2025-01-07 | gjenkins8 | cleanup: ProcessDependenciesWithMerge -> ProcessDependencies |
| #13573 | 2024-12-27 | mattfarina | BREAKING CHANGE: Updating to helm.sh/helm/v4 |
| #13444 | 2024-12-07 | justenstall | refactor(status): remove --show-desc and --show-resources flags |
Other
Infrastructure and project management improvements
| PR | Date | Author | Title |
|---|---|---|---|
| #32098 | 2026-05-04 | scottrigby | build: Clean up Goreleaser change |
| #31343 | 2026-05-03 | TerryHowe | chore: replace mitchellh/gox with goreleaser |
| #31970 | 2026-05-03 | isumitsolanki | refactor(cli): decouple EnvSettings from pkg/kube to avoid import cycles |
| #32090 | 2026-04-30 | matheuscscp | Upgrade kstatus to 1.2 and controller-runtime to 0.24 |
| #31923 | 2026-04-29 | gaganhr94 | fix: adds topLevel permissions to improve openSSF scores |
| #32034 | 2026-04-29 | cairon-ab | fix: add debug logging to HTTP getter for helm pull |
| #32078 | 2026-04-26 | matheuscscp | Upgrade Go to 1.26, Kubernetes to 1.36, kstatus to 1.1 |
| #30811 | 2026-04-25 | mmorel-35 | chore: fix bool-compare issues from testifylint |
| #32049 | 2026-04-21 | matheuscscp | fix(templating): hooks conflicting with templates in post-renderers |
| #31981 | 2026-04-20 | abhay1999 | fix(kube): clarify server-side apply patch errors |
| #32008 | 2026-04-20 | rhysmcneill | fix(action): return correct error variable in prepareUpgrade |
| #32057 | 2026-04-20 | MohitSalvi16 | docs: fix grammar and spacing in CONTRIBUTING.md |
| #12932 | 2026-04-16 | AndiDog | Make error message instructional for the case of lock file being out of date |
| #31952 | 2026-04-15 | matheuscscp | fix(templating): SplitManifests must preserve line endings for downstream YAML parsers |
| #31979 | 2026-04-14 | Y0-L0 | Jlohmer/coalesce nil |
| #32016 | 2026-04-11 | TerryHowe | test(kube): fix flaky WaitForDelete timing in status wait tests |
| #31941 | 2026-04-10 | matheuscscp | fix(templating): fix wrong YAML separator parsing for post-renderers |
| #32028 | 2026-04-09 | gjenkins8 | chore: Update release notes script for Helm v4 |
| #32025 | 2026-04-09 | gjenkins8 | fix: unnecessary-format lint issues from merge |
| #32014 | 2026-04-07 | AnmolVirdi | Minor fix (docs.go): fix import instructions to comply with canonical import paths |
| #31974 | 2026-04-01 | TerryHowe | fix: pin codeql-action/upload-sarif to commit SHA |
| #31973 | 2026-03-27 | Debasish-87 | docs(registry): fix incorrect and improve clarity of comments in client.go |
| #31957 | 2026-03-24 | Mentigen | feat(engine): add mustToToml template function |
| #31938 | 2026-03-23 | mmorel-35 | chore: enable perfsprint linter |
| #31953 | 2026-03-23 | mmorel-35 | chore: fix unnecessary-format issues from revive |
| #31872 | 2026-03-14 | mmorel-35 | chore(pkg): fix perfsprint linter issues part 6 |
| #31874 | 2026-03-14 | mmorel-35 | chore(pkg): fix perfsprint linter issues part 4 |
| #31873 | 2026-03-14 | mmorel-35 | chore(pkg): fix perfsprint linter issues part 5 |
| #31932 | 2026-03-12 | TerryHowe | pkg/kube: remove legacy import comments from test files |
| #31931 | 2026-03-12 | abhay1999 | pkg/kube: remove legacy import comments |
| #31921 | 2026-03-11 | tsinglua | chore: fix some minor issues in the comments |
| #31898 | 2026-03-09 | TerryHowe | fix: bump go.opentelemetry.io/otel/sdk to v1.40.0 for GO-2026-4394 |
| #31860 | 2026-03-06 | mmorel-35 | chore: update golangci-lint to v2.10.1 and enable modernize linter |
| #31857 | 2026-02-27 | gjenkins8 | chore: Improve AGENTS.md |
| #31861 | 2026-02-25 | mmorel-35 | chore: enable nolinlint linter |
| #31804 | 2026-02-09 | gjenkins8 | chore: new KEYS entry for George Jenkins |
| #31795 | 2026-02-07 | mmorel-35 | chore(internal): fix modernize linter |
| #31799 | 2026-02-07 | mmorel-35 | chore(internal): fix modernize linter |
| #31794 | 2026-02-07 | mmorel-35 | chore(pkg): fix modernize linter |
| #31743 | 2026-01-22 | banjoh | docs: document uninstall using cascade foreground flag |
| #31739 | 2026-01-21 | gjenkins8 | Modernize Helm v3 CONTRIBUTING.md |
| #31742 | 2026-01-21 | JeevanYewale | Remove legacy sync-repo.sh script |
| #31723 | 2026-01-17 | matheuscscp | bugfix(logging): fix storage not getting logger from driver |
| #31683 | 2026-01-04 | majiayu000 | fix: --api-versions is undocumented |
| #31673 | 2026-01-04 | jylenhof | docs(README): add mise alternate installation documentation |
| #31685 | 2026-01-02 | atombrella | Replace reflect.Ptr with reflect.Pointer |
| #31687 | 2026-01-02 | banjoh | chore: move Evans Mungai from triage to maintainers |
| #31680 | 2025-12-28 | mattfarina | Update cli tools and k8s 1.35 packages |
| #31654 | 2025-12-17 | deepakchethan | fix(doc): Update default wait strategy |
| #31565 | 2025-12-15 | gjenkins8 | Bump required go version (go.mod version) |
| #31587 | 2025-12-13 | benoittgt | Inform if make test-style uses a different golangci-lint version than CI |
| #31641 | 2025-12-12 | wangjingcun | chore: fix some comments to improve readability |
| #31638 | 2025-12-11 | TerryHowe | feat: move TerryHowe triage to maintainers |
| #31625 | 2025-12-09 | mattfarina | Fix govulncheck in CI |
| #31628 | 2025-12-09 | mattfarina | Update the govulncheck.yml to run on change |
| #31549 | 2025-12-08 | benoittgt | fix: prevent reporting fallback on version when none specified |
| #31528 | 2025-12-08 | benoittgt | fix: preserve vendor suffixes in KubeVersion.GitVersion |
| #31546 | 2025-12-01 | benoittgt | fix(lint): prevent segmentation violation on only comment yaml in multidoc |
| #31562 | 2025-11-30 | atombrella | Use modernize to use newer Golang features. |
| #31519 | 2025-11-30 | TerryHowe | chore: add warning for registry login with namespace |
| #31577 | 2025-11-26 | megha1906 | chore: fix typo in pkg/downloader/chart_downloader.go |
| #31561 | 2025-11-25 | atombrella | Remove two redundant if-checks. |
| #31462 | 2025-11-20 | mattfarina | Adding a LoadArchive to common loader |
| #31535 | 2025-11-20 | mattfarina | bump version to 4.1 |
| #31464 | 2025-11-19 | benoittgt | Properly test error messages on pull command's test |
| #31478 | 2025-11-16 | promalert | refactor: use strings.Builder to improve performance |
| #31473 | 2025-11-14 | TerryHowe | fix: do not run release workflow on forks |
| #31503 | 2025-11-14 | crenshaw-dev | docs: Fix LFX Health Score badge URL in README.md |
| #31488 | 2025-11-12 | gjenkins8 | Publish Helm v4 -> helm-latest-version |
| #31485 | 2025-11-12 | mattfarina | Adding script to download Helm v4 |
| #31318 | 2025-11-12 | gjenkins8 | fix: Helm v4 release distribution & get-helm-3 script |
| #31468 | 2025-11-09 | yardenshoham | Rename copilot-instructions.md to AGENTS.md |
| #31385 | 2025-11-05 | porridge | test: protect unknown hook delete policies |
| #31197 | 2025-09-03 | tzchenxixi | chore: fix function name |
| #31150 | 2025-08-18 | TerryHowe | Feature add stale pr workflow |
| #31149 | 2025-08-18 | TerryHowe | fix: stale issue workflow |
| #31077 | 2025-07-21 | gaspergrom | fix: LFX health score badge link |
| #31047 | 2025-07-10 | jingchanglu | chore: fix typo in pkg/repo/chartrepo.go |
| #31004 | 2025-06-26 | andreped | fix(docs): Typofix in README |
| #31002 | 2025-06-26 | curlwget | chore: fix function in comment |
| #30912 | 2025-06-17 | Bhargavkonidena | Fix #30893 - issue templates |
| #30957 | 2025-06-04 | acceptacross | chore: fix some function names in comment |
| #30914 | 2025-05-27 | benoittgt | Fix dependabot upgrade of jsonschema to v6.0.2 |
| #30904 | 2025-05-23 | benoittgt | [Doc] Help users avoid specifying URL scheme and path with helm registry |
| #30882 | 2025-05-20 | caniszczyk | Add new LFX Insights Health Score Badge |
| #30872 | 2025-05-20 | benoittgt | Bump golangci-lint version to match last golangci-lint-action |
| #30824 | 2025-05-05 | adharsh277 | Fix bug in .golangci.yml configuration |
| #30786 | 2025-04-25 | mmorel-35 | refactor: reorganize .golangci.yml for better clarity and structure |
| #30785 | 2025-04-23 | mmorel-35 | fix: govulncheck workflow |
| #30784 | 2025-04-22 | scottrigby | chore(OWNERS): Add TerryHowe as Triage Maintainer |
| #30773 | 2025-04-18 | wangcundashang | chore: fix function name in comment |
| #30754 | 2025-04-16 | mattfarina | Simplify the JSON Schema checking |
| #30693 | 2025-03-20 | linghuying | chore: make function comment match function name |
| #30665 | 2025-03-13 | mattfarina | Updating to 0.37.0 for x/net |
| #30611 | 2025-03-04 | gjenkins8 | chore: Remove 'coveralls' |
| #30612 | 2025-03-04 | gjenkins8 | fix: Fix go report card badge reference/link |
| #30508 | 2025-02-19 | eimhin-rover | Update version option description with more accurate info |
| #30497 | 2025-02-12 | robertsirc | adding-my-key |
| #30295 | 2025-02-07 | edithturn | Add Percona to the list of organizations using Helm |
| #13653 | 2025-01-23 | petercover | chore: fix some comments |
| #13625 | 2025-01-13 | shahbazaamir | ading info to install helm , referring the documentation |
| #13563 | 2024-12-21 | gjenkins8 | Run build-test action on dev-v3 branch |
| #13552 | 2024-12-20 | gjenkins8 | Fix dependabot.yml target-branch typo |
| #13529 | 2024-12-15 | godhanipayal | Adding Oracle to the adopters list |
| #13509 | 2024-12-06 | gjenkins8 | Dependabot update dev-v3 branch go modules |
| #13212 | 2024-12-01 | mbianchidev | Update ADOPTERS.md |
| #13465 | 2024-11-20 | banjoh | Add precommit config to .gitignore |
| #13443 | 2024-11-15 | mattfarina | Updating docs around v3 and v4 |
v4 Changes Also Backported to v3
These PRs were included in v4 but were also backported to v3 releases
New Features (Backported)
| PR | Date | Author | Title |
|---|---|---|---|
| #30696 | 2025-03-24 | benoittgt | Inform about time spent waiting resources to be ready in slog format |
| #12912 | 2025-03-11 | hegerdes | feat: add httproute from gateway-api to create chart template |
| #10309 | 2025-02-21 | Bez625 | Add hook annotation to output hook logs to client on error |
| #13481 | 2025-02-18 | banjoh | feat: Enable CPU and memory profiling |
| #12690 | 2025-01-01 | TerryHowe | feat: OCI install by digest |
| #13232 | 2024-12-20 | dnskr | ref(create): don't render empty resource fields |
| #12962 | 2024-12-04 | stevehipwell | feat: Added multi-platform plugin hook support |
| #13343 | 2024-11-19 | niladrih | Add annotations and dependencies to get metadata output |
Bug Fixes (Backported)
| PR | Date | Author | Title |
|---|---|---|---|
| #31776 | 2026-02-13 | t0rr3sp3dr0 | fix: regression when pulling charts from OCI indices |
| #31644 | 2026-01-31 | banjoh | fix(values): preserve nil values when chart default is empty map |
| #31240 | 2025-11-07 | benoittgt | jsonschema: warn and ignore unresolved URN $ref to match v3.18.4 |
| #31064 | 2025-09-05 | kamilswiec | lint: throw warning when chart version is not semverv2 |
| #31156 | 2025-08-22 | estroz | fix: set repo authorizer in registry.Client.Resolve() |
| #30992 | 2025-08-18 | TerryHowe | fix: force bearer oauth for if registry requests bearer auth |
| #31115 | 2025-08-18 | banjoh | fix: use username and password if provided |
| #30891 | 2025-08-13 | gjenkins8 | fix: Port pluginCommand & command warning |
| #31050 | 2025-08-08 | heyLu | Fix helm pull untar dir check with repo urls |
| #31078 | 2025-07-24 | 8tomat8 | fix: k8s version parsing to match original |
| #30979 | 2025-06-17 | TerryHowe | fix: OAuth username password login for v4 |
| #30917 | 2025-06-01 | TerryHowe | fix: add debug logging to oci transport |
| #30937 | 2025-05-30 | TerryHowe | fix: legacy docker support broken for login |
| #30928 | 2025-05-28 | TerryHowe | fix: plugin installer test with no Internet |
| #30905 | 2025-05-23 | robertsirc | forward porting 30902 |
| #30894 | 2025-05-23 | benoittgt | Prevent push cmd failure in 3.18 by handling version tag resolution in ORAS memory store |
| #30697 | 2025-04-17 | p-se | Fix --take-ownership for custom resources - closes #30622 |
| #30673 | 2025-04-16 | nvanthao | fix: Process all hook deletions on failure |
| #30701 | 2025-04-11 | zanuka | updates mutate and validate web hook configs |
| #13583 | 2025-01-15 | jiashengz | fix: check group for resource info match |
Refactor/Cleanup (Backported)
| PR | Date | Author | Title |
|---|---|---|---|
| #30677 | 2025-04-18 | dongjiang1989 | chore: Update Golang to v1.24 |
| #30741 | 2025-04-11 | benoittgt | Bumps github.com/distribution/distribution/v3 from 3.0.0-rc.3 to 3.0.0 |
| #13382 | 2025-02-03 | TerryHowe | chore(oci): migrate to ORAS Golang library v2 |
| #13546 | 2024-12-19 | mattfarina | Update to Go 1.23 |
| #13499 | 2024-12-06 | gjenkins8 | Shadow ORAS remote.Client interface |
Other (Backported)
| PR | Date | Author | Title |
|---|---|---|---|
| #30775 | 2025-04-19 | benoittgt | Bump toml |
| #13533 | 2025-01-24 | althmoha | fix: (toToml) renders int as float |
| #13581 | 2024-12-31 | ldlb9527 | Upgrade golang.org/x/net to v0.33.0 to address CVE-2024-45338 |